summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-10-14 10:41:27 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-10-14 10:46:04 -0400
commitb8fec3d9f617ec9a764bb56804c526ff7449631f (patch)
tree2e84d0bf6107a15ebcb94a23c3158e2bc6382f6f
parent9fe74ac590f75a0571de8ebcd499fdf892419328 (diff)
parent8efae5c807bf6b27f5c90bfb0c5887dbde24f10d (diff)
Merge branch 'master' into trade
-rw-r--r--.gitignore1
-rw-r--r--Makefile1
-rw-r--r--asm/battle_2.s42
-rw-r--r--asm/battle_anim.s106
-rw-r--r--asm/battle_anim_effects_1.s322
-rw-r--r--asm/battle_anim_effects_2.s232
-rw-r--r--asm/battle_anim_effects_3.s298
-rw-r--r--asm/battle_anim_mons.s6343
-rw-r--r--asm/battle_anim_sound_tasks.s927
-rw-r--r--asm/battle_anim_special.s44
-rw-r--r--asm/battle_anim_utility_funcs.s5133
-rw-r--r--asm/berry_crush_2.s4
-rw-r--r--asm/bug.s829
-rw-r--r--asm/cable_club.s8
-rw-r--r--asm/dark.s2323
-rw-r--r--asm/dodrio_berry_picking.s4
-rw-r--r--asm/dragon.s835
-rw-r--r--asm/electric.s60
-rw-r--r--asm/field_effect.s10
-rw-r--r--asm/field_message_box.s2
-rw-r--r--asm/field_weather.s6
-rw-r--r--asm/fighting.s76
-rw-r--r--asm/fire.s52
-rw-r--r--asm/flying.s2945
-rw-r--r--asm/ghost.s4054
-rw-r--r--asm/ground.s1787
-rw-r--r--asm/hall_of_fame.s4
-rw-r--r--asm/ice.s102
-rw-r--r--asm/item_menu.s10
-rw-r--r--asm/link_rfu_3.s14
-rw-r--r--asm/mail.s4
-rw-r--r--asm/naming_screen.s24
-rw-r--r--asm/normal.s1978
-rw-r--r--asm/option_menu.s10
-rw-r--r--asm/overworld.s10
-rw-r--r--asm/party_menu.s30
-rw-r--r--asm/player_pc.s1919
-rw-r--r--asm/poison.s58
-rw-r--r--asm/pokeball.s16
-rw-r--r--asm/pokedex_screen.s10
-rw-r--r--asm/pokemon_jump_2.s4
-rw-r--r--asm/pokemon_storage_system.s4
-rw-r--r--asm/pokemon_summary_screen.s2
-rw-r--r--asm/psychic.s2180
-rw-r--r--asm/rock.s1558
-rw-r--r--asm/save_failed_screen.s8
-rw-r--r--asm/save_menu_util.s6
-rw-r--r--asm/script_menu.s2
-rw-r--r--asm/shop.s2
-rw-r--r--asm/start_menu.s2219
-rw-r--r--asm/trade.s20
-rw-r--r--asm/trainer_card.s20
-rw-r--r--asm/water.s64
-rw-r--r--baserom.ipsbin1991829 -> 1702809 bytes
-rw-r--r--common_syms/help_system_812B1E0.txt2
-rw-r--r--common_syms/save.txt2
-rw-r--r--data/battle_anim.s18
-rw-r--r--data/data.s4
-rw-r--r--data/data_835B488.s63
-rw-r--r--data/data_83FECCC.s31
-rw-r--r--data/graphics.s30
-rw-r--r--data/map_event_scripts.inc34
-rw-r--r--data/maps/PalletTown_PlayersHouse_2F/scripts.inc4
-rw-r--r--data/specials.inc8
-rw-r--r--data/start_menu.s28
-rw-r--r--data/strings.s1111
-rw-r--r--data/tileset_anims.s3
-rw-r--r--graphics/battle_anims/sprites/unk_83E6C18.pal19
-rw-r--r--include/battle.h5
-rw-r--r--include/battle_anim.h306
-rw-r--r--include/battle_main.h4
-rw-r--r--include/bg.h14
-rw-r--r--include/data.h2
-rw-r--r--include/event_scripts.h10
-rw-r--r--include/field_fadetransition.h1
-rw-r--r--include/field_weather.h2
-rw-r--r--include/fieldmap.h2
-rw-r--r--include/gba/defines.h2
-rw-r--r--include/gba/io_reg.h36
-rw-r--r--include/gba/macro.h31
-rw-r--r--include/global.h24
-rw-r--r--include/graphics.h32
-rw-r--r--include/help_system.h4
-rw-r--r--include/item.h1
-rw-r--r--include/item_menu.h3
-rw-r--r--include/link_rfu.h1
-rw-r--r--include/load_save.h2
-rw-r--r--include/mailbox_pc.h6
-rw-r--r--include/menu.h2
-rw-r--r--include/new_game.h2
-rw-r--r--include/new_menu_helpers.h8
-rw-r--r--include/option_menu.h6
-rw-r--r--include/overworld.h9
-rw-r--r--include/party_menu.h2
-rw-r--r--include/player_pc.h12
-rw-r--r--include/pokedex_screen.h6
-rw-r--r--include/pokemon_icon.h1
-rw-r--r--include/quest_log.h10
-rw-r--r--include/rom6.h17
-rw-r--r--include/save.h2
-rw-r--r--include/save_menu_util.h15
-rw-r--r--include/sprite.h2
-rw-r--r--include/start_menu.h7
-rw-r--r--include/strings.h52
-rw-r--r--include/trainer_card.h3
-rw-r--r--ld_script.txt45
-rw-r--r--src/battle_anim_mon_movement.c28
-rw-r--r--src/battle_anim_mons.c2254
-rw-r--r--src/battle_anim_sound_tasks.c313
-rw-r--r--src/battle_anim_utility_funcs.c946
-rw-r--r--src/battle_controller_player.c4
-rw-r--r--src/battle_intro.c495
-rw-r--r--src/battle_transition.c82
-rw-r--r--src/bg.c116
-rw-r--r--src/bug.c462
-rw-r--r--src/dark.c921
-rw-r--r--src/daycare.c4
-rw-r--r--src/dragon.c431
-rw-r--r--src/fame_checker.c4
-rw-r--r--src/field_fadetransition.c14
-rw-r--r--src/flying.c1289
-rw-r--r--src/ghost.c1484
-rw-r--r--src/ground.c724
-rw-r--r--src/help_system_812B1E0.c62
-rw-r--r--src/item_use.c16
-rw-r--r--src/mailbox_pc.c10
-rw-r--r--src/map_preview_screen.c2
-rw-r--r--src/menu2.c2
-rw-r--r--src/mystery_event_script.c2
-rw-r--r--src/new_menu_helpers.c18
-rw-r--r--src/normal.c916
-rw-r--r--src/player_pc.c741
-rw-r--r--src/pokemon.c1
-rw-r--r--src/psychic.c1083
-rw-r--r--src/quest_log.c743
-rw-r--r--src/rock.c830
-rw-r--r--src/save.c6
-rw-r--r--src/scrcmd.c6
-rw-r--r--src/start_menu.c1008
-rw-r--r--src/teachy_tv.c4
-rw-r--r--src/trade.c917
-rw-r--r--src/trainer_tower.c2
-rw-r--r--sym_bss.txt18
-rw-r--r--sym_ewram.txt76
-rw-r--r--tools/br_ips/br_ips.c2
145 files changed, 17678 insertions, 37126 deletions
diff --git a/.gitignore b/.gitignore
index a4182afc1..c060f2415 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,6 +39,7 @@ cmake-build-*
ld_script_ruby.txt
ld_script_sapphire.txt
sound/**/*.bin
+sound/songs/midi/*.s
src/*.s
src/data/items.h
tags
diff --git a/Makefile b/Makefile
index 759ab3769..b0f5659f2 100644
--- a/Makefile
+++ b/Makefile
@@ -197,6 +197,7 @@ $(C_BUILDDIR)/isagbprn.o: CC1 := tools/agbcc/bin/old_agbcc
$(C_BUILDDIR)/isagbprn.o: CFLAGS := -mthumb-interwork
#$(C_BUILDDIR)/trainer_tower.o: CFLAGS += -ffreestanding
+$(C_BUILDDIR)/flying.o: CFLAGS += -ffreestanding
ifeq ($(NODEP),1)
$(C_BUILDDIR)/%.o: c_dep :=
diff --git a/asm/battle_2.s b/asm/battle_2.s
index 90c429e19..bb696b4ab 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -99,10 +99,10 @@ sub_800FE24: @ 800FE24
movs r0, 0x4A
movs r1, 0
bl SetGpuReg
- ldr r1, _0800FF30 @ =gUnknown_2022984
+ ldr r1, _0800FF30 @ =gBattle_WIN0H
movs r0, 0xF0
strh r0, [r1]
- ldr r0, _0800FF34 @ =gUnknown_2022986
+ ldr r0, _0800FF34 @ =gBattle_WIN0V
strh r4, [r0]
bl ScanlineEffect_Clear
ldr r0, _0800FF38 @ =gScanlineEffectRegBuffers
@@ -184,8 +184,8 @@ _0800FEA6:
.align 2, 0
_0800FF28: .4byte 0x05006000
_0800FF2C: .4byte 0x00005051
-_0800FF30: .4byte gUnknown_2022984
-_0800FF34: .4byte gUnknown_2022986
+_0800FF30: .4byte gBattle_WIN0H
+_0800FF34: .4byte gBattle_WIN0V
_0800FF38: .4byte gScanlineEffectRegBuffers
_0800FF3C: .4byte gUnknown_824EFE4
_0800FF40: .4byte 0x0000ff10
@@ -3157,11 +3157,11 @@ VBlankCB_Battle: @ 80116F4
ldrh r1, [r0]
movs r0, 0x1E
bl SetGpuReg
- ldr r0, _080117A8 @ =gUnknown_2022984
+ ldr r0, _080117A8 @ =gBattle_WIN0H
ldrh r1, [r0]
movs r0, 0x40
bl SetGpuReg
- ldr r0, _080117AC @ =gUnknown_2022986
+ ldr r0, _080117AC @ =gBattle_WIN0V
ldrh r1, [r0]
movs r0, 0x44
bl SetGpuReg
@@ -3188,8 +3188,8 @@ _08011798: .4byte gBattle_BG2_X
_0801179C: .4byte gBattle_BG2_Y
_080117A0: .4byte gBattle_BG3_X
_080117A4: .4byte gBattle_BG3_Y
-_080117A8: .4byte gUnknown_2022984
-_080117AC: .4byte gUnknown_2022986
+_080117A8: .4byte gBattle_WIN0H
+_080117AC: .4byte gBattle_WIN0V
_080117B0: .4byte gUnknown_2022988
_080117B4: .4byte gUnknown_202298A
thumb_func_end VBlankCB_Battle
@@ -3543,10 +3543,10 @@ sub_8011A1C: @ 8011A1C
movs r0, 0x4A
movs r1, 0
bl SetGpuReg
- ldr r1, _08011B48 @ =gUnknown_2022984
+ ldr r1, _08011B48 @ =gBattle_WIN0H
movs r0, 0xF0
strh r0, [r1]
- ldr r0, _08011B4C @ =gUnknown_2022986
+ ldr r0, _08011B4C @ =gBattle_WIN0V
strh r4, [r0]
bl ScanlineEffect_Clear
ldr r0, _08011B50 @ =gScanlineEffectRegBuffers
@@ -3643,8 +3643,8 @@ _08011A9C:
.align 2, 0
_08011B40: .4byte 0x05006000
_08011B44: .4byte 0x00005051
-_08011B48: .4byte gUnknown_2022984
-_08011B4C: .4byte gUnknown_2022986
+_08011B48: .4byte gBattle_WIN0H
+_08011B4C: .4byte gBattle_WIN0V
_08011B50: .4byte gScanlineEffectRegBuffers
_08011B54: .4byte 0x0000ff10
_08011B58: .4byte gBattle_BG0_X
@@ -4145,16 +4145,16 @@ _08011F3C:
lsls r0, 16
lsrs r0, 16
_08011F46:
- ldr r1, _08011F4C @ =gUnknown_82349CC
+ ldr r1, _08011F4C @ =gMonFrontPicCoords
lsls r0, 2
b _08011F88
.align 2, 0
-_08011F4C: .4byte gUnknown_82349CC
+_08011F4C: .4byte gMonFrontPicCoords
_08011F50:
- ldr r0, _08011F68 @ =0x00000181
+ ldr r0, _08011F68 @ =0x00000181 @ SPECIES_CASTFORM
cmp r4, r0
bne _08011F74
- ldr r0, _08011F6C @ =gUnknown_83AE03C
+ ldr r0, _08011F6C @ =gCastformFrontSpriteCoords
ldr r1, _08011F70 @ =gBattleMonForms
adds r1, r6, r1
ldrb r1, [r1]
@@ -4164,19 +4164,19 @@ _08011F50:
b _08011F8C
.align 2, 0
_08011F68: .4byte 0x00000181
-_08011F6C: .4byte gUnknown_83AE03C
+_08011F6C: .4byte gCastformFrontSpriteCoords
_08011F70: .4byte gBattleMonForms
_08011F74:
movs r0, 0xCE
lsls r0, 1
cmp r4, r0
bls _08011F84
- ldr r0, _08011F80 @ =gUnknown_82349CC
+ ldr r0, _08011F80 @ =gMonFrontPicCoords
b _08011F8A
.align 2, 0
-_08011F80: .4byte gUnknown_82349CC
+_08011F80: .4byte gMonFrontPicCoords
_08011F84:
- ldr r1, _08011FAC @ =gUnknown_82349CC
+ ldr r1, _08011FAC @ =gMonFrontPicCoords
lsls r0, r4, 2
_08011F88:
adds r0, r1
@@ -4199,7 +4199,7 @@ _08011F8C:
pop {r0}
bx r0
.align 2, 0
-_08011FAC: .4byte gUnknown_82349CC
+_08011FAC: .4byte gMonFrontPicCoords
_08011FB0: .4byte sub_8011FB4
thumb_func_end SpriteCB_FaintOpponentMon
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index 9d16e91e1..d5e389807 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -16,7 +16,7 @@ ClearBattleAnimationVars: @ 80724C0
strb r1, [r0]
ldr r0, _08072558 @ =gAnimScriptActive
strb r1, [r0]
- ldr r0, _0807255C @ =gUnknown_2037EE2
+ ldr r0, _0807255C @ =gAnimVisualTaskCount
strb r1, [r0]
ldr r0, _08072560 @ =gUnknown_2037EE3
strb r1, [r0]
@@ -86,7 +86,7 @@ _08072520:
.align 2, 0
_08072554: .4byte gUnknown_2037EE0
_08072558: .4byte gAnimScriptActive
-_0807255C: .4byte gUnknown_2037EE2
+_0807255C: .4byte gAnimVisualTaskCount
_08072560: .4byte gUnknown_2037EE3
_08072564: .4byte gAnimDisableStructPtr
_08072568: .4byte gAnimMoveDmg
@@ -152,7 +152,7 @@ LaunchBattleAnimation: @ 80725D4
movs r4, 0
ldr r6, _08072618 @ =gBattlerPartyIndexes
movs r7, 0x64
- ldr r5, _0807261C @ =gUnknown_2037F1C
+ ldr r5, _0807261C @ =gAnimBattlerSpecies
_08072600:
lsls r0, r4, 24
lsrs r0, 24
@@ -166,7 +166,7 @@ _08072600:
b _0807262A
.align 2, 0
_08072618: .4byte gBattlerPartyIndexes
-_0807261C: .4byte gUnknown_2037F1C
+_0807261C: .4byte gAnimBattlerSpecies
_08072620: .4byte gEnemyParty
_08072624:
ldrh r0, [r6]
@@ -276,10 +276,10 @@ _080726EE:
movs r2, 0x80
bl m4aMPlayVolumeControl
_08072706:
- ldr r0, _08072730 @ =gUnknown_2022984
+ ldr r0, _08072730 @ =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, _08072734 @ =gUnknown_2022986
+ ldr r0, _08072734 @ =gBattle_WIN0V
strh r1, [r0]
ldr r0, _08072738 @ =gUnknown_2022988
strh r1, [r0]
@@ -296,8 +296,8 @@ _08072706:
.align 2, 0
_08072728: .4byte 0x0000ffff
_0807272C: .4byte gMPlayInfo_BGM
-_08072730: .4byte gUnknown_2022984
-_08072734: .4byte gUnknown_2022986
+_08072730: .4byte gBattle_WIN0H
+_08072734: .4byte gBattle_WIN0V
_08072738: .4byte gUnknown_2022988
_0807273C: .4byte gUnknown_202298A
thumb_func_end LaunchBattleAnimation
@@ -309,7 +309,7 @@ DestroyAnimSprite: @ 8072740
bl FreeSpriteOamMatrix
adds r0, r4, 0
bl DestroySprite
- ldr r1, _0807275C @ =gUnknown_2037EE2
+ ldr r1, _0807275C @ =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
@@ -317,7 +317,7 @@ DestroyAnimSprite: @ 8072740
pop {r0}
bx r0
.align 2, 0
-_0807275C: .4byte gUnknown_2037EE2
+_0807275C: .4byte gAnimVisualTaskCount
thumb_func_end DestroyAnimSprite
thumb_func_start DestroyAnimVisualTask
@@ -326,14 +326,14 @@ DestroyAnimVisualTask: @ 8072760
lsls r0, 24
lsrs r0, 24
bl DestroyTask
- ldr r1, _08072778 @ =gUnknown_2037EE2
+ ldr r1, _08072778 @ =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
pop {r0}
bx r0
.align 2, 0
-_08072778: .4byte gUnknown_2037EE2
+_08072778: .4byte gAnimVisualTaskCount
thumb_func_end DestroyAnimVisualTask
thumb_func_start DestroyAnimSoundTask
@@ -666,7 +666,7 @@ _080729CC:
adds r0, r7, 0
adds r1, r4, 0
bl CreateSpriteAndAnimate
- ldr r1, _08072A0C @ =gUnknown_2037EE2
+ ldr r1, _08072A0C @ =gAnimVisualTaskCount
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
@@ -676,7 +676,7 @@ _080729CC:
.align 2, 0
_08072A04: .4byte gBattleAnimAttacker
_08072A08: .4byte gBattleAnimTarget
-_08072A0C: .4byte gUnknown_2037EE2
+_08072A0C: .4byte gAnimVisualTaskCount
thumb_func_end ScriptCmd_createsprite
thumb_func_start ScriptCmd_createvisualtask
@@ -729,7 +729,7 @@ _08072A60:
lsls r0, 24
lsrs r0, 24
bl _call_via_r6
- ldr r1, _08072A88 @ =gUnknown_2037EE2
+ ldr r1, _08072A88 @ =gAnimVisualTaskCount
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
@@ -739,7 +739,7 @@ _08072A60:
.align 2, 0
_08072A80: .4byte gUnknown_2037ED4
_08072A84: .4byte gBattleAnimArgs
-_08072A88: .4byte gUnknown_2037EE2
+_08072A88: .4byte gAnimVisualTaskCount
thumb_func_end ScriptCmd_createvisualtask
thumb_func_start ScriptCmd_delay
@@ -778,7 +778,7 @@ _08072AC8: .4byte WaitAnimFrameCount
thumb_func_start sub_8072ACC
sub_8072ACC: @ 8072ACC
push {lr}
- ldr r0, _08072AE4 @ =gUnknown_2037EE2
+ ldr r0, _08072AE4 @ =gAnimVisualTaskCount
ldrb r2, [r0]
cmp r2, 0
bne _08072AF0
@@ -790,7 +790,7 @@ sub_8072ACC: @ 8072ACC
strb r2, [r0]
b _08072AF6
.align 2, 0
-_08072AE4: .4byte gUnknown_2037EE2
+_08072AE4: .4byte gAnimVisualTaskCount
_08072AE8: .4byte gUnknown_2037ED4
_08072AEC: .4byte gUnknown_2037EE0
_08072AF0:
@@ -821,7 +821,7 @@ sub_8072B08: @ 8072B08
push {r7}
movs r0, 0
mov r8, r0
- ldr r0, _08072B38 @ =gUnknown_2037EE2
+ ldr r0, _08072B38 @ =gAnimVisualTaskCount
ldrb r0, [r0]
cmp r0, 0
bne _08072B30
@@ -842,7 +842,7 @@ _08072B30:
strh r0, [r1]
b _08072B62
.align 2, 0
-_08072B38: .4byte gUnknown_2037EE2
+_08072B38: .4byte gAnimVisualTaskCount
_08072B3C: .4byte gUnknown_2037EE3
_08072B40: .4byte gUnknown_2037F14
_08072B44: .4byte gUnknown_2037F12
@@ -1007,7 +1007,7 @@ _08072C62:
_08072C88:
adds r0, r5, 0
adds r1, r7, 0
- bl sub_8072E48
+ bl MoveBattlerSpriteToBG
ldr r0, _08072CDC @ =gBattlerSpriteIds
adds r0, r5, r0
ldrb r4, [r0]
@@ -1091,7 +1091,7 @@ _08072D12:
_08072D3E:
adds r0, r5, 0
adds r1, r7, 0
- bl sub_8072E48
+ bl MoveBattlerSpriteToBG
ldr r0, _08072D9C @ =gBattlerSpriteIds
adds r0, r5, r0
ldrb r4, [r0]
@@ -1217,8 +1217,8 @@ _08072E42:
bx r1
thumb_func_end IsBattlerSpriteVisible
- thumb_func_start sub_8072E48
-sub_8072E48: @ 8072E48
+ thumb_func_start MoveBattlerSpriteToBG
+MoveBattlerSpriteToBG: @ 8072E48
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1490,7 +1490,7 @@ _080730B0: .4byte gBattle_BG2_Y
_080730B4: .4byte gPlttBufferUnfaded + 0x200
_080730B8: .4byte 0x05000120
_080730BC: .4byte 0x04000008
- thumb_func_end sub_8072E48
+ thumb_func_end MoveBattlerSpriteToBG
thumb_func_start sub_80730C0
sub_80730C0: @ 80730C0
@@ -1914,7 +1914,7 @@ _080733CE:
movs r1, 0
_080733F4:
adds r0, r4, 0
- bl sub_8072E48
+ bl MoveBattlerSpriteToBG
ldr r2, _08073478 @ =gSprites
ldr r0, _0807347C @ =gBattlerSpriteIds
adds r0, r4, r0
@@ -1952,7 +1952,7 @@ _08073416:
movs r1, 0
_08073442:
adds r0, r4, 0
- bl sub_8072E48
+ bl MoveBattlerSpriteToBG
ldr r2, _08073478 @ =gSprites
ldr r0, _0807347C @ =gBattlerSpriteIds
adds r0, r4, r0
@@ -2767,8 +2767,8 @@ ScriptCmd_changebg: @ 8073A24
_08073A40: .4byte gUnknown_2037ED4
thumb_func_end ScriptCmd_changebg
- thumb_func_start sub_8073A44
-sub_8073A44: @ 8073A44
+ thumb_func_start BattleAnimAdjustPanning
+BattleAnimAdjustPanning: @ 8073A44
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -2867,10 +2867,10 @@ _08073AFC:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_8073A44
+ thumb_func_end BattleAnimAdjustPanning
- thumb_func_start sub_8073B08
-sub_8073B08: @ 8073B08
+ thumb_func_start BattleAnimAdjustPanning2
+BattleAnimAdjustPanning2: @ 8073B08
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -2914,10 +2914,10 @@ _08073B56:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_8073B08
+ thumb_func_end BattleAnimAdjustPanning2
- thumb_func_start sub_8073B60
-sub_8073B60: @ 8073B60
+ thumb_func_start KeepPanInRange
+KeepPanInRange: @ 8073B60
push {lr}
lsls r0, 16
lsrs r1, r0, 16
@@ -2939,7 +2939,7 @@ _08073B7A:
bx r1
.align 2, 0
_08073B84: .4byte 0x0000ffc0
- thumb_func_end sub_8073B60
+ thumb_func_end KeepPanInRange
thumb_func_start CalculatePanIncrement
CalculatePanIncrement: @ 8073B88
@@ -2994,7 +2994,7 @@ ScriptCmd_playsewithpan: @ 8073BC8
orrs r4, r0
movs r0, 0x2
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -3019,7 +3019,7 @@ ScriptCmd_setpan: @ 8073C00
str r0, [r4]
movs r0, 0x1
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
bl SE12PanpotControl
@@ -3058,14 +3058,14 @@ ScriptCmd_panse_1B: @ 8073C2C
ldrb r7, [r1, 0x5]
movs r0, 0x2
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
lsls r4, 24
asrs r4, 24
adds r0, r4, 0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
mov r8, r0
lsls r5, 24
asrs r5, 24
@@ -3301,14 +3301,14 @@ ScriptCmd_panse_27: @ 8073E10
ldrb r7, [r1, 0x5]
movs r0, 0x2
ldrsb r0, [r1, r0]
- bl sub_8073B08
+ bl BattleAnimAdjustPanning2
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
lsls r4, 24
asrs r4, 24
adds r0, r4, 0
- bl sub_8073B08
+ bl BattleAnimAdjustPanning2
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
@@ -3317,7 +3317,7 @@ ScriptCmd_panse_27: @ 8073E10
asrs r1, 24
mov r8, r1
mov r0, r8
- bl sub_8073B08
+ bl BattleAnimAdjustPanning2
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -3387,7 +3387,7 @@ ScriptCmd_loopsewithpan: @ 8073ED0
mov r9, r2
movs r0, 0x2
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -3498,7 +3498,7 @@ ScriptCmd_waitplaysewithpan: @ 8073FB4
mov r8, r0
movs r0, 0x2
ldrsb r0, [r1, r0]
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -3873,7 +3873,7 @@ ScriptCmd_invisible: @ 80742A4
ldr r4, _080742D8 @ =gUnknown_2037ED4
ldr r0, [r4]
ldrb r0, [r0, 0x1]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
@@ -3906,7 +3906,7 @@ ScriptCmd_visible: @ 80742E0
ldr r4, _08074318 @ =gUnknown_2037ED4
ldr r0, [r4]
ldrb r0, [r0, 0x1]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
@@ -3960,7 +3960,7 @@ sub_8074320: @ 8074320
cmp r7, 0
bne _08074370
ldrb r0, [r6]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0
@@ -3971,12 +3971,12 @@ _08074368: .4byte gBattleAnimAttacker
_0807436C: .4byte gBattleAnimTarget
_08074370:
ldrb r0, [r5]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x1
_0807437C:
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
@@ -4042,7 +4042,7 @@ sub_80743C8: @ 80743C8
cmp r7, 0
bne _08074418
ldrb r0, [r6]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0
@@ -4053,12 +4053,12 @@ _08074410: .4byte gBattleAnimAttacker
_08074414: .4byte gBattleAnimTarget
_08074418:
ldrb r0, [r5]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x1
_08074424:
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
diff --git a/asm/battle_anim_effects_1.s b/asm/battle_anim_effects_1.s
index 2d436f3ef..42b3517f2 100644
--- a/asm/battle_anim_effects_1.s
+++ b/asm/battle_anim_effects_1.s
@@ -96,7 +96,7 @@ sub_80A2388: @ 80A2388
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080A23C8 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
@@ -115,7 +115,7 @@ sub_80A2388: @ 80A2388
strh r0, [r4, 0x36]
ldr r0, _080A23D0 @ =StartAnimLinearTranslation
str r0, [r4, 0x1C]
- ldr r1, _080A23D4 @ =move_anim_8074EE0
+ ldr r1, _080A23D4 @ =DestroySpriteAndMatrix
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -125,7 +125,7 @@ sub_80A2388: @ 80A2388
_080A23C8: .4byte gBattleAnimArgs
_080A23CC: .4byte gBattleAnimAttacker
_080A23D0: .4byte StartAnimLinearTranslation
-_080A23D4: .4byte move_anim_8074EE0
+_080A23D4: .4byte DestroySpriteAndMatrix
thumb_func_end sub_80A2388
thumb_func_start sub_80A23D8
@@ -133,7 +133,7 @@ sub_80A23D8: @ 80A23D8
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r5, _080A2420 @ =gBattleAnimArgs
ldrb r1, [r5, 0x6]
adds r0, r4, 0
@@ -173,7 +173,7 @@ sub_80A2430: @ 80A2430
push {r4-r6,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r6, _080A2480 @ =gBattleAnimArgs
ldrh r0, [r6, 0x4]
strh r0, [r4, 0x2E]
@@ -195,7 +195,7 @@ sub_80A2430: @ 80A2430
lsrs r0, 24
strh r0, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldrh r0, [r6, 0x6]
strh r0, [r4, 0x38]
ldr r1, _080A2488 @ =sub_80A248C
@@ -215,7 +215,7 @@ _080A2488: .4byte sub_80A248C
sub_80A248C: @ 80A248C
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080A24A2
@@ -338,7 +338,7 @@ sub_80A2580: @ 80A2580
push {r4-r6,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldr r6, _080A25C4 @ =gBattleAnimArgs
ldrh r0, [r6, 0x6]
strh r0, [r4, 0x2E]
@@ -358,7 +358,7 @@ sub_80A2580: @ 80A2580
ldrh r0, [r6, 0x4]
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080A25CC @ =sub_80A25D0
str r0, [r4, 0x1C]
pop {r4-r6}
@@ -374,7 +374,7 @@ _080A25CC: .4byte sub_80A25D0
sub_80A25D0: @ 80A25D0
push {r4,lr}
adds r4, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080A25E4
@@ -451,7 +451,7 @@ _080A263C:
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl sub_8075804
+ bl InitAnimFastLinearTranslationWithSpeed
bl Random
movs r1, 0xFF
ands r1, r0
@@ -476,7 +476,7 @@ _080A26A0: .4byte sub_80A26A4
sub_80A26A4: @ 80A26A4
push {r4,lr}
adds r4, r0, 0
- bl sub_807578C
+ bl AnimFastTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080A26BA
@@ -520,7 +520,7 @@ sub_80A26F0: @ 80A26F0
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080A2750 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -555,7 +555,7 @@ _080A2710:
ldrh r0, [r4, 0xA]
strh r0, [r6, 0x38]
adds r0, r6, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080A275C @ =sub_80A2760
str r0, [r6, 0x1C]
pop {r4-r6}
@@ -572,7 +572,7 @@ _080A275C: .4byte sub_80A2760
sub_80A2760: @ 80A2760
push {r4,lr}
adds r4, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080A278A
@@ -584,7 +584,7 @@ sub_80A2760: @ 80A2760
strb r0, [r2]
movs r0, 0xA
strh r0, [r4, 0x2E]
- ldr r0, _080A2790 @ =sub_8074C44
+ ldr r0, _080A2790 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080A2794 @ =sub_80A2798
adds r0, r4, 0
@@ -594,7 +594,7 @@ _080A278A:
pop {r0}
bx r0
.align 2, 0
-_080A2790: .4byte sub_8074C44
+_080A2790: .4byte WaitAnimForDuration
_080A2794: .4byte sub_80A2798
thumb_func_end sub_80A2760
@@ -614,7 +614,7 @@ sub_80A2798: @ 80A2798
bl StartSpriteAnim
movs r0, 0x3C
strh r0, [r4, 0x2E]
- ldr r0, _080A27C8 @ =sub_8074C44
+ ldr r0, _080A27C8 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080A27CC @ =DestroyAnimSprite
adds r0, r4, 0
@@ -623,7 +623,7 @@ sub_80A2798: @ 80A2798
pop {r0}
bx r0
.align 2, 0
-_080A27C8: .4byte sub_8074C44
+_080A27C8: .4byte WaitAnimForDuration
_080A27CC: .4byte DestroyAnimSprite
thumb_func_end sub_80A2798
@@ -632,7 +632,7 @@ sub_80A27D0: @ 80A27D0
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldr r5, _080A2814 @ =gBattleAnimArgs
ldrb r1, [r5, 0x8]
adds r0, r4, 0
@@ -694,7 +694,7 @@ sub_80A281C: @ 80A281C
bhi _080A2870
ldr r0, _080A286C @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -709,7 +709,7 @@ _080A286C: .4byte gBattleAnimTarget
_080A2870:
ldr r0, _080A28C0 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
adds r0, 0x1
lsls r0, 24
lsrs r2, r0, 24
@@ -771,7 +771,7 @@ _080A28DE:
_080A28E6:
ldr r0, _080A2904 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -802,7 +802,7 @@ sub_80A2920: @ 80A2920
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r5, _080A2968 @ =gBattleAnimArgs
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
@@ -821,7 +821,7 @@ sub_80A2920: @ 80A2920
adds r0, r5
strh r0, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
movs r0, 0x40
strh r0, [r4, 0x38]
ldr r1, _080A2970 @ =sub_80A2974
@@ -841,7 +841,7 @@ _080A2970: .4byte sub_80A2974
sub_80A2974: @ 80A2974
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _080A29E0
@@ -904,7 +904,7 @@ sub_80A29EC: @ 80A29EC
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r5, _080A2A34 @ =gBattleAnimArgs
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
@@ -923,7 +923,7 @@ sub_80A29EC: @ 80A29EC
adds r0, r5
strh r0, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
movs r0, 0x40
strh r0, [r4, 0x38]
ldr r1, _080A2A3C @ =sub_80A2A40
@@ -943,7 +943,7 @@ _080A2A3C: .4byte sub_80A2A40
sub_80A2A40: @ 80A2A40
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _080A2A98
@@ -1132,7 +1132,7 @@ sub_80A2B9C: @ 80A2B9C
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080A2BF0 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -1180,7 +1180,7 @@ _080A2BFC:
adds r3, r5, 0
adds r3, 0x36
movs r1, 0x1
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldrh r0, [r6, 0x4]
ldrh r1, [r5, 0x32]
adds r0, r1
@@ -1194,7 +1194,7 @@ _080A2C1C:
ldrh r0, [r0, 0xA]
strh r0, [r5, 0x38]
adds r0, r5, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080A2C50 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -1235,7 +1235,7 @@ sub_80A2C68: @ 80A2C68
movs r0, 0x1
strh r0, [r6, 0x2E]
adds r0, r6, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
ldrh r0, [r6, 0x3C]
strh r5, [r6, 0x2E]
lsls r4, 16
@@ -1316,8 +1316,8 @@ _080A2D08:
bx r0
thumb_func_end sub_80A2C68
- thumb_func_start sub_80A2D10
-sub_80A2D10: @ 80A2D10
+ thumb_func_start AnimMoveTwisterParticle
+AnimMoveTwisterParticle: @ 80A2D10
push {r4,lr}
adds r4, r0, 0
bl IsContest
@@ -1336,7 +1336,7 @@ sub_80A2D10: @ 80A2D10
adds r3, r4, 0
adds r3, 0x22
movs r1, 0x1
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
_080A2D3C:
ldrh r0, [r4, 0x22]
adds r0, 0x20
@@ -1361,7 +1361,7 @@ _080A2D3C:
_080A2D64: .4byte gBattleAnimTarget
_080A2D68: .4byte gBattleAnimArgs
_080A2D6C: .4byte sub_80A2D70
- thumb_func_end sub_80A2D10
+ thumb_func_end AnimMoveTwisterParticle
thumb_func_start sub_80A2D70
sub_80A2D70: @ 80A2D70
@@ -1419,7 +1419,7 @@ _080A2DAC:
bgt _080A2DEC
ldr r0, _080A2DE8 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
subs r0, 0x1
@@ -1429,7 +1429,7 @@ _080A2DE8: .4byte gBattleAnimTarget
_080A2DEC:
ldr r0, _080A2E24 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
@@ -1464,7 +1464,7 @@ sub_80A2E28: @ 80A2E28
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
adds r2, r5, 0
adds r2, 0x2C
ldrb r0, [r2]
@@ -1505,7 +1505,7 @@ sub_80A2E64: @ 80A2E64
ands r0, r1
strb r0, [r2]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
movs r0, 0x80
lsls r0, 1
strh r0, [r4, 0x2E]
@@ -1526,7 +1526,7 @@ sub_80A2EA0: @ 80A2EA0
push {r4,lr}
adds r4, r0, 0
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
@@ -1587,7 +1587,7 @@ sub_80A2F0C: @ 80A2F0C
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r2, r0, 24
ldr r1, _080A2F38 @ =gSprites
@@ -1641,7 +1641,7 @@ sub_80A2F74: @ 80A2F74
lsls r4, 24
lsrs r4, 24
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
@@ -1682,7 +1682,7 @@ _080A2FBE:
movs r3, 0
bl SetSpriteRotScale
adds r0, r6, 0
- bl sub_8076440
+ bl SetBattlerSpriteYOffsetFromYScale
ldrh r0, [r4, 0xA]
subs r0, 0x1
strh r0, [r4, 0xA]
@@ -1725,7 +1725,7 @@ sub_80A3004: @ 80A3004
cmp r5, 0
bne _080A3074
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -1866,7 +1866,7 @@ _080A3104:
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
- ldr r0, _080A3160 @ =sub_8075764
+ ldr r0, _080A3160 @ =InitAndRunAnimFastLinearTranslation
str r0, [r5, 0x1C]
ldr r1, _080A3164 @ =DestroyAnimSprite
adds r0, r5, 0
@@ -1877,7 +1877,7 @@ _080A3156:
bx r0
.align 2, 0
_080A315C: .4byte gBattleAnimAttacker
-_080A3160: .4byte sub_8075764
+_080A3160: .4byte InitAndRunAnimFastLinearTranslation
_080A3164: .4byte DestroyAnimSprite
thumb_func_end sub_80A3098
@@ -2370,7 +2370,7 @@ sub_80A3518: @ 80A3518
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r4, _080A3560 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
@@ -2546,7 +2546,7 @@ sub_80A3670: @ 80A3670
bne _080A368A
adds r0, r4, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldr r0, _080A36B0 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x30]
@@ -2579,7 +2579,7 @@ sub_80A36B4: @ 80A36B4
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldr r4, _080A36FC @ =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
@@ -2672,7 +2672,7 @@ _080A3756:
cmp r0, 0
bne _080A378A
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -2690,7 +2690,7 @@ _080A378A:
str r0, [r4, 0x1C]
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -3014,11 +3014,11 @@ sub_80A39C0: @ 80A39C0
strh r0, [r5, 0x16]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
strh r0, [r5, 0x1C]
ldrb r0, [r4]
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
strh r0, [r5, 0x1E]
ldrb r0, [r4]
bl GetBattlerSide
@@ -3139,7 +3139,7 @@ _080A3A60:
adds r0, r1
lsls r0, 2
adds r0, r4
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080A3B24 @ =sub_80A3B28
str r0, [r5]
pop {r4-r6}
@@ -3207,7 +3207,7 @@ _080A3B80:
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
bne _080A3B96
@@ -3236,7 +3236,7 @@ _080A3BB4:
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
bne _080A3BCA
@@ -3265,7 +3265,7 @@ _080A3BE6:
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
bne _080A3BFC
@@ -3309,7 +3309,7 @@ _080A3C04:
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
@@ -3318,7 +3318,7 @@ _080A3C54:
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
bne _080A3C6A
@@ -3381,7 +3381,7 @@ _080A3C72:
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
@@ -3440,7 +3440,7 @@ _080A3CE8:
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
@@ -3449,7 +3449,7 @@ _080A3D62:
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
bne _080A3D78
@@ -3494,7 +3494,7 @@ _080A3D80:
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
@@ -3551,7 +3551,7 @@ _080A3DD2:
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
@@ -3560,7 +3560,7 @@ _080A3E48:
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080A3EFC
@@ -3603,7 +3603,7 @@ _080A3E64:
adds r0, r4, 0
bl StartSpriteAnim
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldrh r0, [r6, 0x8]
adds r0, 0x1
b _080A3EFA
@@ -3612,7 +3612,7 @@ _080A3EB6:
adds r1, r2, 0
bl sub_80A3F24
adds r0, r4, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080A3EFC
@@ -3902,7 +3902,7 @@ _080A40D4:
_080A40E4:
strh r0, [r4, 0x22]
adds r0, r6, 0
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -3924,10 +3924,10 @@ _080A4100:
adds r0, r7
strh r0, [r4, 0x22]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
_080A411A:
adds r0, r6, 0
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
@@ -4008,7 +4008,7 @@ _080A41A4:
bgt _080A41BC
_080A41B6:
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080A41BC:
pop {r4,r5}
pop {r0}
@@ -4221,7 +4221,7 @@ _080A4318:
subs r1, r5
lsls r1, 16
asrs r1, 16
- bl sub_8075B30
+ bl ArcTan2Neg
lsls r0, 16
lsrs r4, r0, 16
bl IsContest
@@ -4239,7 +4239,7 @@ _080A437A:
adds r0, r6, 0
movs r1, 0
adds r2, r3, 0
- bl sub_8075A1C
+ bl TrySetSpriteRotScale
ldr r0, _080A439C @ =sub_80A43A0
str r0, [r6, 0x1C]
_080A438E:
@@ -4280,7 +4280,7 @@ sub_80A43A0: @ 80A43A0
b _080A43D6
_080A43D0:
adds r0, r2, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080A43D6:
pop {r4}
pop {r0}
@@ -4335,7 +4335,7 @@ _080A442C:
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r0, _080A4448 @ =sub_8074F6C
+ ldr r0, _080A4448 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
ldr r1, _080A444C @ =DestroyAnimSprite
adds r0, r4, 0
@@ -4345,7 +4345,7 @@ _080A442C:
bx r0
.align 2, 0
_080A4444: .4byte gBattleAnimArgs
-_080A4448: .4byte sub_8074F6C
+_080A4448: .4byte RunStoredCallbackWhenAnimEnds
_080A444C: .4byte DestroyAnimSprite
thumb_func_end sub_80A43F8
@@ -4369,7 +4369,7 @@ _080A446A:
movs r0, 0
ldrsh r1, [r4, r0]
adds r0, r5, 0
- bl sub_8074FF8
+ bl SetAnimSpriteInitialXOffset
ldrh r0, [r4, 0x2]
ldrh r1, [r5, 0x22]
adds r0, r1
@@ -4407,18 +4407,18 @@ sub_80A4494: @ 80A4494
ldrb r1, [r1, 0xC]
adds r0, r4, 0
bl StartSpriteAffineAnim
- ldr r1, _080A44D8 @ =move_anim_8074EE0
+ ldr r1, _080A44D8 @ =DestroySpriteAndMatrix
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A44DC @ =sub_8074E70
+ ldr r0, _080A44DC @ =TranslateSpriteLinearAndFlicker
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A44D4: .4byte gBattleAnimArgs
-_080A44D8: .4byte move_anim_8074EE0
-_080A44DC: .4byte sub_8074E70
+_080A44D8: .4byte DestroySpriteAndMatrix
+_080A44DC: .4byte TranslateSpriteLinearAndFlicker
thumb_func_end sub_80A4494
thumb_func_start sub_80A44E0
@@ -4717,7 +4717,7 @@ _080A46F2:
bl StoreSpriteCallbackInData6
movs r0, 0x3
strh r0, [r4, 0x2E]
- ldr r0, _080A4734 @ =sub_8074C44
+ ldr r0, _080A4734 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
_080A4728:
pop {r4}
@@ -4725,7 +4725,7 @@ _080A4728:
bx r0
.align 2, 0
_080A4730: .4byte DestroyAnimSprite
-_080A4734: .4byte sub_8074C44
+_080A4734: .4byte WaitAnimForDuration
thumb_func_end sub_80A46CC
thumb_func_start sub_80A4738
@@ -4971,7 +4971,7 @@ _080A4906:
ldr r6, _080A4968 @ =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0
- bl sub_8074844
+ bl GetBattlerSpriteCoord2
lsls r0, 24
ldr r4, _080A4964 @ =gBattleAnimArgs
lsrs r0, 24
@@ -4980,7 +4980,7 @@ _080A4906:
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
- bl sub_8074844
+ bl GetBattlerSpriteCoord2
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
@@ -4997,7 +4997,7 @@ _080A4906:
beq _080A496C
_080A4944:
ldrb r0, [r6]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
@@ -5016,7 +5016,7 @@ _080A4964: .4byte gBattleAnimArgs
_080A4968: .4byte gBattleAnimAttacker
_080A496C:
ldrb r0, [r6]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -5185,14 +5185,14 @@ _080A4A80:
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
- ldr r0, _080A4AC8 @ =sub_8074F88
+ ldr r0, _080A4AC8 @ =DestroyAnimSpriteAndDisableBlend
str r0, [r4, 0x1C]
_080A4AC2:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080A4AC8: .4byte sub_8074F88
+_080A4AC8: .4byte DestroyAnimSpriteAndDisableBlend
thumb_func_end sub_80A49D4
thumb_func_start sub_80A4ACC
@@ -5503,12 +5503,12 @@ sub_80A4D0C: @ 80A4D0C
cmp r0, 0
bne _080A4D20
adds r0, r4, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
_080A4D20:
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
- bl sub_8074FF8
+ bl SetAnimSpriteInitialXOffset
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
@@ -5522,7 +5522,7 @@ _080A4D20:
ldr r1, _080A4D54 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A4D58 @ =sub_8074D00
+ ldr r0, _080A4D58 @ =TranslateSpriteLinearFixedPoint
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
@@ -5530,7 +5530,7 @@ _080A4D20:
.align 2, 0
_080A4D50: .4byte gBattleAnimArgs
_080A4D54: .4byte DestroyAnimSprite
-_080A4D58: .4byte sub_8074D00
+_080A4D58: .4byte TranslateSpriteLinearFixedPoint
thumb_func_end sub_80A4D0C
thumb_func_start sub_80A4D5C
@@ -5569,11 +5569,11 @@ _080A4D7A:
adds r3, r5, 0
adds r3, 0x22
adds r0, r6, 0
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
movs r2, 0
ldrsh r1, [r4, r2]
adds r0, r5, 0
- bl sub_8074FF8
+ bl SetAnimSpriteInitialXOffset
ldrh r0, [r4, 0x2]
ldrh r1, [r5, 0x22]
adds r0, r1
@@ -5619,7 +5619,7 @@ _080A4DFA:
movs r2, 0
ldrsh r1, [r0, r2]
adds r0, r5, 0
- bl sub_8074FF8
+ bl SetAnimSpriteInitialXOffset
_080A4E14:
ldr r1, _080A4E34 @ =gBattleAnimArgs
ldrh r0, [r1, 0xA]
@@ -5631,7 +5631,7 @@ _080A4E14:
ldr r1, _080A4E38 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A4E3C @ =sub_8074D00
+ ldr r0, _080A4E3C @ =TranslateSpriteLinearFixedPoint
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
@@ -5639,14 +5639,14 @@ _080A4E14:
.align 2, 0
_080A4E34: .4byte gBattleAnimArgs
_080A4E38: .4byte DestroyAnimSprite
-_080A4E3C: .4byte sub_8074D00
+_080A4E3C: .4byte TranslateSpriteLinearFixedPoint
thumb_func_end sub_80A4D5C
thumb_func_start sub_80A4E40
sub_80A4E40: @ 80A4E40
push {r4,lr}
adds r4, r0, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r0, _080A4E6C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -5738,7 +5738,7 @@ _080A4EEC:
sub_80A4EF4: @ 80A4EF4
push {r4,lr}
adds r4, r0, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r0, _080A4F24 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -5819,7 +5819,7 @@ sub_80A4F60: @ 80A4F60
cmp r0, 0x3C
ble _080A4FA4
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080A4FA4:
pop {r4}
pop {r0}
@@ -5837,14 +5837,14 @@ sub_80A4FAC: @ 80A4FAC
strh r1, [r0, 0x22]
movs r1, 0x14
strh r1, [r0, 0x2E]
- ldr r1, _080A4FCC @ =sub_8074C44
+ ldr r1, _080A4FCC @ =WaitAnimForDuration
str r1, [r0, 0x1C]
ldr r1, _080A4FD0 @ =sub_80A4FD4
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
-_080A4FCC: .4byte sub_8074C44
+_080A4FCC: .4byte WaitAnimForDuration
_080A4FD0: .4byte sub_80A4FD4
thumb_func_end sub_80A4FAC
@@ -5863,14 +5863,14 @@ sub_80A4FD4: @ 80A4FD4
b _080A506A
_080A4FEA:
strh r1, [r5, 0x2E]
- ldr r0, _080A4FFC @ =sub_8074C44
+ ldr r0, _080A4FFC @ =WaitAnimForDuration
str r0, [r5, 0x1C]
ldr r1, _080A5000 @ =sub_80A4FD4
adds r0, r5, 0
bl StoreSpriteCallbackInData6
b _080A506A
.align 2, 0
-_080A4FFC: .4byte sub_8074C44
+_080A4FFC: .4byte WaitAnimForDuration
_080A5000: .4byte sub_80A4FD4
_080A5004:
ldrh r3, [r5, 0x24]
@@ -5915,7 +5915,7 @@ _080A5004:
adds r0, r1
strh r0, [r5, 0x38]
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -5946,14 +5946,14 @@ sub_80A5084: @ 80A5084
bne _080A50AC
movs r0, 0xA
strh r0, [r2, 0x2E]
- ldr r0, _080A50A4 @ =sub_8074C44
+ ldr r0, _080A50A4 @ =WaitAnimForDuration
str r0, [r2, 0x1C]
ldr r1, _080A50A8 @ =sub_80A50B8
adds r0, r2, 0
bl StoreSpriteCallbackInData6
b _080A50B0
.align 2, 0
-_080A50A4: .4byte sub_8074C44
+_080A50A4: .4byte WaitAnimForDuration
_080A50A8: .4byte sub_80A50B8
_080A50AC:
ldr r0, _080A50B4 @ =sub_80A4FD4
@@ -5976,14 +5976,14 @@ sub_80A50B8: @ 80A50B8
strh r0, [r5, 0x2E]
strh r1, [r5, 0x30]
strh r1, [r5, 0x32]
- ldr r0, _080A50D8 @ =sub_8074C44
+ ldr r0, _080A50D8 @ =WaitAnimForDuration
str r0, [r5, 0x1C]
ldr r1, _080A50DC @ =sub_80A5174
adds r0, r5, 0
bl StoreSpriteCallbackInData6
b _080A5160
.align 2, 0
-_080A50D8: .4byte sub_8074C44
+_080A50D8: .4byte WaitAnimForDuration
_080A50DC: .4byte sub_80A5174
_080A50E0:
ldrh r0, [r5, 0x6]
@@ -6126,7 +6126,7 @@ _080A51A4:
movs r2, 0x4
bl LoadPalette
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -6447,7 +6447,7 @@ _080A5424:
ldrh r0, [r5, 0x34]
lsls r0, 24
lsrs r0, 24
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
@@ -6589,7 +6589,7 @@ _080A5538:
ldrh r0, [r5, 0x34]
lsls r0, 24
lsrs r0, 24
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldrh r0, [r5, 0x2E]
adds r0, 0x1
strh r0, [r5, 0x2E]
@@ -6694,7 +6694,7 @@ _080A55FA:
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
@@ -6732,7 +6732,7 @@ _080A564C:
ldrh r0, [r4, 0x32]
lsls r0, 24
lsrs r0, 24
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldrh r0, [r4, 0x30]
adds r0, 0x1
strh r0, [r4, 0x30]
@@ -6906,7 +6906,7 @@ _080A579E:
adds r1, r2, 0
bl SetSpriteRotScale
ldrb r0, [r4, 0x8]
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
b _080A58D4
_080A57C4:
movs r0, 0x8
@@ -7097,7 +7097,7 @@ sub_80A58EC: @ 80A58EC
adds r1, r2, 0
bl SetSpriteRotScale
ldrb r0, [r4, 0x8]
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldrh r0, [r4, 0xE]
subs r0, 0x1
strh r0, [r4, 0xE]
@@ -7154,7 +7154,7 @@ _080A595E:
ldr r1, _080A59A0 @ =sub_80A5A8C
adds r0, r5, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A59A4 @ =sub_8074F6C
+ ldr r0, _080A59A4 @ =RunStoredCallbackWhenAnimEnds
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
@@ -7162,7 +7162,7 @@ _080A595E:
.align 2, 0
_080A599C: .4byte gBattleAnimTarget
_080A59A0: .4byte sub_80A5A8C
-_080A59A4: .4byte sub_8074F6C
+_080A59A4: .4byte RunStoredCallbackWhenAnimEnds
thumb_func_end sub_80A5940
thumb_func_start sub_80A59A8
@@ -7187,7 +7187,7 @@ sub_80A59A8: @ 80A59A8
ldr r1, _080A59E8 @ =sub_80A5A44
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A59EC @ =sub_8074F6C
+ ldr r0, _080A59EC @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
@@ -7196,7 +7196,7 @@ sub_80A59A8: @ 80A59A8
_080A59E0: .4byte gBattleAnimTarget
_080A59E4: .4byte 0x0000ffd0
_080A59E8: .4byte sub_80A5A44
-_080A59EC: .4byte sub_8074F6C
+_080A59EC: .4byte RunStoredCallbackWhenAnimEnds
thumb_func_end sub_80A59A8
thumb_func_start sub_80A59F0
@@ -7259,7 +7259,7 @@ sub_80A5A44: @ 80A5A44
ldr r1, _080A5A74 @ =sub_80A5A7C
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A5A78 @ =sub_8074CD0
+ ldr r0, _080A5A78 @ =TranslateSpriteLinear
str r0, [r4, 0x1C]
_080A5A6E:
pop {r4}
@@ -7267,7 +7267,7 @@ _080A5A6E:
bx r0
.align 2, 0
_080A5A74: .4byte sub_80A5A7C
-_080A5A78: .4byte sub_8074CD0
+_080A5A78: .4byte TranslateSpriteLinear
thumb_func_end sub_80A5A44
thumb_func_start sub_80A5A7C
@@ -7436,7 +7436,7 @@ sub_80A5B7C: @ 80A5B7C
strh r5, [r4, 0x34]
strh r5, [r4, 0x36]
subs r0, 0x42
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r4, 0x38]
@@ -7656,7 +7656,7 @@ sub_80A5D4C: @ 80A5D4C
push {r4,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
adds r2, r4, 0
adds r2, 0x2C
ldrb r0, [r2]
@@ -8042,7 +8042,7 @@ sub_80A5FC0: @ 80A5FC0
adds r5, 0x1E
adds r1, r5, 0
mov r2, r8
- bl sub_80765C0
+ bl StorePointerInVars
ldr r0, _080A6098 @ =0x000027d2
bl IndexOfSpritePaletteTag
lsls r0, 24
@@ -8273,7 +8273,7 @@ _080A61EC:
ldrsh r0, [r4, r1]
movs r2, 0x26
ldrsh r1, [r4, r2]
- bl sub_80765C8
+ bl LoadPointerFromVars
ldr r1, _080A621C @ =0x00007fbb
str r1, [sp]
movs r1, 0
@@ -8506,7 +8506,7 @@ sub_80A63B4: @ 80A63B4
ldr r1, _080A6444 @ =gTasks
adds r6, r0, r1
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x8]
@@ -8598,7 +8598,7 @@ _080A6488:
cmp r5, 0x1
bhi _080A649A
movs r0, 0
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ bl CloneBattlerSpriteWithBlend
lsls r0, 16
asrs r0, 16
cmp r0, 0
@@ -8608,7 +8608,7 @@ _080A649A:
str r0, [r6]
ldr r0, _080A64C4 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -8652,7 +8652,7 @@ sub_80A64E0: @ 80A64E0
bne _080A6532
ldr r0, _080A6518 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -8764,14 +8764,14 @@ sub_80A65CC: @ 80A65CC
adds r4, r0, 0
ldr r1, _080A65E0 @ =DestroyAnimSprite
bl StoreSpriteCallbackInData6
- ldr r0, _080A65E4 @ =sub_8074F6C
+ ldr r0, _080A65E4 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A65E0: .4byte DestroyAnimSprite
-_080A65E4: .4byte sub_8074F6C
+_080A65E4: .4byte RunStoredCallbackWhenAnimEnds
thumb_func_end sub_80A65CC
thumb_func_start sub_80A65E8
@@ -8903,7 +8903,7 @@ sub_80A66D4: @ 80A66D4
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r4, _080A672C @ =gBattleAnimArgs
ldrb r1, [r4]
adds r0, r5, 0
@@ -9091,7 +9091,7 @@ _080A6800:
ble _080A6856
_080A684E:
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
b _080A68A6
_080A6856:
movs r0, 0x34
@@ -9267,7 +9267,7 @@ _080A699E:
cmp r0, 0x30
bne _080A69B2
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080A69B2:
pop {r4}
pop {r0}
@@ -9314,7 +9314,7 @@ _080A69DE:
strh r0, [r5, 0x22]
movs r0, 0x8
strh r0, [r5, 0x2E]
- ldr r0, _080A6A20 @ =sub_8074C44
+ ldr r0, _080A6A20 @ =WaitAnimForDuration
str r0, [r5, 0x1C]
ldr r1, _080A6A24 @ =DestroyAnimSprite
adds r0, r5, 0
@@ -9325,7 +9325,7 @@ _080A69DE:
.align 2, 0
_080A6A18: .4byte 0x0000fff0
_080A6A1C: .4byte gBattleAnimAttacker
-_080A6A20: .4byte sub_8074C44
+_080A6A20: .4byte WaitAnimForDuration
_080A6A24: .4byte DestroyAnimSprite
thumb_func_end sub_80A69B8
@@ -9333,7 +9333,7 @@ _080A6A24: .4byte DestroyAnimSprite
sub_80A6A28: @ 80A6A28
push {r4,r5,lr}
adds r4, r0, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldrh r0, [r4, 0x22]
adds r0, 0x8
strh r0, [r4, 0x22]
@@ -9381,7 +9381,7 @@ _080A6A74:
subs r0, 0x28
strh r0, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x38]
ldr r0, _080A6AAC @ =sub_80A6AB0
@@ -9400,7 +9400,7 @@ _080A6AAC: .4byte sub_80A6AB0
sub_80A6AB0: @ 80A6AB0
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _080A6B00
@@ -9458,13 +9458,13 @@ sub_80A6B0C: @ 80A6B0C
bne _080A6B2C
adds r0, r5, 0
movs r1, 0x5
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
adds r0, 0x8
b _080A6B36
_080A6B2C:
adds r0, r5, 0
movs r1, 0x4
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
subs r0, 0x8
_080A6B36:
strh r0, [r6, 0x20]
@@ -9474,7 +9474,7 @@ _080A6B36:
adds r4, r0, 0
adds r0, r5, 0
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r4, 24
lsrs r4, 24
lsls r0, 16
@@ -9529,7 +9529,7 @@ _080A6B82:
ldr r1, _080A6BC8 @ =sub_80A6BD0
adds r0, r5, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A6BCC @ =sub_8074F6C
+ ldr r0, _080A6BCC @ =RunStoredCallbackWhenAnimEnds
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
@@ -9538,7 +9538,7 @@ _080A6B82:
_080A6BC0: .4byte gBattleAnimTarget
_080A6BC4: .4byte gBattleAnimArgs
_080A6BC8: .4byte sub_80A6BD0
-_080A6BCC: .4byte sub_8074F6C
+_080A6BCC: .4byte RunStoredCallbackWhenAnimEnds
thumb_func_end sub_80A6B64
thumb_func_start sub_80A6BD0
@@ -9559,7 +9559,7 @@ sub_80A6BD0: @ 80A6BD0
lsrs r1, 24
adds r0, r4, 0
bl StartSpriteAnim
- ldr r0, _080A6C04 @ =sub_8074F6C
+ ldr r0, _080A6C04 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
_080A6BF8:
pop {r4}
@@ -9567,7 +9567,7 @@ _080A6BF8:
bx r0
.align 2, 0
_080A6C00: .4byte DestroyAnimSprite
-_080A6C04: .4byte sub_8074F6C
+_080A6C04: .4byte RunStoredCallbackWhenAnimEnds
thumb_func_end sub_80A6BD0
thumb_func_start sub_80A6C08
@@ -9595,7 +9595,7 @@ _080A6C26:
ldr r1, _080A6C48 @ =sub_80A6C50
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A6C4C @ =sub_8074F50
+ ldr r0, _080A6C4C @ =RunStoredCallbackWhenAffineAnimEnds
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
@@ -9603,7 +9603,7 @@ _080A6C26:
.align 2, 0
_080A6C44: .4byte gBattleAnimTarget
_080A6C48: .4byte sub_80A6C50
-_080A6C4C: .4byte sub_8074F50
+_080A6C4C: .4byte RunStoredCallbackWhenAffineAnimEnds
thumb_func_end sub_80A6C08
thumb_func_start sub_80A6C50
@@ -9620,18 +9620,18 @@ sub_80A6C50: @ 80A6C50
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
- ldr r1, _080A6C7C @ =move_anim_8074EE0
+ ldr r1, _080A6C7C @ =DestroySpriteAndMatrix
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A6C80 @ =sub_8074F50
+ ldr r0, _080A6C80 @ =RunStoredCallbackWhenAffineAnimEnds
str r0, [r4, 0x1C]
_080A6C76:
pop {r4}
pop {r0}
bx r0
.align 2, 0
-_080A6C7C: .4byte move_anim_8074EE0
-_080A6C80: .4byte sub_8074F50
+_080A6C7C: .4byte DestroySpriteAndMatrix
+_080A6C80: .4byte RunStoredCallbackWhenAffineAnimEnds
thumb_func_end sub_80A6C50
thumb_func_start sub_80A6C84
@@ -9661,7 +9661,7 @@ _080A6CA2:
strh r0, [r4, 0x20]
adds r0, r5, 0
movs r1, 0x2
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
strh r0, [r4, 0x22]
lsls r0, 16
asrs r0, 16
@@ -9684,7 +9684,7 @@ _080A6CCA:
ldr r1, _080A6CF8 @ =sub_80A6D00
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A6CFC @ =sub_8074F50
+ ldr r0, _080A6CFC @ =RunStoredCallbackWhenAffineAnimEnds
str r0, [r4, 0x1C]
pop {r4-r6}
pop {r0}
@@ -9692,7 +9692,7 @@ _080A6CCA:
.align 2, 0
_080A6CF4: .4byte gBattleAnimTarget
_080A6CF8: .4byte sub_80A6D00
-_080A6CFC: .4byte sub_8074F50
+_080A6CFC: .4byte RunStoredCallbackWhenAffineAnimEnds
thumb_func_end sub_80A6C84
thumb_func_start sub_80A6D00
@@ -9850,7 +9850,7 @@ sub_80A6DF0: @ 80A6DF0
ldr r1, _080A6E24 @ =sub_80A6E2C
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A6E28 @ =sub_8074F6C
+ ldr r0, _080A6E28 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
_080A6E1E:
pop {r4}
@@ -9858,7 +9858,7 @@ _080A6E1E:
bx r0
.align 2, 0
_080A6E24: .4byte sub_80A6E2C
-_080A6E28: .4byte sub_8074F6C
+_080A6E28: .4byte RunStoredCallbackWhenAnimEnds
thumb_func_end sub_80A6DF0
thumb_func_start sub_80A6E2C
diff --git a/asm/battle_anim_effects_2.s b/asm/battle_anim_effects_2.s
index 722ff51ba..67ac6a13e 100644
--- a/asm/battle_anim_effects_2.s
+++ b/asm/battle_anim_effects_2.s
@@ -9,12 +9,12 @@
sub_80A6E48: @ 80A6E48
push {r4,r5,lr}
adds r4, r0, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r5, _080A6E8C @ =gBattleAnimArgs
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
- bl sub_8074FF8
+ bl SetAnimSpriteInitialXOffset
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
@@ -27,10 +27,10 @@ sub_80A6E48: @ 80A6E48
strh r0, [r4, 0x34]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x36]
- ldr r1, _080A6E90 @ =move_anim_8074EE0
+ ldr r1, _080A6E90 @ =DestroySpriteAndMatrix
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r1, _080A6E94 @ =sub_8074BE4
+ ldr r1, _080A6E94 @ =TranslateSpriteInEllipseOverDuration
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
@@ -39,8 +39,8 @@ sub_80A6E48: @ 80A6E48
bx r0
.align 2, 0
_080A6E8C: .4byte gBattleAnimArgs
-_080A6E90: .4byte move_anim_8074EE0
-_080A6E94: .4byte sub_8074BE4
+_080A6E90: .4byte DestroySpriteAndMatrix
+_080A6E94: .4byte TranslateSpriteInEllipseOverDuration
thumb_func_end sub_80A6E48
thumb_func_start sub_80A6E98
@@ -166,7 +166,7 @@ sub_80A6F3C: @ 80A6F3C
adds r0, r3
strh r2, [r0, 0x24]
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080A6F7A:
ldrh r0, [r4, 0x2E]
subs r0, 0x1
@@ -254,7 +254,7 @@ sub_80A7020: @ 80A7020
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r1, _080A704C @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
@@ -262,7 +262,7 @@ sub_80A7020: @ 80A7020
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x38]
- ldr r0, _080A7050 @ =sub_8074C44
+ ldr r0, _080A7050 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080A7054 @ =sub_80A7058
adds r0, r4, 0
@@ -272,7 +272,7 @@ sub_80A7020: @ 80A7020
bx r0
.align 2, 0
_080A704C: .4byte gBattleAnimArgs
-_080A7050: .4byte sub_8074C44
+_080A7050: .4byte WaitAnimForDuration
_080A7054: .4byte sub_80A7058
thumb_func_end sub_80A7020
@@ -438,7 +438,7 @@ _080A7176:
_080A718A:
strh r1, [r0, 0x26]
adds r0, r4, 0
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldr r0, _080A71C8 @ =gTasks
adds r1, r6, r5
lsls r1, 3
@@ -479,7 +479,7 @@ _080A71D0:
sub_80A71D8: @ 80A71D8
push {r4,r5,lr}
adds r4, r0, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r0, _080A71FC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -544,7 +544,7 @@ _080A724C:
orrs r0, r1
strb r0, [r2]
_080A7260:
- ldr r0, _080A7274 @ =sub_8074F6C
+ ldr r0, _080A7274 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
ldr r1, _080A7278 @ =DestroyAnimSprite
adds r0, r4, 0
@@ -553,7 +553,7 @@ _080A7260:
pop {r0}
bx r0
.align 2, 0
-_080A7274: .4byte sub_8074F6C
+_080A7274: .4byte RunStoredCallbackWhenAnimEnds
_080A7278: .4byte DestroyAnimSprite
thumb_func_end sub_80A71D8
@@ -562,8 +562,8 @@ sub_80A727C: @ 80A727C
push {r4,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_8075160
- ldr r0, _080A7298 @ =sub_8074F50
+ bl InitSpritePosToAnimAttacker
+ ldr r0, _080A7298 @ =RunStoredCallbackWhenAffineAnimEnds
str r0, [r4, 0x1C]
ldr r1, _080A729C @ =sub_80A72A0
adds r0, r4, 0
@@ -572,7 +572,7 @@ sub_80A727C: @ 80A727C
pop {r0}
bx r0
.align 2, 0
-_080A7298: .4byte sub_8074F50
+_080A7298: .4byte RunStoredCallbackWhenAffineAnimEnds
_080A729C: .4byte sub_80A72A0
thumb_func_end sub_80A727C
@@ -635,7 +635,7 @@ _080A72EC:
_080A730E:
adds r0, r5, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r4, _080A73BC @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
@@ -671,7 +671,7 @@ _080A730E:
subs r1, r2
lsls r1, 16
asrs r1, 16
- bl sub_8075B30
+ bl ArcTan2Neg
lsls r0, 16
movs r1, 0xF0
lsls r1, 24
@@ -692,7 +692,7 @@ _080A7380:
adds r0, r5, 0
movs r1, 0
adds r2, r3, 0
- bl sub_8075A1C
+ bl TrySetSpriteRotScale
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
mov r0, r8
@@ -1118,7 +1118,7 @@ _080A7690:
strh r0, [r4, 0xA]
movs r0, 0x3F
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -1276,7 +1276,7 @@ _080A77B6:
movs r1, 0
mov r2, sp
mov r3, r10
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
b _080A7842
.align 2, 0
_080A7810: .4byte gBattleAnimAttacker
@@ -1506,7 +1506,7 @@ sub_80A79E8: @ 80A79E8
push {r4,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080A7A10 @ =gUnknown_83E3D18
ldrh r0, [r0, 0x2]
bl IndexOfSpritePaletteTag
@@ -1592,7 +1592,7 @@ sub_80A7A88: @ 80A7A88
sub sp, 0x4
adds r5, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r4, _080A7B28 @ =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
@@ -1636,7 +1636,7 @@ _080A7ACC:
subs r1, r2
lsls r1, 16
asrs r1, 16
- bl sub_8075B30
+ bl ArcTan2Neg
lsls r0, 16
movs r1, 0xC0
lsls r1, 24
@@ -1648,7 +1648,7 @@ _080A7ACC:
adds r0, r5, 0
movs r1, 0
adds r2, r3, 0
- bl sub_8075A1C
+ bl TrySetSpriteRotScale
ldrh r0, [r4, 0x8]
strh r0, [r5, 0x2E]
strh r6, [r5, 0x32]
@@ -1748,7 +1748,7 @@ sub_80A7BC4: @ 80A7BC4
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
movs r0, 0x14
strh r0, [r4, 0x2E]
ldr r5, _080A7C10 @ =gBattleAnimTarget
@@ -1789,7 +1789,7 @@ sub_80A7C1C: @ 80A7C1C
push {r4,lr}
adds r4, r0, 0
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -1907,7 +1907,7 @@ sub_80A7D04: @ 80A7D04
push {r4,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080A7D54 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -1929,7 +1929,7 @@ _080A7D22:
strh r0, [r4, 0x34]
ldrh r0, [r1, 0x6]
strh r0, [r4, 0x36]
- ldr r0, _080A7D5C @ =sub_8074A80
+ ldr r0, _080A7D5C @ =TranslateSpriteInCircleOverDuration
str r0, [r4, 0x1C]
ldr r1, _080A7D60 @ =DestroyAnimSprite
adds r0, r4, 0
@@ -1943,7 +1943,7 @@ _080A7D22:
.align 2, 0
_080A7D54: .4byte gBattleAnimAttacker
_080A7D58: .4byte gBattleAnimArgs
-_080A7D5C: .4byte sub_8074A80
+_080A7D5C: .4byte TranslateSpriteInCircleOverDuration
_080A7D60: .4byte DestroyAnimSprite
thumb_func_end sub_80A7D04
@@ -2094,7 +2094,7 @@ _080A7E48:
adds r0, r6
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldrh r0, [r7]
strh r0, [r5, 0x38]
ldrh r0, [r5, 0x2E]
@@ -2119,7 +2119,7 @@ _080A7EB8: .4byte sub_80A7EBC
sub_80A7EBC: @ 80A7EBC
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080A7F20
@@ -2233,7 +2233,7 @@ _080A7F90: .4byte sub_80A7F94
sub_80A7F94: @ 80A7F94
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080A7FA8
@@ -2252,7 +2252,7 @@ sub_80A7FB0: @ 80A7FB0
lsls r5, 24
lsrs r5, 24
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -2273,7 +2273,7 @@ sub_80A7FB0: @ 80A7FB0
lsrs r0, 4
adds r0, 0x10
movs r1, 0
- bl sub_8075B48
+ bl SetGreyscaleOrOriginalPalette
ldr r1, _080A800C @ =gTasks
lsls r0, r5, 2
adds r0, r5
@@ -2312,7 +2312,7 @@ sub_80A8014: @ 80A8014
cmp r1, r0
bne _080A8064
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -2327,7 +2327,7 @@ sub_80A8014: @ 80A8014
lsrs r0, 4
adds r0, 0x10
movs r1, 0x1
- bl sub_8075B48
+ bl SetGreyscaleOrOriginalPalette
adds r0, r5, 0
bl DestroyAnimVisualTask
_080A8064:
@@ -2350,7 +2350,7 @@ sub_80A8074: @ 80A8074
ldr r0, _080A80C0 @ =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
@@ -2441,7 +2441,7 @@ _080A8128:
movs r3, 0
bl SetSpriteRotScale
ldrb r0, [r4, 0x8]
- bl sub_8076440
+ bl SetBattlerSpriteYOffsetFromYScale
movs r2, 0xC
ldrsh r0, [r4, r2]
cmp r0, 0x20
@@ -2473,7 +2473,7 @@ _080A816E:
movs r3, 0
bl SetSpriteRotScale
ldrb r0, [r4, 0x8]
- bl sub_8076440
+ bl SetBattlerSpriteYOffsetFromYScale
movs r0, 0x2
strh r0, [r4, 0xA]
b _080A81F6
@@ -2504,7 +2504,7 @@ _080A81A4:
movs r3, 0
bl SetSpriteRotScale
ldrb r0, [r4, 0x8]
- bl sub_8076440
+ bl SetBattlerSpriteYOffsetFromYScale
movs r2, 0xC
ldrsh r0, [r4, r2]
cmp r0, 0x20
@@ -2550,7 +2550,7 @@ sub_80A8200: @ 80A8200
lsrs r1, 24
mov r9, r1
movs r0, 0
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ bl CloneBattlerSpriteWithBlend
lsls r0, 16
lsrs r0, 16
mov r8, r0
@@ -2720,7 +2720,7 @@ _080A835C: .4byte gTasks
_080A8360: .4byte gBattleAnimArgs
_080A8364:
ldrb r0, [r5]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2733,7 +2733,7 @@ _080A8364:
strh r2, [r4, 0x10]
ldr r2, _080A8390 @ =gUnknown_83E3E60
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r0, _080A8394 @ =sub_80A8398
str r0, [r4]
_080A838A:
@@ -2774,7 +2774,7 @@ _080A83C0:
b _080A84A8
_080A83CA:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
ldrh r2, [r4, 0x10]
adds r2, 0x3
strh r2, [r4, 0x10]
@@ -2801,7 +2801,7 @@ _080A83CA:
_080A83FC: .4byte gSprites
_080A8400:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
ldr r2, _080A8430 @ =gSprites
movs r0, 0x8
ldrsh r1, [r4, r0]
@@ -2853,7 +2853,7 @@ _080A845C:
b _080A84A8
_080A8464:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
@@ -2881,7 +2881,7 @@ _080A849C:
ldrb r1, [r4, 0x8]
ldr r2, _080A84B0 @ =gUnknown_83E3E60
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
strh r5, [r4, 0xA]
_080A84A8:
pop {r4-r6}
@@ -2902,13 +2902,13 @@ sub_80A84B4: @ 80A84B4
ldr r0, _080A84E4 @ =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080A84E8 @ =gUnknown_83E3E80
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r0, _080A84EC @ =sub_80A84F0
str r0, [r4]
pop {r4}
@@ -2930,7 +2930,7 @@ sub_80A84F0: @ 80A84F0
lsls r0, 3
ldr r1, _080A8518 @ =gTasks
adds r0, r1
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080A8510
@@ -2998,7 +2998,7 @@ _080A856A:
ldr r1, _080A85A4 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A85A8 @ =sub_8074D00
+ ldr r0, _080A85A8 @ =TranslateSpriteLinearFixedPoint
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
@@ -3007,7 +3007,7 @@ _080A856A:
_080A859C: .4byte 0x0000ffc0
_080A85A0: .4byte gBattleAnimAttacker
_080A85A4: .4byte DestroyAnimSprite
-_080A85A8: .4byte sub_8074D00
+_080A85A8: .4byte TranslateSpriteLinearFixedPoint
thumb_func_end sub_80A851C
thumb_func_start sub_80A85AC
@@ -3064,10 +3064,10 @@ _080A85E4:
movs r0, 0x8
strh r0, [r6, 0x22]
_080A8616:
- ldr r1, _080A8630 @ =move_anim_8074EE0
+ ldr r1, _080A8630 @ =DestroySpriteAndMatrix
adds r0, r6, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080A8634 @ =sub_8074F50
+ ldr r0, _080A8634 @ =RunStoredCallbackWhenAffineAnimEnds
str r0, [r6, 0x1C]
pop {r4-r6}
pop {r0}
@@ -3075,8 +3075,8 @@ _080A8616:
.align 2, 0
_080A8628: .4byte gBattleAnimTarget
_080A862C: .4byte gBattleAnimArgs
-_080A8630: .4byte move_anim_8074EE0
-_080A8634: .4byte sub_8074F50
+_080A8630: .4byte DestroySpriteAndMatrix
+_080A8634: .4byte RunStoredCallbackWhenAffineAnimEnds
thumb_func_end sub_80A85AC
thumb_func_start sub_80A8638
@@ -3090,7 +3090,7 @@ sub_80A8638: @ 80A8638
ldr r0, _080A866C @ =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -3099,7 +3099,7 @@ sub_80A8638: @ 80A8638
strh r0, [r4, 0xA]
ldr r2, _080A8670 @ =gUnknown_83E3F1C
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r0, _080A8674 @ =sub_80A8678
str r0, [r4]
pop {r4}
@@ -3121,7 +3121,7 @@ sub_80A8678: @ 80A8678
lsls r0, 3
ldr r1, _080A86A0 @ =gTasks
adds r0, r1
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080A8698
@@ -3146,7 +3146,7 @@ sub_80A86A4: @ 80A86A4
ldr r0, _080A8718 @ =gTasks
adds r4, r1, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r2, 0
@@ -3389,7 +3389,7 @@ sub_80A8874: @ 80A8874
adds r5, r1, r0
ldr r4, _080A88C8 @ =gBattleAnimTarget
ldrb r0, [r4]
- bl sub_807492C
+ bl GetBattlerYCoordWithElevation
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
@@ -3402,10 +3402,10 @@ sub_80A8874: @ 80A8874
strh r1, [r5, 0x10]
strh r1, [r5, 0x12]
ldrb r0, [r4]
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
strh r0, [r5, 0x26]
ldrb r0, [r4]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3609,7 +3609,7 @@ sub_80A8A1C: @ 80A8A1C
movs r5, 0
strh r0, [r4, 0x20]
ldrb r0, [r6]
- bl sub_807492C
+ bl GetBattlerYCoordWithElevation
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
@@ -3622,11 +3622,11 @@ sub_80A8A1C: @ 80A8A1C
strh r5, [r4, 0x36]
ldrb r0, [r6]
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
adds r0, 0x2
strh r0, [r4, 0x38]
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r4, 0x3A]
@@ -3864,7 +3864,7 @@ _080A8BF2:
adds r1, r4, 0
mov r2, sp
adds r3, r7, 0
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
cmp r4, 0
bne _080A8C30
adds r0, r5, 0
@@ -3919,7 +3919,7 @@ _080A8C80: .4byte sub_8075D9C
sub_80A8C84: @ 80A8C84
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080A8C9E
@@ -4128,7 +4128,7 @@ _080A8DFA:
mov r2, sp
mov r3, sp
adds r3, 0x2
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
b _080A8E6C
.align 2, 0
_080A8E40: .4byte gSprites
@@ -4192,7 +4192,7 @@ _080A8E9E:
ldrh r0, [r2]
strh r0, [r5, 0x2E]
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldr r1, _080A8EE4 @ =sub_80A8C84
str r1, [r5, 0x1C]
adds r0, r5, 0
@@ -4252,7 +4252,7 @@ sub_80A8F38: @ 80A8F38
push {r4,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080A8F6C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -4565,14 +4565,14 @@ sub_80A917C: @ 80A917C
ldr r0, _080A91AC @ =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x8]
ldr r2, _080A91B0 @ =gUnknown_83E4128
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r0, _080A91B4 @ =sub_80A91B8
str r0, [r4]
pop {r4}
@@ -4595,7 +4595,7 @@ sub_80A91B8: @ 80A91B8
ldr r1, _080A9208 @ =gTasks
adds r4, r0, r1
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0
@@ -4668,7 +4668,7 @@ _080A9250:
_080A9256:
strh r0, [r4, 0x24]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -4861,7 +4861,7 @@ sub_80A939C: @ 80A939C
movs r0, 0x2
strh r0, [r4, 0x24]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -5411,7 +5411,7 @@ sub_80A97E8: @ 80A97E8
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r6, _080A9850 @ =gBattleAnimAttacker
ldrb r0, [r6]
bl GetBattlerSide
@@ -5474,7 +5474,7 @@ sub_80A9860: @ 80A9860
bne _080A987A
adds r0, r4, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
_080A987A:
movs r1, 0x30
ldrsh r0, [r4, r1]
@@ -5517,9 +5517,9 @@ sub_80A98B0: @ 80A98B0
movs r6, 0x98
_080A98C4:
movs r5, 0
- ldr r1, _080A9918 @ =gUnknown_2022984
+ ldr r1, _080A9918 @ =gBattle_WIN0H
strh r6, [r1]
- ldr r4, _080A991C @ =gUnknown_2022986
+ ldr r4, _080A991C @ =gBattle_WIN0V
movs r0, 0xA0
strh r0, [r4]
ldrh r1, [r1]
@@ -5553,8 +5553,8 @@ _080A98C4:
pop {r0}
bx r0
.align 2, 0
-_080A9918: .4byte gUnknown_2022984
-_080A991C: .4byte gUnknown_2022986
+_080A9918: .4byte gBattle_WIN0H
+_080A991C: .4byte gBattle_WIN0V
_080A9920: .4byte 0x00003f1f
_080A9924: .4byte 0x00003f3f
_080A9928: .4byte gTasks
@@ -5583,7 +5583,7 @@ sub_80A9930: @ 80A9930
lsls r0, r2, 16
cmp r1, r0
blt _080A9970
- ldr r0, _080A9968 @ =gUnknown_2022984
+ ldr r0, _080A9968 @ =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
ldr r0, _080A996C @ =sub_80A9984
@@ -5591,10 +5591,10 @@ sub_80A9930: @ 80A9930
b _080A9978
.align 2, 0
_080A9964: .4byte gTasks
-_080A9968: .4byte gUnknown_2022984
+_080A9968: .4byte gBattle_WIN0H
_080A996C: .4byte sub_80A9984
_080A9970:
- ldr r1, _080A9980 @ =gUnknown_2022984
+ ldr r1, _080A9980 @ =gBattle_WIN0H
lsls r0, r4, 8
orrs r2, r0
strh r2, [r1]
@@ -5603,7 +5603,7 @@ _080A9978:
pop {r0}
bx r0
.align 2, 0
-_080A9980: .4byte gUnknown_2022984
+_080A9980: .4byte gBattle_WIN0H
thumb_func_end sub_80A9930
thumb_func_start sub_80A9984
@@ -5649,9 +5649,9 @@ _080A99D4: .4byte 0x00007fff
_080A99D8:
cmp r0, 0x4
ble _080A9A0C
- ldr r0, _080A9A14 @ =gUnknown_2022984
+ ldr r0, _080A9A14 @ =gBattle_WIN0H
strh r4, [r0]
- ldr r0, _080A9A18 @ =gUnknown_2022986
+ ldr r0, _080A9A18 @ =gBattle_WIN0V
strh r4, [r0]
ldr r4, _080A9A1C @ =0x00003f3f
movs r0, 0x48
@@ -5674,8 +5674,8 @@ _080A9A0C:
pop {r0}
bx r0
.align 2, 0
-_080A9A14: .4byte gUnknown_2022984
-_080A9A18: .4byte gUnknown_2022986
+_080A9A14: .4byte gBattle_WIN0H
+_080A9A18: .4byte gBattle_WIN0V
_080A9A1C: .4byte 0x00003f3f
thumb_func_end sub_80A9984
@@ -5686,7 +5686,7 @@ sub_80A9A20: @ 80A9A20
lsrs r0, 24
adds r6, r0, 0
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _080A9A70 @ =gTasks
@@ -5702,13 +5702,13 @@ sub_80A9A20: @ 80A9A20
cmp r0, 0x1
bne _080A9A7C
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080A9A74 @ =gUnknown_83E4200
adds r0, r5, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r1, _080A9A78 @ =gSprites
lsls r0, r4, 4
adds r0, r4
@@ -5731,7 +5731,7 @@ _080A9A7C:
negs r0, r0
strh r0, [r4, 0x24]
adds r0, r5, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -5755,7 +5755,7 @@ sub_80A9AB0: @ 80A9AB0
lsrs r0, 24
adds r6, r0, 0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _080A9B00 @ =gTasks
@@ -5771,13 +5771,13 @@ sub_80A9AB0: @ 80A9AB0
cmp r0, 0x1
bne _080A9B0C
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080A9B04 @ =gUnknown_83E4200
adds r0, r5, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r1, _080A9B08 @ =gSprites
lsls r0, r4, 4
adds r0, r4
@@ -5800,7 +5800,7 @@ _080A9B0C:
negs r0, r0
strh r0, [r4, 0x24]
adds r0, r5, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -5822,7 +5822,7 @@ sub_80A9B40: @ 80A9B40
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
movs r0, 0x5F
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
@@ -5843,7 +5843,7 @@ sub_80A9B40: @ 80A9B40
lsrs r0, 24
strh r0, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldr r0, _080A9B88 @ =sub_80A9B8C
str r0, [r4, 0x1C]
pop {r4,r5}
@@ -5858,7 +5858,7 @@ _080A9B88: .4byte sub_80A9B8C
sub_80A9B8C: @ 80A9B8C
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _080A9BB6
@@ -5967,7 +5967,7 @@ sub_80A9C4C: @ 80A9C4C
strh r1, [r0, 0x2E]
ldrh r1, [r2, 0x2]
strh r1, [r0, 0x30]
- ldr r1, _080A9C74 @ =sub_8074C44
+ ldr r1, _080A9C74 @ =WaitAnimForDuration
str r1, [r0, 0x1C]
ldr r1, _080A9C78 @ =sub_80A9C7C
bl StoreSpriteCallbackInData6
@@ -5975,7 +5975,7 @@ sub_80A9C4C: @ 80A9C4C
bx r0
.align 2, 0
_080A9C70: .4byte gBattleAnimArgs
-_080A9C74: .4byte sub_8074C44
+_080A9C74: .4byte WaitAnimForDuration
_080A9C78: .4byte sub_80A9C7C
thumb_func_end sub_80A9C4C
@@ -6082,13 +6082,13 @@ _080A9D2A:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080A9DAC @ =gFile_graphics_battle_anims_backgrounds_attract_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080A9DB0 @ =gFile_graphics_battle_anims_backgrounds_attract_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
- bl sub_80753B4
+ bl AnimLoadCompressedBgGfx
ldr r0, _080A9DB4 @ =gFile_graphics_battle_anims_backgrounds_attract_palette
mov r1, sp
ldrb r1, [r1, 0x8]
@@ -6360,7 +6360,7 @@ _080A9F98:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080A9FB8 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
b _080A9FC6
.align 2, 0
_080A9FB4: .4byte gBattleAnimTarget
@@ -6369,14 +6369,14 @@ _080A9FBC:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080AA010 @ =gFile_graphics_battle_anims_backgrounds_scary_face_opponent_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
_080A9FC6:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080AA014 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
- bl sub_80753B4
+ bl AnimLoadCompressedBgGfx
ldr r0, _080AA018 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette
mov r1, sp
ldrb r1, [r1, 0x8]
@@ -6907,7 +6907,7 @@ sub_80AA3F0: @ 80AA3F0
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080AA404 @ =sub_80AA3D4
str r0, [r4, 0x1C]
pop {r4}
@@ -7428,7 +7428,7 @@ sub_80AA7C8: @ 80AA7C8
lsrs r5, 24
ldr r0, _080AA7FC @ =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -7439,7 +7439,7 @@ sub_80AA7C8: @ 80AA7C8
adds r4, r0
ldr r2, _080AA804 @ =gUnknown_83E4410
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r0, _080AA808 @ =sub_80AA80C
str r0, [r4]
pop {r4,r5}
@@ -7462,7 +7462,7 @@ sub_80AA80C: @ 80AA80C
lsls r0, 3
ldr r1, _080AA834 @ =gTasks
adds r0, r1
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080AA82C
@@ -7640,7 +7640,7 @@ _080AA95A:
lsrs r0, 4
adds r0, 0x10
movs r1, 0
- bl sub_8075B48
+ bl SetGreyscaleOrOriginalPalette
_080AA978:
movs r0, 0x2E
ldrsh r1, [r4, r0]
@@ -7857,7 +7857,7 @@ sub_80AAAE4: @ 80AAAE4
adds r3, r5, 0
adds r3, 0x22
movs r1, 0
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldrh r0, [r5, 0x22]
adds r0, 0x28
strh r0, [r5, 0x22]
diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s
index d1356c619..004ad8786 100644
--- a/asm/battle_anim_effects_3.s
+++ b/asm/battle_anim_effects_3.s
@@ -128,7 +128,7 @@ sub_80DE39C: @ 80DE39C
adds r4, r0, 0
movs r0, 0x5A
strh r0, [r4, 0x2E]
- ldr r0, _080DE3D8 @ =sub_8074C44
+ ldr r0, _080DE3D8 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
movs r0, 0x7
strh r0, [r4, 0x30]
@@ -152,7 +152,7 @@ sub_80DE39C: @ 80DE39C
pop {r0}
bx r0
.align 2, 0
-_080DE3D8: .4byte sub_8074C44
+_080DE3D8: .4byte WaitAnimForDuration
_080DE3DC: .4byte sub_80DE3E0
thumb_func_end sub_80DE39C
@@ -228,7 +228,7 @@ sub_80DE440: @ 80DE440
adds r6, r0, 0
adds r0, r5, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldrh r0, [r5, 0x20]
subs r0, r7
lsls r0, 16
@@ -237,7 +237,7 @@ sub_80DE440: @ 80DE440
subs r1, r6
lsls r1, 16
asrs r1, 16
- bl sub_8075B30
+ bl ArcTan2Neg
lsls r0, 16
movs r1, 0xC0
lsls r1, 23
@@ -259,7 +259,7 @@ _080DE49E:
adds r0, r5, 0
movs r1, 0
adds r2, r3, 0
- bl sub_8075A1C
+ bl TrySetSpriteRotScale
ldr r0, _080DE4D0 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r5, 0x2E]
@@ -572,7 +572,7 @@ sub_80DE6F0: @ 80DE6F0
adds r1, r2
ldr r0, _080DE710 @ =sub_80DE718
str r0, [r1]
- ldr r1, _080DE714 @ =gUnknown_2037EE2
+ ldr r1, _080DE714 @ =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
@@ -580,7 +580,7 @@ sub_80DE6F0: @ 80DE6F0
.align 2, 0
_080DE70C: .4byte gTasks
_080DE710: .4byte sub_80DE718
-_080DE714: .4byte gUnknown_2037EE2
+_080DE714: .4byte gAnimVisualTaskCount
thumb_func_end sub_80DE6F0
thumb_func_start sub_80DE718
@@ -674,7 +674,7 @@ sub_80DE7B4: @ 80DE7B4
adds r1, r2
ldr r0, _080DE7D4 @ =sub_80DE7DC
str r0, [r1]
- ldr r1, _080DE7D8 @ =gUnknown_2037EE2
+ ldr r1, _080DE7D8 @ =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
@@ -682,7 +682,7 @@ sub_80DE7B4: @ 80DE7B4
.align 2, 0
_080DE7D0: .4byte gTasks
_080DE7D4: .4byte sub_80DE7DC
-_080DE7D8: .4byte gUnknown_2037EE2
+_080DE7D8: .4byte gAnimVisualTaskCount
thumb_func_end sub_80DE7B4
thumb_func_start sub_80DE7DC
@@ -799,7 +799,7 @@ sub_80DE8B0: @ 80DE8B0
sub sp, 0x4
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080DE914 @ =gBattleAnimTarget
ldrb r0, [r0]
mov r5, sp
@@ -807,7 +807,7 @@ sub_80DE8B0: @ 80DE8B0
movs r1, 0
mov r2, sp
adds r3, r5, 0
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldr r0, _080DE918 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -834,7 +834,7 @@ _080DE8E4:
ldr r0, _080DE920 @ =0x0000ffce
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080DE924 @ =sub_80DE928
str r0, [r4, 0x1C]
add sp, 0x4
@@ -853,7 +853,7 @@ _080DE924: .4byte sub_80DE928
sub_80DE928: @ 80DE928
push {r4,lr}
adds r4, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080DE94A
@@ -861,7 +861,7 @@ sub_80DE928: @ 80DE928
movs r0, 0x1E
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
- ldr r0, _080DE950 @ =sub_8074C44
+ ldr r0, _080DE950 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080DE954 @ =sub_80DE958
adds r0, r4, 0
@@ -871,7 +871,7 @@ _080DE94A:
pop {r0}
bx r0
.align 2, 0
-_080DE950: .4byte sub_8074C44
+_080DE950: .4byte WaitAnimForDuration
_080DE954: .4byte sub_80DE958
thumb_func_end sub_80DE928
@@ -918,17 +918,17 @@ _080DE998:
sub_80DE99C: @ 80DE99C
push {r4,r5,lr}
adds r4, r0, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r5, _080DE9CC @ =gBattleAnimArgs
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
- bl sub_8074FF8
+ bl SetAnimSpriteInitialXOffset
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r0, _080DE9D0 @ =sub_8074F6C
+ ldr r0, _080DE9D0 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
ldr r1, _080DE9D4 @ =DestroyAnimSprite
adds r0, r4, 0
@@ -938,7 +938,7 @@ sub_80DE99C: @ 80DE99C
bx r0
.align 2, 0
_080DE9CC: .4byte gBattleAnimArgs
-_080DE9D0: .4byte sub_8074F6C
+_080DE9D0: .4byte RunStoredCallbackWhenAnimEnds
_080DE9D4: .4byte DestroyAnimSprite
thumb_func_end sub_80DE99C
@@ -951,12 +951,12 @@ sub_80DE9D8: @ 80DE9D8
cmp r0, 0
bne _080DEA38
adds r0, r4, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r5, _080DEA14 @ =gBattleAnimArgs
movs r2, 0
ldrsh r1, [r5, r2]
adds r0, r4, 0
- bl sub_8074FF8
+ bl SetAnimSpriteInitialXOffset
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -1127,10 +1127,10 @@ sub_80DEB20: @ 80DEB20
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
- ldr r0, _080DEB80 @ =gUnknown_2022984
+ ldr r0, _080DEB80 @ =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r4, _080DEB84 @ =gUnknown_2022986
+ ldr r4, _080DEB84 @ =gBattle_WIN0V
strh r1, [r4]
movs r0, 0x40
movs r1, 0
@@ -1140,7 +1140,7 @@ sub_80DEB20: @ 80DEB20
bl SetGpuReg
adds r0, r5, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldrb r1, [r5, 0x1]
movs r0, 0xD
negs r0, r0
@@ -1161,8 +1161,8 @@ sub_80DEB20: @ 80DEB20
bx r0
.align 2, 0
_080DEB7C: .4byte 0x00001f3f
-_080DEB80: .4byte gUnknown_2022984
-_080DEB84: .4byte gUnknown_2022986
+_080DEB80: .4byte gBattle_WIN0H
+_080DEB84: .4byte gBattle_WIN0V
_080DEB88: .4byte sub_80DEB8C
thumb_func_end sub_80DEB20
@@ -1414,7 +1414,7 @@ sub_80DED48: @ 80DED48
bne _080DEDA6
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -1488,11 +1488,11 @@ sub_80DEDD8: @ 80DEDD8
ldr r1, _080DEE20 @ =gUnknown_202298A
movs r0, 0xA0
strh r0, [r1]
- ldr r0, _080DEE24 @ =gUnknown_2022984
+ ldr r0, _080DEE24 @ =gBattle_WIN0H
ldrh r1, [r0]
movs r0, 0x42
bl SetGpuReg
- ldr r0, _080DEE28 @ =gUnknown_2022986
+ ldr r0, _080DEE28 @ =gBattle_WIN0V
ldrh r1, [r0]
movs r0, 0x46
bl SetGpuReg
@@ -1502,8 +1502,8 @@ _080DEE14: .4byte 0x00001f3f
_080DEE18: .4byte gUnknown_2022988
_080DEE1C: .4byte 0x000098f0
_080DEE20: .4byte gUnknown_202298A
-_080DEE24: .4byte gUnknown_2022984
-_080DEE28: .4byte gUnknown_2022986
+_080DEE24: .4byte gBattle_WIN0H
+_080DEE28: .4byte gBattle_WIN0V
_080DEE2C:
ldr r1, _080DEE68 @ =0x00001f3f
movs r0, 0x48
@@ -1712,11 +1712,11 @@ _080DEFC8:
ldr r4, _080DF010 @ =gBattleAnimTarget
_080DEFCA:
ldrb r0, [r4]
- bl sub_807492C
+ bl GetBattlerYCoordWithElevation
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r7, r0, 24
adds r0, r6, 0
@@ -2021,7 +2021,7 @@ sub_80DF1DC: @ 80DF1DC
strh r0, [r4, 0x12]
strh r5, [r4, 0x14]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -2109,7 +2109,7 @@ _080DF2A8:
lsrs r4, r0, 24
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -2155,7 +2155,7 @@ _080DF324:
lsrs r1, 24
ldr r2, _080DF348 @ =gUnknown_83FF080
adds r0, r6, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldrh r0, [r6, 0xA]
adds r0, 0x1
strh r0, [r6, 0xA]
@@ -2168,7 +2168,7 @@ _080DF344: .4byte SpriteCallbackDummy
_080DF348: .4byte gUnknown_83FF080
_080DF34C:
adds r0, r6, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -2329,7 +2329,7 @@ sub_80DF468: @ 80DF468
bne _080DF47C
adds r0, r5, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
_080DF47C:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
@@ -2437,13 +2437,13 @@ sub_80DF524: @ 80DF524
_080DF544: .4byte gTasks
_080DF548:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080DF564 @ =gUnknown_83FF130
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -2452,7 +2452,7 @@ _080DF548:
_080DF564: .4byte gUnknown_83FF130
_080DF568:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080DF57A
@@ -2469,7 +2469,7 @@ sub_80DF580: @ 80DF580
push {r4-r6,lr}
adds r5, r0, 0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r6, r0, 24
movs r1, 0x2E
@@ -2857,13 +2857,13 @@ sub_80DF848: @ 80DF848
cmp r0, 0
bne _080DF888
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080DF884 @ =gUnknown_83FF198
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -2873,7 +2873,7 @@ _080DF880: .4byte gTasks
_080DF884: .4byte gUnknown_83FF198
_080DF888:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080DF89A
@@ -2901,13 +2901,13 @@ sub_80DF8A0: @ 80DF8A0
cmp r0, 0
bne _080DF8E0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080DF8DC @ =gUnknown_83FF1C0
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -2917,7 +2917,7 @@ _080DF8D8: .4byte gTasks
_080DF8DC: .4byte gUnknown_83FF1C0
_080DF8E0:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080DF8F2
@@ -2943,7 +2943,7 @@ sub_80DF8F8: @ 80DF8F8
_080DF90A:
adds r0, r4, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
movs r0, 0x90
lsls r0, 4
strh r0, [r4, 0x30]
@@ -3002,13 +3002,13 @@ sub_80DF964: @ 80DF964
cmp r0, 0
bne _080DF9A4
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080DF9A0 @ =gUnknown_83FF210
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -3018,7 +3018,7 @@ _080DF99C: .4byte gTasks
_080DF9A0: .4byte gUnknown_83FF210
_080DF9A4:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080DF9B6
@@ -3069,7 +3069,7 @@ _080DFA00:
bl SetGpuReg
ldr r0, _080DFA24 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3234,7 +3234,7 @@ _080DFB58:
bl SetGpuReg
ldr r0, _080DFB7C @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3411,13 +3411,13 @@ _080DFCCE:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080DFD1C @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080DFD20 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
- bl sub_80753B4
+ bl AnimLoadCompressedBgGfx
ldr r0, _080DFD24 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
mov r1, sp
ldrb r1, [r1, 0x8]
@@ -3603,7 +3603,7 @@ _080DFE66:
strh r0, [r1, 0x8]
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -4053,13 +4053,13 @@ _080E01FC:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080E0250 @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080E0254 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
- bl sub_80753B4
+ bl AnimLoadCompressedBgGfx
ldr r0, _080E0258 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
mov r1, sp
ldrb r1, [r1, 0x8]
@@ -4371,13 +4371,13 @@ sub_80E0488: @ 80E0488
cmp r0, 0
bne _080E04C8
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r2, _080E04C4 @ =gUnknown_83FF290
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -4387,7 +4387,7 @@ _080E04C0: .4byte gTasks
_080E04C4: .4byte gUnknown_83FF290
_080E04C8:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080E04DA
@@ -4410,7 +4410,7 @@ sub_80E04E0: @ 80E04E0
bne _080E04FE
adds r0, r4, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
@@ -4523,7 +4523,7 @@ _080E059C:
subs r0, 0x1
strh r0, [r4, 0x14]
ldrb r0, [r5]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -4625,7 +4625,7 @@ _080E065C:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
@@ -4666,7 +4666,7 @@ _080E06B0:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldrh r1, [r4, 0xA]
adds r1, 0x1
strh r1, [r4, 0xA]
@@ -4710,7 +4710,7 @@ _080E0708:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
@@ -4874,7 +4874,7 @@ sub_80E0850: @ 80E0850
strh r0, [r4, 0x24]
ldr r0, _080E089C @ =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -5044,7 +5044,7 @@ _080E09BA:
ldrh r0, [r7, 0x26]
lsls r0, 24
lsrs r0, 24
- bl sub_80759DC
+ bl SetBattlerSpriteYOffsetFromRotation
ldr r2, _080E0A28 @ =gSprites
movs r0, 0x26
ldrsh r1, [r7, r0]
@@ -5237,7 +5237,7 @@ _080E0B3E:
strh r0, [r2, 0x1E]
mov r1, r8
ldrb r0, [r1]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080E0B7C @ =gTasks
@@ -5276,7 +5276,7 @@ _080E0B88:
movs r3, 0
bl SetSpriteRotScale
adds r0, r5, 0
- bl sub_8076440
+ bl SetBattlerSpriteYOffsetFromYScale
lsls r2, r5, 4
b _080E0BE8
_080E0BA0:
@@ -5295,7 +5295,7 @@ _080E0BB2:
movs r1, 0xD0
bl SetSpriteRotScale
adds r0, r5, 0
- bl sub_8076440
+ bl SetBattlerSpriteYOffsetFromYScale
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -5535,10 +5535,10 @@ sub_80E0D74: @ 80E0D74
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
- ldr r0, _080E0DDC @ =gUnknown_2022984
+ ldr r0, _080E0DDC @ =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r4, _080E0DE0 @ =gUnknown_2022986
+ ldr r4, _080E0DE0 @ =gBattle_WIN0V
strh r1, [r4]
movs r0, 0x40
movs r1, 0
@@ -5551,7 +5551,7 @@ sub_80E0D74: @ 80E0D74
strh r0, [r5, 0x2E]
adds r0, r5, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldrb r1, [r5, 0x1]
movs r0, 0xD
negs r0, r0
@@ -5572,8 +5572,8 @@ sub_80E0D74: @ 80E0D74
bx r0
.align 2, 0
_080E0DD8: .4byte 0x00001f3f
-_080E0DDC: .4byte gUnknown_2022984
-_080E0DE0: .4byte gUnknown_2022986
+_080E0DDC: .4byte gBattle_WIN0H
+_080E0DE0: .4byte gBattle_WIN0V
_080E0DE4: .4byte gBattleAnimArgs
_080E0DE8: .4byte sub_80E0DEC
thumb_func_end sub_80E0D74
@@ -5825,7 +5825,7 @@ sub_80E0FB8: @ 80E0FB8
lsrs r0, 24
str r0, [sp, 0x18]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r0, _080E1040 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -5979,7 +5979,7 @@ _080E110E:
_080E1112:
ldr r0, _080E1200 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r7, r0, 24
ldr r5, _080E1200 @ =gBattleAnimAttacker
@@ -6186,7 +6186,7 @@ sub_80E1274: @ 80E1274
str r4, [sp]
adds r0, r6, 0
movs r1, 0x1
- bl sub_8075A1C
+ bl TrySetSpriteRotScale
ldrh r0, [r5, 0x20]
adds r0, 0x1
strh r0, [r5, 0x20]
@@ -6197,8 +6197,8 @@ sub_80E1274: @ 80E1274
adds r0, r6, 0
bl sub_8075AD8
adds r0, r6, 0
- bl sub_8076B20
- ldr r0, _080E12F4 @ =sub_8074FA8
+ bl DestroySpriteAndFreeResources_
+ ldr r0, _080E12F4 @ =DestroyAnimVisualTaskAndDisableBlend
str r0, [r5]
_080E12E2:
add sp, 0x4
@@ -6208,7 +6208,7 @@ _080E12E2:
.align 2, 0
_080E12EC: .4byte gTasks
_080E12F0: .4byte gSprites
-_080E12F4: .4byte sub_8074FA8
+_080E12F4: .4byte DestroyAnimVisualTaskAndDisableBlend
thumb_func_end sub_80E1274
thumb_func_start sub_80E12F8
@@ -6262,7 +6262,7 @@ _080E1326:
strh r0, [r4, 0x18]
_080E1358:
adds r0, r5, 0
- bl sub_807492C
+ bl GetBattlerYCoordWithElevation
lsls r0, 24
lsrs r0, 24
subs r0, 0x22
@@ -6276,12 +6276,12 @@ _080E136C:
strh r0, [r4, 0x24]
ldr r0, _080E13A8 @ =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
adds r0, r5, 0
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -6389,7 +6389,7 @@ sub_80E1450: @ 80E1450
ldr r1, _080E1484 @ =gTasks
adds r6, r0, r1
ldrb r0, [r6, 0x12]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -6743,14 +6743,14 @@ sub_80E1704: @ 80E1704
strh r0, [r4, 0x8]
ldr r0, _080E1740 @ =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x26]
ldr r2, _080E1744 @ =gUnknown_83FF3D0
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r0, _080E1748 @ =sub_80E174C
str r0, [r4]
pop {r4}
@@ -6826,7 +6826,7 @@ _080E17C0:
adds r0, r4
lsls r0, 3
adds r0, r6
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080E17D8
@@ -6920,7 +6920,7 @@ sub_80E186C: @ 80E186C
adds r4, r0, 0
ldrh r6, [r4, 0x20]
ldrh r5, [r4, 0x22]
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r0, _080E18B4 @ =gBattleAnimArgs
ldrb r1, [r0]
adds r0, r4, 0
@@ -7001,7 +7001,7 @@ sub_80E18BC: @ 80E18BC
cmp r0, 0x3
ble _080E1922
adds r0, r5, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080E1922:
pop {r4,r5}
pop {r0}
@@ -7218,7 +7218,7 @@ _080E1AAA:
bgt _080E1ACA
adds r0, r5, 0
bl DestroyTask
- ldr r1, _080E1AD4 @ =gUnknown_2037EE2
+ ldr r1, _080E1AD4 @ =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
@@ -7229,7 +7229,7 @@ _080E1ACA:
pop {r0}
bx r0
.align 2, 0
-_080E1AD4: .4byte gUnknown_2037EE2
+_080E1AD4: .4byte gAnimVisualTaskCount
thumb_func_end sub_80E1990
thumb_func_start sub_80E1AD8
@@ -7619,14 +7619,14 @@ _080E1DA2:
strh r0, [r5, 0x14]
ldr r0, _080E1DF4 @ =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r5, 0x26]
ldr r2, _080E1DF8 @ =gUnknown_83FF52C
adds r0, r5, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r0, _080E1DFC @ =sub_80E1E00
str r0, [r5]
pop {r4,r5}
@@ -7679,7 +7679,7 @@ _080E1E3A:
bl sub_80E1E98
_080E1E4A:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
@@ -7701,7 +7701,7 @@ _080E1E6C:
lsrs r1, 24
ldr r2, _080E1E80 @ =gUnknown_83FF52C
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
b _080E1E92
.align 2, 0
_080E1E80: .4byte gUnknown_83FF52C
@@ -7892,7 +7892,7 @@ sub_80E1FC4: @ 80E1FC4
ldrh r0, [r1, 0x2]
strh r0, [r4, 0xA]
ldrb r0, [r1]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, _080E2014 @ =gSprites
@@ -8168,7 +8168,7 @@ sub_80E21CC: @ 80E21CC
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r4, 24
lsrs r4, 24
lsls r0, 16
@@ -8190,7 +8190,7 @@ _080E2224:
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r4, 24
lsrs r4, 24
lsls r0, 16
@@ -8210,7 +8210,7 @@ _080E2248:
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r4, 24
lsrs r4, 24
lsls r0, 16
@@ -8565,7 +8565,7 @@ sub_80E24E0: @ 80E24E0
ldr r1, _080E2510 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080E2514 @ =sub_8075764
+ ldr r0, _080E2514 @ =InitAndRunAnimFastLinearTranslation
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
@@ -8573,7 +8573,7 @@ sub_80E24E0: @ 80E24E0
.align 2, 0
_080E250C: .4byte gBattleAnimArgs
_080E2510: .4byte DestroyAnimSprite
-_080E2514: .4byte sub_8075764
+_080E2514: .4byte InitAndRunAnimFastLinearTranslation
thumb_func_end sub_80E24E0
thumb_func_start sub_80E2518
@@ -8622,7 +8622,7 @@ sub_80E2518: @ 80E2518
mov r1, r8
ldrb r0, [r1]
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r4, 24
lsrs r4, 24
lsls r0, 16
@@ -8694,7 +8694,7 @@ _080E258A:
adds r0, r1
lsls r0, 2
adds r0, r4
- bl sub_8075068
+ bl InitAnimArcTranslation
mov r1, r10
ldrb r0, [r1]
bl GetBattlerSide
@@ -8778,7 +8778,7 @@ _080E269A:
lsls r0, 2
ldr r1, _080E26CC @ =gSprites
adds r0, r1
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
@@ -8797,7 +8797,7 @@ _080E26D0:
lsls r0, 2
ldr r1, _080E26F0 @ =gSprites
adds r0, r1
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080E276E
@@ -8938,7 +8938,7 @@ _080E27C0:
strb r0, [r4, 0x3]
adds r0, r5, 0
movs r1, 0x4
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
subs r0, 0x8
b _080E280E
.align 2, 0
@@ -8948,7 +8948,7 @@ _080E2800: .4byte 0xfffffc00
_080E2804:
adds r0, r5, 0
movs r1, 0x5
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
adds r0, 0x8
_080E280E:
strh r0, [r4, 0x20]
@@ -9091,14 +9091,14 @@ _080E28F8:
ldrh r0, [r2, 0x2]
strh r0, [r4, 0x8]
ldrb r0, [r2]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x26]
ldr r2, _080E292C @ =gUnknown_83FF65C
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r0, _080E2930 @ =sub_80E2934
str r0, [r4]
_080E2920:
@@ -9160,7 +9160,7 @@ _080E298C:
strh r1, [r0, 0x24]
_080E298E:
adds r0, r4, 0
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
@@ -9188,7 +9188,7 @@ _080E298E:
lsls r1, 24
lsrs r1, 24
ldr r2, _080E29E0 @ =gUnknown_83FF65C
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
strh r5, [r4, 0xA]
strh r5, [r4, 0xC]
b _080E29EA
@@ -9231,7 +9231,7 @@ _080E2A0E:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x2
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
strh r0, [r5, 0x22]
movs r1, 0x22
ldrsh r0, [r5, r1]
@@ -9613,7 +9613,7 @@ sub_80E2CE4: @ 80E2CE4
ldr r0, _080E2D34 @ =gTasks
adds r6, r1, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
@@ -9902,7 +9902,7 @@ sub_80E2F14: @ 80E2F14
bne _080E2F38
adds r0, r4, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080E2F34 @ =gBattleAnimAttacker
b _080E2F3A
.align 2, 0
@@ -9932,7 +9932,7 @@ _080E2F5E:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r2, 0x3
ands r2, r0
lsls r2, 2
@@ -10010,7 +10010,7 @@ _080E2FFC:
lsls r0, 24
lsrs r0, 24
movs r1, 0x5
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
subs r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
@@ -10024,7 +10024,7 @@ _080E3018:
lsls r0, 24
lsrs r0, 24
movs r1, 0x5
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
subs r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
@@ -10032,7 +10032,7 @@ _080E3018:
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
adds r0, 0x4
b _080E3076
_080E303A:
@@ -10040,7 +10040,7 @@ _080E303A:
lsls r0, 24
lsrs r0, 24
movs r1, 0x4
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
adds r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
@@ -10054,7 +10054,7 @@ _080E3056:
lsls r0, 24
lsrs r0, 24
movs r1, 0x4
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
adds r0, 0x4
lsls r0, 16
lsrs r5, r0, 16
@@ -10063,7 +10063,7 @@ _080E3056:
lsrs r0, 24
movs r1, 0x2
_080E3070:
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
subs r0, 0x4
_080E3076:
lsls r0, 16
@@ -10107,11 +10107,11 @@ _080E30B2:
strh r0, [r4, 0x34]
strh r1, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
b _080E3188
_080E30C8:
adds r0, r4, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080E3196
@@ -10360,7 +10360,7 @@ sub_80E3294: @ 80E3294
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r5, r0, 24
adds r2, r5, 0
@@ -10471,7 +10471,7 @@ sub_80E3374: @ 80E3374
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r3, r0, 24
ldr r1, _080E33A0 @ =gTasks
@@ -10554,7 +10554,7 @@ _080E3412:
bne _080E34C6
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10627,7 +10627,7 @@ _080E34A4:
bne _080E34C6
movs r0, 0x40
negs r0, r0
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10724,7 +10724,7 @@ _080E3564:
cmp r0, 0
blt _080E365E
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10753,7 +10753,7 @@ _080E3588:
cmp r1, 0x7F
ble _080E365E
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10797,7 +10797,7 @@ _080E35F8:
cmp r0, 0x8
ble _080E365E
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10856,7 +10856,7 @@ sub_80E3664: @ 80E3664
lsls r0, 24
lsrs r7, r0, 24
movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ bl CloneBattlerSpriteWithBlend
lsls r0, 16
lsrs r1, r0, 16
str r1, [sp]
@@ -10864,7 +10864,7 @@ sub_80E3664: @ 80E3664
cmp r6, 0
blt _080E36A6
movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ bl CloneBattlerSpriteWithBlend
lsls r0, 16
lsrs r1, r0, 16
mov r9, r1
@@ -11251,7 +11251,7 @@ _080E3964:
.4byte _080E3D90
_080E3978:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _080E39C4 @ =gTasks
@@ -11392,7 +11392,7 @@ _080E3AA0:
ldrh r5, [r1, 0x2]
_080E3AA2:
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, _080E3AC8 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -11460,7 +11460,7 @@ _080E3B30:
ldrh r5, [r1, 0x2]
_080E3B32:
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, _080E3BD0 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -11682,7 +11682,7 @@ _080E3D04: .4byte 0x0000ffff
_080E3D08: .4byte gTasks
_080E3D0C:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _080E3D58 @ =gTasks
@@ -11699,7 +11699,7 @@ _080E3D0C:
lsls r0, 2
ldr r5, _080E3D5C @ =gSprites
adds r0, r5
- bl sub_8076B20
+ bl DestroySpriteAndFreeResources_
ldr r0, _080E3D60 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -11746,7 +11746,7 @@ _080E3D82:
_080E3D8C: .4byte gTasks
_080E3D90:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _080E3E04 @ =gTasks
@@ -11883,7 +11883,7 @@ _080E3E96:
cmp r1, r0
bne _080E3F28
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -11917,7 +11917,7 @@ _080E3E96:
cmp r0, 0x1
bne _080E3FB8
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, _080E3F24 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -12235,7 +12235,7 @@ sub_80E4160: @ 80E4160
ldr r0, _080E41C8 @ =gTasks
adds r4, r1, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
@@ -12532,7 +12532,7 @@ sub_80E43A4: @ 80E43A4
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x2
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
strh r0, [r5, 0x22]
lsls r0, 16
asrs r0, 16
@@ -12688,7 +12688,7 @@ _080E44D6:
b _080E44E4
_080E44DE:
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080E44E4:
pop {r4}
pop {r0}
@@ -12757,14 +12757,14 @@ sub_80E4540: @ 80E4540
strh r0, [r4, 0x8]
ldr r0, _080E457C @ =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
strh r1, [r4, 0x26]
ldr r2, _080E4580 @ =gUnknown_83FF7A8
adds r0, r4, 0
- bl sub_80762D0
+ bl PrepareAffineAnimInTaskData
ldr r0, _080E4584 @ =sub_80E4588
str r0, [r4]
pop {r4}
@@ -12840,7 +12840,7 @@ _080E45FC:
adds r0, r4
lsls r0, 3
adds r0, r6
- bl sub_8076308
+ bl RunAffineAnimFromTaskData
lsls r0, 24
cmp r0, 0
bne _080E4614
diff --git a/asm/battle_anim_mons.s b/asm/battle_anim_mons.s
deleted file mode 100644
index ddb5d6977..000000000
--- a/asm/battle_anim_mons.s
+++ /dev/null
@@ -1,6343 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start GetBattlerSpriteCoord
-GetBattlerSpriteCoord: @ 8074480
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r4, 0x4
- bhi _08074500
- lsls r0, r4, 2
- ldr r1, _08074498 @ =_0807449C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08074498: .4byte _0807449C
- .align 2, 0
-_0807449C:
- .4byte _080744B0
- .4byte _080744D8
- .4byte _080744B0
- .4byte _08074500
- .4byte _08074500
-_080744B0:
- ldr r4, _080744D0 @ =gUnknown_83AE01C
- adds r0, r5, 0
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 22
- ldr r1, _080744D4 @ =gBattleTypeFlags
- ldr r1, [r1]
- movs r2, 0x1
- ands r1, r2
- lsls r1, 4
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- b _08074588
- .align 2, 0
-_080744D0: .4byte gUnknown_83AE01C
-_080744D4: .4byte gBattleTypeFlags
-_080744D8:
- ldr r4, _080744F8 @ =gUnknown_83AE01C
- adds r0, r5, 0
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 22
- ldr r1, _080744FC @ =gBattleTypeFlags
- ldr r1, [r1]
- movs r2, 0x1
- ands r1, r2
- lsls r1, 4
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0, 0x1]
- b _08074588
- .align 2, 0
-_080744F8: .4byte gUnknown_83AE01C
-_080744FC: .4byte gBattleTypeFlags
-_08074500:
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08074538
- ldr r0, _0807452C @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08074570
- ldr r1, _08074530 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08074534 @ =gEnemyParty
- b _08074556
- .align 2, 0
-_0807452C: .4byte gBattleSpritesDataPtr
-_08074530: .4byte gBattlerPartyIndexes
-_08074534: .4byte gEnemyParty
-_08074538:
- ldr r0, _08074564 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08074570
- ldr r1, _08074568 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807456C @ =gPlayerParty
-_08074556:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- b _08074572
- .align 2, 0
-_08074564: .4byte gBattleSpritesDataPtr
-_08074568: .4byte gBattlerPartyIndexes
-_0807456C: .4byte gPlayerParty
-_08074570:
- ldrh r1, [r1, 0x2]
-_08074572:
- cmp r4, 0x3
- bne _0807457C
- adds r0, r5, 0
- movs r2, 0x1
- b _08074580
-_0807457C:
- adds r0, r5, 0
- movs r2, 0
-_08074580:
- bl sub_80747AC
- lsls r0, 24
- lsrs r0, 24
-_08074588:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetBattlerSpriteCoord
-
- thumb_func_start sub_8074590
-sub_8074590: @ 8074590
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r7, r4, 0
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08074674
- cmp r4, 0xC9
- bne _08074638
- ldr r0, _080745D8 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, r1, r0
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- bne _080745E4
- ldr r1, _080745DC @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080745E0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- b _080745EA
- .align 2, 0
-_080745D8: .4byte gBattleSpritesDataPtr
-_080745DC: .4byte gBattlerPartyIndexes
-_080745E0: .4byte gPlayerParty
-_080745E4:
- ldr r0, _08074620 @ =gTransformedPersonalities
- adds r0, r1, r0
- ldr r2, [r0]
-_080745EA:
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _08074624
- adds r0, r7, 0
- b _0807462E
- .align 2, 0
-_08074620: .4byte gTransformedPersonalities
-_08074624:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_0807462E:
- ldr r1, _08074634 @ =gUnknown_8235E6C
- lsls r0, 2
- b _0807473C
- .align 2, 0
-_08074634: .4byte gUnknown_8235E6C
-_08074638:
- ldr r0, _0807464C @ =0x00000181
- cmp r4, r0
- bne _08074658
- ldr r0, _08074650 @ =gUnknown_83AE050
- ldr r1, _08074654 @ =gBattleMonForms
- adds r1, r5, r1
- ldrb r1, [r1]
- adds r1, r0
- ldrb r0, [r1]
- b _08074740
- .align 2, 0
-_0807464C: .4byte 0x00000181
-_08074650: .4byte gUnknown_83AE050
-_08074654: .4byte gBattleMonForms
-_08074658:
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08074668
- ldr r0, _08074664 @ =gUnknown_8235E6C
- b _0807473E
- .align 2, 0
-_08074664: .4byte gUnknown_8235E6C
-_08074668:
- ldr r1, _08074670 @ =gUnknown_8235E6C
- lsls r0, r4, 2
- b _0807473C
- .align 2, 0
-_08074670: .4byte gUnknown_8235E6C
-_08074674:
- cmp r4, 0xC9
- bne _08074704
- ldr r0, _080746A4 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, r1, r0
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- bne _080746B0
- ldr r1, _080746A8 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080746AC @ =gEnemyParty
- adds r0, r1
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- b _080746B6
- .align 2, 0
-_080746A4: .4byte gBattleSpritesDataPtr
-_080746A8: .4byte gBattlerPartyIndexes
-_080746AC: .4byte gEnemyParty
-_080746B0:
- ldr r0, _080746EC @ =gTransformedPersonalities
- adds r0, r1, r0
- ldr r2, [r0]
-_080746B6:
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _080746F0
- adds r0, r7, 0
- b _080746FA
- .align 2, 0
-_080746EC: .4byte gTransformedPersonalities
-_080746F0:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_080746FA:
- ldr r1, _08074700 @ =gUnknown_82349CC
- lsls r0, 2
- b _0807473C
- .align 2, 0
-_08074700: .4byte gUnknown_82349CC
-_08074704:
- ldr r0, _0807471C @ =0x00000181
- cmp r4, r0
- bne _08074728
- ldr r0, _08074720 @ =gUnknown_83AE03C
- ldr r1, _08074724 @ =gBattleMonForms
- adds r1, r6, r1
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- b _08074740
- .align 2, 0
-_0807471C: .4byte 0x00000181
-_08074720: .4byte gUnknown_83AE03C
-_08074724: .4byte gBattleMonForms
-_08074728:
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08074738
- ldr r0, _08074734 @ =gUnknown_82349CC
- b _0807473E
- .align 2, 0
-_08074734: .4byte gUnknown_82349CC
-_08074738:
- ldr r1, _08074748 @ =gUnknown_82349CC
- lsls r0, r7, 2
-_0807473C:
- adds r0, r1
-_0807473E:
- ldrb r0, [r0, 0x1]
-_08074740:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08074748: .4byte gUnknown_82349CC
- thumb_func_end sub_8074590
-
- thumb_func_start sub_807474C
-sub_807474C: @ 807474C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- adds r7, r4, 0
- movs r5, 0
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807479E
- ldr r0, _0807477C @ =0x00000181
- cmp r4, r0
- bne _08074788
- ldr r0, _08074780 @ =gUnknown_83AE04C
- ldr r1, _08074784 @ =gBattleMonForms
- adds r1, r6, r1
- ldrb r1, [r1]
- adds r1, r0
- ldrb r5, [r1]
- b _0807479E
- .align 2, 0
-_0807477C: .4byte 0x00000181
-_08074780: .4byte gUnknown_83AE04C
-_08074784: .4byte gBattleMonForms
-_08074788:
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08074798
- ldr r0, _08074794 @ =gEnemyMonElevation
- b _0807479C
- .align 2, 0
-_08074794: .4byte gEnemyMonElevation
-_08074798:
- ldr r0, _080747A8 @ =gEnemyMonElevation
- adds r0, r7, r0
-_0807479C:
- ldrb r5, [r0]
-_0807479E:
- adds r0, r5, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080747A8: .4byte gEnemyMonElevation
- thumb_func_end sub_807474C
-
- thumb_func_start sub_80747AC
-sub_80747AC: @ 80747AC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r7, r2, 24
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080747D4
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_8074590
- lsls r0, 24
- lsrs r5, r0, 24
- b _080747F2
-_080747D4:
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_8074590
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_807474C
- lsls r0, 24
- lsrs r0, 24
- subs r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
-_080747F2:
- adds r0, r6, 0
- bl GetBattlerPosition
- ldr r3, _0807483C @ =gUnknown_83AE01C
- lsls r0, 24
- lsrs r0, 22
- ldr r1, _08074840 @ =gBattleTypeFlags
- ldr r1, [r1]
- movs r2, 0x1
- ands r1, r2
- lsls r1, 4
- adds r0, r1
- adds r0, r3
- ldrb r0, [r0, 0x1]
- adds r0, r5
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r7, 0
- beq _08074832
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0807482C
- adds r0, r4, 0
- adds r0, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
-_0807482C:
- cmp r4, 0x68
- bls _08074832
- movs r4, 0x68
-_08074832:
- adds r0, r4, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0807483C: .4byte gUnknown_83AE01C
-_08074840: .4byte gBattleTypeFlags
- thumb_func_end sub_80747AC
-
- thumb_func_start sub_8074844
-sub_8074844: @ 8074844
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- movs r0, 0xFD
- lsls r0, 24
- adds r1, r0
- lsrs r1, 24
- cmp r1, 0x1
- bhi _08074896
- ldr r0, _08074874 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r2, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0807487C
- ldr r1, _08074878 @ =gUnknown_2037F1C
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0807487E
- .align 2, 0
-_08074874: .4byte gBattleSpritesDataPtr
-_08074878: .4byte gUnknown_2037F1C
-_0807487C:
- ldrh r1, [r1, 0x2]
-_0807487E:
- cmp r3, 0x3
- bne _0807488C
- adds r0, r2, 0
- movs r2, 0x1
- bl sub_80747AC
- b _0807489E
-_0807488C:
- adds r0, r2, 0
- movs r2, 0
- bl sub_80747AC
- b _0807489E
-_08074896:
- adds r0, r2, 0
- adds r1, r3, 0
- bl GetBattlerSpriteCoord
-_0807489E:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8074844
-
- thumb_func_start GetBattlerSpriteDefault_Y
-GetBattlerSpriteDefault_Y: @ 80748A8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x4
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetBattlerSpriteDefault_Y
-
- thumb_func_start GetSubstituteSpriteDefault_Y
-GetSubstituteSpriteDefault_Y: @ 80748BC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080748E0
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0x80
- lsls r1, 13
- b _080748F0
-_080748E0:
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0x88
- lsls r1, 13
-_080748F0:
- adds r0, r1
- lsrs r0, 16
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetSubstituteSpriteDefault_Y
-
- thumb_func_start GetGhostSpriteDefault_Y
-GetGhostSpriteDefault_Y: @ 8074900
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807491A
- adds r0, r4, 0
- movs r1, 0x1
- b _0807491E
-_0807491A:
- adds r0, r4, 0
- movs r1, 0x4
-_0807491E:
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetGhostSpriteDefault_Y
-
- thumb_func_start sub_807492C
-sub_807492C: @ 807492C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08074978
- ldr r0, _0807496C @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _080749B0
- ldr r1, _08074970 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08074974 @ =gEnemyParty
- b _08074996
- .align 2, 0
-_0807496C: .4byte gBattleSpritesDataPtr
-_08074970: .4byte gBattlerPartyIndexes
-_08074974: .4byte gEnemyParty
-_08074978:
- ldr r0, _080749A4 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _080749B0
- ldr r1, _080749A8 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080749AC @ =gPlayerParty
-_08074996:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- b _080749B2
- .align 2, 0
-_080749A4: .4byte gBattleSpritesDataPtr
-_080749A8: .4byte gBattlerPartyIndexes
-_080749AC: .4byte gPlayerParty
-_080749B0:
- ldrh r4, [r1, 0x2]
-_080749B2:
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080749CC
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_807474C
- subs r0, r6, r0
- lsls r0, 24
- lsrs r6, r0, 24
-_080749CC:
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_807492C
-
- thumb_func_start GetAnimBankSpriteId
-GetAnimBankSpriteId: @ 80749D4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0
- bne _080749FC
- ldr r4, _080749F4 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- bl IsBattlerSpritePresent
- lsls r0, 24
- cmp r0, 0
- beq _08074A4A
- ldr r1, _080749F8 @ =gBattlerSpriteIds
- ldrb r0, [r4]
- b _08074A5A
- .align 2, 0
-_080749F4: .4byte gBattleAnimAttacker
-_080749F8: .4byte gBattlerSpriteIds
-_080749FC:
- cmp r0, 0x1
- bne _08074A1C
- ldr r4, _08074A14 @ =gBattleAnimTarget
- ldrb r0, [r4]
- bl IsBattlerSpritePresent
- lsls r0, 24
- cmp r0, 0
- beq _08074A4A
- ldr r1, _08074A18 @ =gBattlerSpriteIds
- ldrb r0, [r4]
- b _08074A5A
- .align 2, 0
-_08074A14: .4byte gBattleAnimTarget
-_08074A18: .4byte gBattlerSpriteIds
-_08074A1C:
- cmp r1, 0x2
- bne _08074A38
- ldr r5, _08074A34 @ =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08074A4A
- b _08074A54
- .align 2, 0
-_08074A34: .4byte gBattleAnimAttacker
-_08074A38:
- ldr r5, _08074A50 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _08074A54
-_08074A4A:
- movs r0, 0xFF
- b _08074A5E
- .align 2, 0
-_08074A50: .4byte gBattleAnimTarget
-_08074A54:
- ldr r1, _08074A64 @ =gBattlerSpriteIds
- ldrb r0, [r5]
- eors r0, r4
-_08074A5A:
- adds r0, r1
- ldrb r0, [r0]
-_08074A5E:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08074A64: .4byte gBattlerSpriteIds
- thumb_func_end GetAnimBankSpriteId
-
- thumb_func_start StoreSpriteCallbackInData6
-StoreSpriteCallbackInData6: @ 8074A68
- strh r1, [r0, 0x3A]
- lsrs r1, 16
- strh r1, [r0, 0x3C]
- bx lr
- thumb_func_end StoreSpriteCallbackInData6
-
- thumb_func_start SetCallbackToStoredInData
-SetCallbackToStoredInData: @ 8074A70
- ldrh r2, [r0, 0x3A]
- movs r3, 0x3C
- ldrsh r1, [r0, r3]
- lsls r1, 16
- orrs r2, r1
- str r2, [r0, 0x1C]
- bx lr
- thumb_func_end SetCallbackToStoredInData
-
- thumb_func_start sub_8074A80
-sub_8074A80: @ 8074A80
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074AD4
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- 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, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08074AC0
- ldr r2, _08074ABC @ =0xffffff00
- b _08074AC8
- .align 2, 0
-_08074ABC: .4byte 0xffffff00
-_08074AC0:
- cmp r0, 0
- bge _08074ACC
- movs r2, 0x80
- lsls r2, 1
-_08074AC8:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_08074ACC:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _08074ADA
-_08074AD4:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074ADA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074A80
-
- thumb_func_start sub_8074AE0
-sub_8074AE0: @ 8074AE0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074B50
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- ldrh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 24
- ldrh r2, [r4, 0x30]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 24
- ldrh r2, [r4, 0x30]
- adds r1, r2
- lsls r1, 16
- asrs r1, 16
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x36]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- strh r0, [r4, 0x38]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08074B3C
- ldr r2, _08074B38 @ =0xffffff00
- b _08074B44
- .align 2, 0
-_08074B38: .4byte 0xffffff00
-_08074B3C:
- cmp r0, 0
- bge _08074B48
- movs r2, 0x80
- lsls r2, 1
-_08074B44:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_08074B48:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _08074B56
-_08074B50:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074B56:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074AE0
-
- thumb_func_start sub_8074B5C
-sub_8074B5C: @ 8074B5C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074BD8
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08074BA4
- ldr r2, _08074BA0 @ =0xffffff00
- b _08074BAC
- .align 2, 0
-_08074BA0: .4byte 0xffffff00
-_08074BA4:
- cmp r0, 0
- bge _08074BB0
- movs r2, 0x80
- lsls r2, 1
-_08074BAC:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_08074BB0:
- ldrh r1, [r4, 0x36]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- cmp r0, 0xFF
- ble _08074BC4
- ldr r2, _08074BC0 @ =0xffffff00
- b _08074BCC
- .align 2, 0
-_08074BC0: .4byte 0xffffff00
-_08074BC4:
- cmp r0, 0
- bge _08074BD0
- movs r2, 0x80
- lsls r2, 1
-_08074BCC:
- adds r0, r1, r2
- strh r0, [r4, 0x36]
-_08074BD0:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _08074BDE
-_08074BD8:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074BDE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074B5C
-
- thumb_func_start sub_8074BE4
-sub_8074BE4: @ 8074BE4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074C38
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x2E]
- adds r1, r0, r2
- strh r1, [r4, 0x2E]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08074C24
- ldr r2, _08074C20 @ =0xffffff00
- b _08074C2C
- .align 2, 0
-_08074C20: .4byte 0xffffff00
-_08074C24:
- cmp r0, 0
- bge _08074C30
- movs r2, 0x80
- lsls r2, 1
-_08074C2C:
- adds r0, r1, r2
- strh r0, [r4, 0x2E]
-_08074C30:
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- b _08074C3E
-_08074C38:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074C3E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074BE4
-
- thumb_func_start sub_8074C44
-sub_8074C44: @ 8074C44
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08074C58
- subs r0, r2, 0x1
- strh r0, [r1, 0x2E]
- b _08074C5E
-_08074C58:
- adds r0, r1, 0
- bl SetCallbackToStoredInData
-_08074C5E:
- pop {r0}
- bx r0
- thumb_func_end sub_8074C44
-
- thumb_func_start sub_8074C64
-sub_8074C64: @ 8074C64
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074C80
- ldr r1, _08074C7C @ =sub_8074CD0
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08074C7C: .4byte sub_8074CD0
- thumb_func_end sub_8074C64
-
- thumb_func_start sub_8074C80
-sub_8074C80: @ 8074C80
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r1, r0
- ble _08074C96
- ldrh r0, [r4, 0x2E]
- negs r0, r0
- strh r0, [r4, 0x2E]
-_08074C96:
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- subs r0, r1
- ldrh r5, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl __divsi3
- cmp r0, 0
- bge _08074CB0
- negs r0, r0
-_08074CB0:
- strh r0, [r4, 0x2E]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- subs r0, r1
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- strh r5, [r4, 0x30]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8074C80
-
- thumb_func_start sub_8074CD0
-sub_8074CD0: @ 8074CD0
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08074CF4
- subs r0, r2, 0x1
- strh r0, [r1, 0x2E]
- ldrh r0, [r1, 0x30]
- ldrh r2, [r1, 0x24]
- adds r0, r2
- strh r0, [r1, 0x24]
- ldrh r0, [r1, 0x32]
- ldrh r3, [r1, 0x26]
- adds r0, r3
- strh r0, [r1, 0x26]
- b _08074CFA
-_08074CF4:
- adds r0, r1, 0
- bl SetCallbackToStoredInData
-_08074CFA:
- pop {r0}
- bx r0
- thumb_func_end sub_8074CD0
-
- thumb_func_start sub_8074D00
-sub_8074D00: @ 8074D00
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _08074D30
- subs r0, r1, 0x1
- strh r0, [r2, 0x2E]
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r0, r1
- strh r0, [r2, 0x34]
- ldrh r1, [r2, 0x32]
- ldrh r3, [r2, 0x36]
- adds r1, r3
- strh r1, [r2, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r2, 0x26]
- b _08074D36
-_08074D30:
- adds r0, r2, 0
- bl SetCallbackToStoredInData
-_08074D36:
- pop {r0}
- bx r0
- thumb_func_end sub_8074D00
-
- thumb_func_start sub_8074D3C
-sub_8074D3C: @ 8074D3C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08074D6C
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r1, r2
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r4, 0x26]
- b _08074D72
-_08074D6C:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074D72:
- adds r0, r4, 0
- bl UpdateMonIconFrame
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074D3C
-
- thumb_func_start sub_8074D80
-sub_8074D80: @ 8074D80
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldr r5, _08074DBC @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, _08074DC0 @ =sub_8074C64
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08074DBC: .4byte gBattleAnimTarget
-_08074DC0: .4byte sub_8074C64
- thumb_func_end sub_8074D80
-
- thumb_func_start TranslateMonSpriteLinear
-TranslateMonSpriteLinear: @ 8074DC4
- push {r4,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _08074E08
- subs r0, r1, 0x1
- strh r0, [r3, 0x2E]
- ldr r2, _08074E04 @ =gSprites
- movs r4, 0x34
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x30]
- ldrh r4, [r0, 0x24]
- adds r1, r4
- strh r1, [r0, 0x24]
- movs r0, 0x34
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x32]
- ldrh r2, [r0, 0x26]
- adds r1, r2
- strh r1, [r0, 0x26]
- b _08074E0E
- .align 2, 0
-_08074E04: .4byte gSprites
-_08074E08:
- adds r0, r3, 0
- bl SetCallbackToStoredInData
-_08074E0E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end TranslateMonSpriteLinear
-
- thumb_func_start TranslateMonSpriteLinearFixedPoint
-TranslateMonSpriteLinearFixedPoint: @ 8074E14
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08074E64
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x30]
- ldrh r0, [r4, 0x34]
- adds r1, r0
- strh r1, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- ldr r3, _08074E60 @ =gSprites
- movs r0, 0x38
- ldrsh r2, [r4, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- lsls r1, 16
- asrs r1, 24
- strh r1, [r0, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r1, 0x26]
- b _08074E6A
- .align 2, 0
-_08074E60: .4byte gSprites
-_08074E64:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074E6A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end TranslateMonSpriteLinearFixedPoint
-
- thumb_func_start sub_8074E70
-sub_8074E70: @ 8074E70
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08074ED2
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x32]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r1, r0
- strh r1, [r4, 0x32]
- ldrh r1, [r4, 0x36]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- adds r1, r0
- strh r1, [r4, 0x36]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _08074ED8
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08074ED8
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08074ED8
-_08074ED2:
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08074ED8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074E70
-
- thumb_func_start move_anim_8074EE0
-move_anim_8074EE0: @ 8074EE0
- push {r4,lr}
- adds r4, r0, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end move_anim_8074EE0
-
- thumb_func_start sub_8074EF4
-sub_8074EF4: @ 8074EF4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x26]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldr r5, _08074F30 @ =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, _08074F34 @ =sub_8074C64
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08074F30: .4byte gBattleAnimAttacker
-_08074F34: .4byte sub_8074C64
- thumb_func_end sub_8074EF4
-
- thumb_func_start sub_8074F38
-sub_8074F38: @ 8074F38
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- bl ResetPaletteStructByUid
- adds r0, r4, 0
- bl move_anim_8074EE0
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074F38
-
- thumb_func_start sub_8074F50
-sub_8074F50: @ 8074F50
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08074F66
- adds r0, r2, 0
- bl SetCallbackToStoredInData
-_08074F66:
- pop {r0}
- bx r0
- thumb_func_end sub_8074F50
-
- thumb_func_start sub_8074F6C
-sub_8074F6C: @ 8074F6C
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08074F82
- adds r0, r2, 0
- bl SetCallbackToStoredInData
-_08074F82:
- pop {r0}
- bx r0
- thumb_func_end sub_8074F6C
-
- thumb_func_start sub_8074F88
-sub_8074F88: @ 8074F88
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074F88
-
- thumb_func_start sub_8074FA8
-sub_8074FA8: @ 8074FA8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8074FA8
-
- thumb_func_start sub_8074FCC
-sub_8074FCC: @ 8074FCC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _08074FF4 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08074FF4: .4byte gBattleAnimAttacker
- thumb_func_end sub_8074FCC
-
- thumb_func_start sub_8074FF8
-sub_8074FF8: @ 8074FF8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- mov r8, r5
- ldr r7, _08075030 @ =gBattleAnimAttacker
- ldrb r0, [r7]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08075034 @ =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- bhi _08075044
- cmp r6, r0
- bcs _08075038
- lsls r0, r5, 16
- b _08075054
- .align 2, 0
-_08075030: .4byte gBattleAnimAttacker
-_08075034: .4byte gBattleAnimTarget
-_08075038:
- ldrb r0, [r7]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075050
-_08075044:
- ldrh r1, [r4, 0x20]
- lsls r0, r5, 16
- asrs r0, 16
- subs r1, r0
- strh r1, [r4, 0x20]
- b _0807505C
-_08075050:
- mov r1, r8
- lsls r0, r1, 16
-_08075054:
- asrs r0, 16
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
-_0807505C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8074FF8
-
- thumb_func_start sub_8075068
-sub_8075068: @ 8075068
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- movs r5, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r0, 0x80
- lsls r0, 8
- bl __divsi3
- strh r0, [r4, 0x3A]
- strh r5, [r4, 0x3C]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8075068
-
- thumb_func_start AnimateBallThrow
-AnimateBallThrow: @ 8075094
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080750C0
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- adds r0, r1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r0, 0
- b _080750C2
-_080750C0:
- movs r0, 0x1
-_080750C2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end AnimateBallThrow
-
- thumb_func_start sub_80750C8
-sub_80750C8: @ 80750C8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- bne _080750F4
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- adds r0, r1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r0, 0
- b _080750F6
-_080750F4:
- movs r0, 0x1
-_080750F6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80750C8
-
- thumb_func_start SetSpritePrimaryCoordsFromSecondaryCoords
-SetSpritePrimaryCoordsFromSecondaryCoords: @ 80750FC
- ldrh r1, [r0, 0x24]
- ldrh r2, [r0, 0x20]
- adds r1, r2
- movs r2, 0
- strh r1, [r0, 0x20]
- ldrh r1, [r0, 0x26]
- ldrh r3, [r0, 0x22]
- adds r1, r3
- strh r1, [r0, 0x22]
- strh r2, [r0, 0x24]
- strh r2, [r0, 0x26]
- bx lr
- thumb_func_end SetSpritePrimaryCoordsFromSecondaryCoords
-
- thumb_func_start sub_8075114
-sub_8075114: @ 8075114
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- cmp r1, 0
- bne _0807513C
- ldr r4, _08075158 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_0807513C:
- ldr r4, _0807515C @ =gBattleAnimArgs
- movs r0, 0
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_8074FF8
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08075158: .4byte gBattleAnimTarget
-_0807515C: .4byte gBattleAnimArgs
- thumb_func_end sub_8075114
-
- thumb_func_start sub_8075160
-sub_8075160: @ 8075160
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- cmp r1, 0
- bne _08075184
- ldr r4, _08075180 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- b _08075198
- .align 2, 0
-_08075180: .4byte gBattleAnimAttacker
-_08075184:
- ldr r4, _080751BC @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
-_08075198:
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, _080751C0 @ =gBattleAnimArgs
- movs r0, 0
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_8074FF8
- ldrh r0, [r4, 0x2]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080751BC: .4byte gBattleAnimAttacker
-_080751C0: .4byte gBattleAnimArgs
- thumb_func_end sub_8075160
-
- thumb_func_start GetBattlerSide
-GetBattlerSide: @ 80751C4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080751D4 @ =gBattlerPositions
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- bx lr
- .align 2, 0
-_080751D4: .4byte gBattlerPositions
- thumb_func_end GetBattlerSide
-
- thumb_func_start GetBattlerPosition
-GetBattlerPosition: @ 80751D8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080751E4 @ =gBattlerPositions
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080751E4: .4byte gBattlerPositions
- thumb_func_end GetBattlerPosition
-
- thumb_func_start GetBattlerAtPosition
-GetBattlerAtPosition: @ 80751E8
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r1, 0
- ldr r0, _0807521C @ =gBattlersCount
- ldrb r2, [r0]
- cmp r1, r2
- bcs _08075212
- ldr r4, _08075220 @ =gBattlerPositions
- ldrb r0, [r4]
- cmp r0, r3
- beq _08075212
-_08075200:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r2
- bcs _08075212
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, r3
- bne _08075200
-_08075212:
- adds r0, r1, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0807521C: .4byte gBattlersCount
-_08075220: .4byte gBattlerPositions
- thumb_func_end GetBattlerAtPosition
-
- thumb_func_start IsBattlerSpritePresent
-IsBattlerSpritePresent: @ 8075224
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, _08075254 @ =gBattlerPositions
- adds r0, r4, r0
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08075288
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075260
- ldr r1, _08075258 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807525C @ =gEnemyParty
- b _0807526E
- .align 2, 0
-_08075254: .4byte gBattlerPositions
-_08075258: .4byte gBattlerPartyIndexes
-_0807525C: .4byte gEnemyParty
-_08075260:
- ldr r1, _08075280 @ =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08075284 @ =gPlayerParty
-_0807526E:
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08075288
- movs r0, 0x1
- b _0807528A
- .align 2, 0
-_08075280: .4byte gBattlerPartyIndexes
-_08075284: .4byte gPlayerParty
-_08075288:
- movs r0, 0
-_0807528A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end IsBattlerSpritePresent
-
- thumb_func_start IsDoubleBattle
-IsDoubleBattle: @ 8075290
- ldr r0, _0807529C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- bx lr
- .align 2, 0
-_0807529C: .4byte gBattleTypeFlags
- thumb_func_end IsDoubleBattle
-
- thumb_func_start sub_80752A0
-sub_80752A0: @ 80752A0
- ldr r1, _080752C0 @ =gUnknown_2022BB8
- ldr r1, [r1]
- str r1, [r0]
- ldr r1, _080752C4 @ =gUnknown_2022BBC
- ldr r1, [r1]
- str r1, [r0, 0x4]
- movs r2, 0
- movs r1, 0x8
- strb r1, [r0, 0x8]
- movs r1, 0x1
- strb r1, [r0, 0x9]
- movs r1, 0x80
- lsls r1, 2
- strh r1, [r0, 0xA]
- strh r2, [r0, 0xC]
- bx lr
- .align 2, 0
-_080752C0: .4byte gUnknown_2022BB8
-_080752C4: .4byte gUnknown_2022BBC
- thumb_func_end sub_80752A0
-
- thumb_func_start sub_80752C8
-sub_80752C8: @ 80752C8
- push {lr}
- adds r2, r0, 0
- cmp r1, 0x1
- bne _080752D6
- bl sub_80752A0
- b _080752F4
-_080752D6:
- ldr r0, _080752F8 @ =gUnknown_2022BB8
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, _080752FC @ =gUnknown_2022BBC
- ldr r0, [r0]
- str r0, [r2, 0x4]
- movs r1, 0
- movs r0, 0x9
- strb r0, [r2, 0x8]
- movs r0, 0x2
- strb r0, [r2, 0x9]
- movs r0, 0xC0
- lsls r0, 2
- strh r0, [r2, 0xA]
- strh r1, [r2, 0xC]
-_080752F4:
- pop {r0}
- bx r0
- .align 2, 0
-_080752F8: .4byte gUnknown_2022BB8
-_080752FC: .4byte gUnknown_2022BBC
- thumb_func_end sub_80752C8
-
- thumb_func_start sub_8075300
-sub_8075300: @ 8075300
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08075334 @ =gUnknown_2022BB8
- ldr r0, [r0]
- str r0, [r4]
- ldr r0, _08075338 @ =gUnknown_2022BBC
- ldr r0, [r0]
- str r0, [r4, 0x4]
- ldr r0, _0807533C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1
- bne _08075340
- movs r0, 0
- movs r1, 0x8
- strb r1, [r4, 0x8]
- strb r2, [r4, 0x9]
- movs r1, 0x80
- lsls r1, 2
- strh r1, [r4, 0xA]
- strh r0, [r4, 0xC]
- b _08075352
- .align 2, 0
-_08075334: .4byte gUnknown_2022BB8
-_08075338: .4byte gUnknown_2022BBC
-_0807533C: .4byte gBattleAnimAttacker
-_08075340:
- movs r1, 0
- movs r0, 0x9
- strb r0, [r4, 0x8]
- movs r0, 0x2
- strb r0, [r4, 0x9]
- movs r0, 0xC0
- lsls r0, 2
- strh r0, [r4, 0xA]
- strh r1, [r4, 0xC]
-_08075352:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075300
-
- thumb_func_start sub_8075358
-sub_8075358: @ 8075358
- push {r4,lr}
- sub sp, 0x20
- adds r4, r0, 0
- add r0, sp, 0xC
- adds r1, r4, 0
- bl sub_80752C8
- movs r0, 0
- str r0, [sp, 0x1C]
- add r0, sp, 0x1C
- ldr r1, [sp, 0xC]
- ldr r2, _080753B0 @ =0x05000800
- bl CpuSet
- lsls r4, 24
- lsrs r4, 24
- ldr r1, [sp, 0xC]
- movs r2, 0x80
- lsls r2, 6
- add r0, sp, 0xC
- ldrh r3, [r0, 0xA]
- adds r0, r4, 0
- bl LoadBgTiles
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x40
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- adds r0, r4, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0x20
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080753B0: .4byte 0x05000800
- thumb_func_end sub_8075358
-
- thumb_func_start sub_80753B4
-sub_80753B4: @ 80753B4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r5, r0, 0
- mov r8, r1
- adds r6, r2, 0
- movs r0, 0
- str r0, [sp]
- ldr r4, _080753FC @ =gUnknown_2022BB8
- ldr r1, [r4]
- ldr r2, _08075400 @ =0x05000800
- mov r0, sp
- bl CpuSet
- ldr r1, [r4]
- mov r0, r8
- bl LZDecompressWram
- lsls r5, 24
- lsrs r5, 24
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 6
- lsls r6, 16
- lsrs r6, 16
- adds r0, r5, 0
- adds r3, r6, 0
- bl LoadBgTiles
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080753FC: .4byte gUnknown_2022BB8
-_08075400: .4byte 0x05000800
- thumb_func_end sub_80753B4
-
- thumb_func_start sub_8075404
-sub_8075404: @ 8075404
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x40
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8075404
-
- thumb_func_start sub_807543C
-sub_807543C: @ 807543C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8075404
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl CopyBgTilemapBufferToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_807543C
-
- thumb_func_start sub_8075454
-sub_8075454: @ 8075454
- movs r0, 0x2
- bx lr
- thumb_func_end sub_8075454
-
- thumb_func_start sub_8075458
-sub_8075458: @ 8075458
- push {lr}
- lsls r0, 24
- cmp r0, 0
- bne _08075476
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0x1
- bl SetAnimBgAttribute
- b _0807548A
-_08075476:
- movs r0, 0x3
- movs r1, 0
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0
- bl SetAnimBgAttribute
-_0807548A:
- pop {r0}
- bx r0
- thumb_func_end sub_8075458
-
- thumb_func_start sub_8075490
-sub_8075490: @ 8075490
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl InitSpriteDataForLinearTranslation
- ldr r1, _080754B4 @ =sub_8074D3C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080754B4: .4byte sub_8074D3C
- thumb_func_end sub_8075490
-
- thumb_func_start InitSpriteDataForLinearTranslation
-InitSpriteDataForLinearTranslation: @ 80754B8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x32]
- ldrh r1, [r5, 0x30]
- subs r0, r1
- ldrh r4, [r5, 0x36]
- ldrh r1, [r5, 0x34]
- subs r4, r1
- lsls r4, 24
- lsrs r4, 16
- lsls r0, 24
- asrs r0, 16
- movs r2, 0x2E
- ldrsh r1, [r5, r2]
- bl __divsi3
- movs r6, 0
- strh r0, [r5, 0x30]
- lsls r4, 16
- asrs r4, 16
- movs r0, 0x2E
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl __divsi3
- strh r0, [r5, 0x32]
- strh r6, [r5, 0x36]
- strh r6, [r5, 0x34]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end InitSpriteDataForLinearTranslation
-
- thumb_func_start obj_translate_based_on_private_1_2_3_4
-obj_translate_based_on_private_1_2_3_4: @ 80754F8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- movs r0, 0x32
- ldrsh r1, [r7, r0]
- movs r2, 0x30
- ldrsh r0, [r7, r2]
- subs r1, r0
- movs r3, 0x36
- ldrsh r2, [r7, r3]
- movs r3, 0x34
- ldrsh r0, [r7, r3]
- subs r2, r0
- lsrs r0, r1, 31
- mov r8, r0
- lsrs r3, r2, 31
- mov r9, r3
- cmp r1, 0
- bge _08075524
- negs r1, r1
-_08075524:
- lsls r0, r1, 24
- lsrs r6, r0, 16
- adds r0, r2, 0
- cmp r0, 0
- bge _08075530
- negs r0, r0
-_08075530:
- lsls r0, 24
- lsrs r5, r0, 16
- movs r0, 0x2E
- ldrsh r4, [r7, r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r5, r0, 16
- mov r2, r8
- cmp r2, 0
- beq _0807555C
- movs r0, 0x1
- orrs r6, r0
- b _08075560
-_0807555C:
- ldr r0, _0807556C @ =0x0000fffe
- ands r6, r0
-_08075560:
- mov r3, r9
- cmp r3, 0
- beq _08075570
- movs r0, 0x1
- orrs r5, r0
- b _08075574
- .align 2, 0
-_0807556C: .4byte 0x0000fffe
-_08075570:
- ldr r0, _0807558C @ =0x0000fffe
- ands r5, r0
-_08075574:
- movs r0, 0
- strh r6, [r7, 0x30]
- strh r5, [r7, 0x32]
- strh r0, [r7, 0x36]
- strh r0, [r7, 0x34]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807558C: .4byte 0x0000fffe
- thumb_func_end obj_translate_based_on_private_1_2_3_4
-
- thumb_func_start StartAnimLinearTranslation
-StartAnimLinearTranslation: @ 8075590
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r1, _080755B4 @ =sub_807563C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080755B4: .4byte sub_807563C
- thumb_func_end StartAnimLinearTranslation
-
- thumb_func_start sub_80755B8
-sub_80755B8: @ 80755B8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r1, _080755DC @ =sub_8075658
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080755DC: .4byte sub_8075658
- thumb_func_end sub_80755B8
-
- thumb_func_start sub_80755E0
-sub_80755E0: @ 80755E0
- push {r4-r6,lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _080755F0
- movs r0, 0x1
- b _08075634
-_080755F0:
- ldrh r1, [r2, 0x30]
- ldrh r4, [r2, 0x32]
- ldrh r6, [r2, 0x34]
- ldrh r5, [r2, 0x36]
- adds r0, r6, r1
- lsls r3, r0, 16
- lsrs r6, r3, 16
- adds r0, r5, r4
- lsls r0, 16
- lsrs r5, r0, 16
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08075612
- lsrs r0, r3, 24
- negs r0, r0
- b _08075614
-_08075612:
- lsrs r0, r3, 24
-_08075614:
- strh r0, [r2, 0x24]
- movs r0, 0x1
- ands r4, r0
- cmp r4, 0
- beq _08075624
- lsrs r0, r5, 8
- negs r0, r0
- b _08075626
-_08075624:
- lsrs r0, r5, 8
-_08075626:
- strh r0, [r2, 0x26]
- strh r6, [r2, 0x34]
- strh r5, [r2, 0x36]
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- movs r0, 0
-_08075634:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80755E0
-
- thumb_func_start sub_807563C
-sub_807563C: @ 807563C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _08075650
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08075650:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_807563C
-
- thumb_func_start sub_8075658
-sub_8075658: @ 8075658
- push {r4,lr}
- adds r4, r0, 0
- bl sub_801236C
- adds r0, r4, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _08075672
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_08075672:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075658
-
- thumb_func_start sub_8075678
-sub_8075678: @ 8075678
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- subs r0, r1, r0
- cmp r0, 0
- bge _0807568C
- negs r0, r0
-_0807568C:
- lsls r0, 8
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075678
-
- thumb_func_start sub_80756A4
-sub_80756A4: @ 80756A4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl sub_8075678
- ldr r1, _080756C8 @ =sub_807563C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080756C8: .4byte sub_807563C
- thumb_func_end sub_80756A4
-
- thumb_func_start sub_80756CC
-sub_80756CC: @ 80756CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- movs r0, 0x32
- ldrsh r1, [r7, r0]
- movs r2, 0x30
- ldrsh r0, [r7, r2]
- subs r1, r0
- movs r3, 0x36
- ldrsh r2, [r7, r3]
- movs r3, 0x34
- ldrsh r0, [r7, r3]
- subs r2, r0
- lsrs r0, r1, 31
- mov r8, r0
- lsrs r3, r2, 31
- mov r9, r3
- cmp r1, 0
- bge _080756F8
- negs r1, r1
-_080756F8:
- lsls r0, r1, 20
- lsrs r6, r0, 16
- adds r0, r2, 0
- cmp r0, 0
- bge _08075704
- negs r0, r0
-_08075704:
- lsls r0, 20
- lsrs r5, r0, 16
- movs r0, 0x2E
- ldrsh r4, [r7, r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r5, r0, 16
- mov r2, r8
- cmp r2, 0
- beq _08075730
- movs r0, 0x1
- orrs r6, r0
- b _08075734
-_08075730:
- ldr r0, _08075740 @ =0x0000fffe
- ands r6, r0
-_08075734:
- mov r3, r9
- cmp r3, 0
- beq _08075744
- movs r0, 0x1
- orrs r5, r0
- b _08075748
- .align 2, 0
-_08075740: .4byte 0x0000fffe
-_08075744:
- ldr r0, _08075760 @ =0x0000fffe
- ands r5, r0
-_08075748:
- movs r0, 0
- strh r6, [r7, 0x30]
- strh r5, [r7, 0x32]
- strh r0, [r7, 0x36]
- strh r0, [r7, 0x34]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075760: .4byte 0x0000fffe
- thumb_func_end sub_80756CC
-
- thumb_func_start sub_8075764
-sub_8075764: @ 8075764
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl sub_80756CC
- ldr r1, _08075788 @ =sub_80757E8
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075788: .4byte sub_80757E8
- thumb_func_end sub_8075764
-
- thumb_func_start sub_807578C
-sub_807578C: @ 807578C
- push {r4-r6,lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _0807579C
- movs r0, 0x1
- b _080757E0
-_0807579C:
- ldrh r1, [r2, 0x30]
- ldrh r4, [r2, 0x32]
- ldrh r6, [r2, 0x34]
- ldrh r5, [r2, 0x36]
- adds r0, r6, r1
- lsls r3, r0, 16
- lsrs r6, r3, 16
- adds r0, r5, r4
- lsls r0, 16
- lsrs r5, r0, 16
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080757BE
- lsrs r0, r3, 20
- negs r0, r0
- b _080757C0
-_080757BE:
- lsrs r0, r3, 20
-_080757C0:
- strh r0, [r2, 0x24]
- movs r0, 0x1
- ands r4, r0
- cmp r4, 0
- beq _080757D0
- lsrs r0, r5, 4
- negs r0, r0
- b _080757D2
-_080757D0:
- lsrs r0, r5, 4
-_080757D2:
- strh r0, [r2, 0x26]
- strh r6, [r2, 0x34]
- strh r5, [r2, 0x36]
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- movs r0, 0
-_080757E0:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_807578C
-
- thumb_func_start sub_80757E8
-sub_80757E8: @ 80757E8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_807578C
- lsls r0, 24
- cmp r0, 0
- beq _080757FC
- adds r0, r4, 0
- bl SetCallbackToStoredInData
-_080757FC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80757E8
-
- thumb_func_start sub_8075804
-sub_8075804: @ 8075804
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- subs r0, r1, r0
- cmp r0, 0
- bge _08075818
- negs r0, r0
-_08075818:
- lsls r0, 4
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- bl __divsi3
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl sub_80756CC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075804
-
- thumb_func_start sub_8075830
-sub_8075830: @ 8075830
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- bl sub_8075804
- ldr r1, _08075854 @ =sub_80757E8
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08075854: .4byte sub_80757E8
- thumb_func_end sub_8075830
-
- thumb_func_start SetSpriteRotScale
-SetSpriteRotScale: @ 8075858
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r5, _080758D0 @ =0xffff0000
- lsls r2, 16
- lsrs r1, 16
- orrs r1, r2
- str r1, [sp]
- ldr r0, [sp, 0x4]
- ands r0, r5
- orrs r0, r3
- str r0, [sp, 0x4]
- bl sub_80758DC
- lsls r0, 24
- cmp r0, 0
- beq _08075894
- mov r0, sp
- ldrh r0, [r0]
- negs r0, r0
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp]
- ands r1, r5
- orrs r1, r0
- str r1, [sp]
-_08075894:
- ldr r1, _080758D4 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x3]
- lsls r4, 26
- lsrs r4, 27
- add r5, sp, 0x8
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ObjAffineSet
- ldr r0, _080758D8 @ =gOamMatrices
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r5]
- strh r0, [r4]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x6]
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080758D0: .4byte 0xffff0000
-_080758D4: .4byte gSprites
-_080758D8: .4byte gOamMatrices
- thumb_func_end SetSpriteRotScale
-
- thumb_func_start sub_80758DC
-sub_80758DC: @ 80758DC
- movs r0, 0
- bx lr
- thumb_func_end sub_80758DC
-
- thumb_func_start PrepareBattlerSpriteForRotScale
-PrepareBattlerSpriteForRotScale: @ 80758E0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r2, _08075978 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r4, r1, r2
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08075914
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_08075914:
- movs r7, 0x3
- ands r5, r7
- lsls r2, r5, 2
- ldrb r1, [r4, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x1]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4, 0x1]
- lsls r0, 30
- cmp r0, 0
- bne _0807595C
- ldr r0, _0807597C @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x6]
- movs r0, 0x1F
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x3]
-_0807595C:
- ldrb r3, [r4, 0x1]
- orrs r3, r7
- strb r3, [r4, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r4, 0
- bl CalcCenterToCornerVec
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075978: .4byte gSprites
-_0807597C: .4byte gBattleSpritesDataPtr
- thumb_func_end PrepareBattlerSpriteForRotScale
-
- thumb_func_start ResetSpriteRotScale
-ResetSpriteRotScale: @ 8075980
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r2, 0x80
- lsls r2, 1
- adds r0, r4, 0
- adds r1, r2, 0
- movs r3, 0
- bl SetSpriteRotScale
- ldr r1, _080759D8 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r2
- movs r2, 0x1
- orrs r1, r2
- movs r2, 0xD
- negs r2, r2
- ands r1, r2
- strb r1, [r0, 0x1]
- adds r3, r0, 0
- adds r3, 0x2C
- ldrb r2, [r3]
- movs r1, 0x7F
- ands r1, r2
- strb r1, [r3]
- ldrb r3, [r0, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r0, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- bl CalcCenterToCornerVec
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080759D8: .4byte gSprites
- thumb_func_end ResetSpriteRotScale
-
- thumb_func_start sub_80759DC
-sub_80759DC: @ 80759DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08075A14 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r2
- ldrb r0, [r2, 0x3]
- lsls r0, 26
- lsrs r0, 27
- ldr r1, _08075A18 @ =gOamMatrices
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x4]
- movs r3, 0x4
- ldrsh r0, [r0, r3]
- cmp r0, 0
- bge _08075A08
- negs r0, r0
- lsls r0, 16
- lsrs r1, r0, 16
-_08075A08:
- lsls r0, r1, 16
- asrs r0, 19
- strh r0, [r2, 0x26]
- pop {r0}
- bx r0
- .align 2, 0
-_08075A14: .4byte gSprites
-_08075A18: .4byte gOamMatrices
- thumb_func_end sub_80759DC
-
- thumb_func_start sub_8075A1C
-sub_8075A1C: @ 8075A1C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r4, r0, 0
- ldr r0, [sp, 0x28]
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 16
- lsrs r5, r2, 16
- lsls r3, 16
- lsrs r7, r3, 16
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldrb r0, [r4, 0x1]
- lsls r0, 30
- lsrs r0, 30
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08075AC2
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- cmp r6, 0
- beq _08075A6A
- ldrb r3, [r4, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r4, 0
- bl CalcCenterToCornerVec
-_08075A6A:
- ldr r6, _08075AD0 @ =0xffff0000
- lsls r0, r7, 16
- orrs r5, r0
- str r5, [sp]
- ldr r0, [sp, 0x4]
- ands r0, r6
- mov r1, r8
- orrs r0, r1
- str r0, [sp, 0x4]
- bl sub_80758DC
- lsls r0, 24
- cmp r0, 0
- beq _08075A98
- mov r0, sp
- ldrh r0, [r0]
- negs r0, r0
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp]
- ands r1, r6
- orrs r1, r0
- str r1, [sp]
-_08075A98:
- ldrb r4, [r4, 0x3]
- lsls r4, 26
- lsrs r4, 27
- add r5, sp, 0x8
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ObjAffineSet
- ldr r0, _08075AD4 @ =gOamMatrices
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r5]
- strh r0, [r4]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x6]
-_08075AC2:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075AD0: .4byte 0xffff0000
-_08075AD4: .4byte gOamMatrices
- thumb_func_end sub_8075A1C
-
- thumb_func_start sub_8075AD8
-sub_8075AD8: @ 8075AD8
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r3, 0x80
- lsls r3, 1
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r3, 0
- bl sub_8075A1C
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrb r3, [r4, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r4, 0
- bl CalcCenterToCornerVec
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075AD8
-
- thumb_func_start ArcTan2_
-ArcTan2_: @ 8075B18
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl ArcTan2
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end ArcTan2_
-
- thumb_func_start sub_8075B30
-sub_8075B30: @ 8075B30
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl ArcTan2_
- lsls r0, 16
- negs r0, r0
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8075B30
-
- thumb_func_start sub_8075B48
-sub_8075B48: @ 8075B48
- push {r4-r7,lr}
- lsls r1, 24
- lsls r0, 20
- lsrs r0, 16
- cmp r1, 0
- bne _08075BC4
- ldr r2, _08075BB8 @ =gPlttBufferUnfaded
- ldr r1, _08075BBC @ =gPlttBufferFaded
- lsls r0, 1
- adds r4, r0, r1
- adds r5, r0, r2
- movs r6, 0xF
-_08075B60:
- ldr r0, [r5]
- lsls r2, r0, 27
- lsrs r2, 27
- lsls r1, r0, 22
- lsrs r1, 27
- adds r2, r1
- lsls r0, 17
- lsrs r0, 27
- adds r0, r2
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1F
- ands r0, r1
- ldrb r1, [r4]
- movs r3, 0x20
- negs r3, r3
- adds r2, r3, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r4]
- lsls r3, r0, 5
- ldrh r1, [r4]
- ldr r7, _08075BC0 @ =0xfffffc1f
- adds r2, r7, 0
- ands r1, r2
- orrs r1, r3
- strh r1, [r4]
- lsls r0, 2
- ldrb r1, [r4, 0x1]
- movs r3, 0x7D
- negs r3, r3
- adds r2, r3, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x1]
- adds r4, 0x2
- adds r5, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08075B60
- b _08075BD4
- .align 2, 0
-_08075BB8: .4byte gPlttBufferUnfaded
-_08075BBC: .4byte gPlttBufferFaded
-_08075BC0: .4byte 0xfffffc1f
-_08075BC4:
- lsls r1, r0, 1
- ldr r0, _08075BDC @ =gPlttBufferUnfaded
- adds r0, r1, r0
- ldr r2, _08075BE0 @ =gPlttBufferFaded
- adds r1, r2
- ldr r2, _08075BE4 @ =0x04000008
- bl CpuSet
-_08075BD4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075BDC: .4byte gPlttBufferUnfaded
-_08075BE0: .4byte gPlttBufferFaded
-_08075BE4: .4byte 0x04000008
- thumb_func_end sub_8075B48
-
- thumb_func_start sub_8075BE8
-sub_8075BE8: @ 8075BE8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- ldr r6, [sp, 0x24]
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r7, r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r8, r5
- lsls r6, 24
- lsrs r6, 24
- mov r9, r6
- movs r4, 0
- cmp r0, 0
- beq _08075C1C
- movs r4, 0xE
-_08075C1C:
- cmp r1, 0
- beq _08075C2E
- ldr r0, _08075CB0 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075C2E:
- cmp r2, 0
- beq _08075C40
- ldr r0, _08075CB4 @ =gBattleAnimTarget
- ldrb r0, [r0]
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075C40:
- cmp r3, 0
- beq _08075C64
- ldr r6, _08075CB0 @ =gBattleAnimAttacker
- ldrb r0, [r6]
- movs r5, 0x2
- eors r0, r5
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08075C64
- ldrb r0, [r6]
- eors r0, r5
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075C64:
- cmp r7, 0
- beq _08075C88
- ldr r6, _08075CB4 @ =gBattleAnimTarget
- ldrb r0, [r6]
- movs r5, 0x2
- eors r0, r5
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08075C88
- ldrb r0, [r6]
- eors r0, r5
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075C88:
- mov r0, r8
- cmp r0, 0
- beq _08075C94
- movs r0, 0x80
- lsls r0, 1
- orrs r4, r0
-_08075C94:
- mov r0, r9
- cmp r0, 0
- beq _08075CA0
- movs r0, 0x80
- lsls r0, 2
- orrs r4, r0
-_08075CA0:
- adds r0, r4, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08075CB0: .4byte gBattleAnimAttacker
-_08075CB4: .4byte gBattleAnimTarget
- thumb_func_end sub_8075BE8
-
- thumb_func_start sub_8075CB8
-sub_8075CB8: @ 8075CB8
- push {r4-r7,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r7, r3, 24
- movs r4, 0
- cmp r0, 0
- beq _08075CF2
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08075CF2
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r4, 0x1
- lsls r4, r0
-_08075CF2:
- cmp r5, 0
- beq _08075D1E
- movs r0, 0x2
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08075D1E
- movs r0, 0x2
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075D1E:
- cmp r6, 0
- beq _08075D4A
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08075D4A
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075D4A:
- cmp r7, 0
- beq _08075D76
- movs r0, 0x3
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08075D76
- movs r0, 0x3
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r4, r0
-_08075D76:
- adds r0, r4, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8075CB8
-
- thumb_func_start sub_8075D80
-sub_8075D80: @ 8075D80
- lsls r0, 24
- lsrs r0, 24
- bx lr
- thumb_func_end sub_8075D80
-
- thumb_func_start sub_8075D88
-sub_8075D88: @ 8075D88
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8075D88
-
- thumb_func_start sub_8075D9C
-sub_8075D9C: @ 8075D9C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08075DDA
- ldr r2, _08075DC8 @ =gBattleAnimArgs
- movs r3, 0x6
- ldrsh r0, [r2, r3]
- movs r1, 0
- cmp r0, 0
- bne _08075DB6
- movs r1, 0x1
-_08075DB6:
- movs r3, 0x4
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _08075DCC
- adds r0, r4, 0
- bl sub_8075160
- b _08075DD2
- .align 2, 0
-_08075DC8: .4byte gBattleAnimArgs
-_08075DCC:
- adds r0, r4, 0
- bl sub_8075114
-_08075DD2:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08075DEE
-_08075DDA:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- beq _08075DEE
- adds r0, r4, 0
- bl move_anim_8074EE0
-_08075DEE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075D9C
-
- thumb_func_start sub_8075DF4
-sub_8075DF4: @ 8075DF4
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r6, _08075E6C @ =gBattleAnimArgs
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0
- cmp r0, 0
- bne _08075E0C
- movs r1, 0x1
-_08075E0C:
- ldrb r0, [r6, 0xA]
- movs r7, 0x1
- cmp r0, 0
- bne _08075E16
- movs r7, 0x3
-_08075E16:
- adds r0, r5, 0
- bl sub_8075160
- ldr r0, _08075E70 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075E30
- ldrh r0, [r6, 0x4]
- negs r0, r0
- strh r0, [r6, 0x4]
-_08075E30:
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x2E]
- ldr r4, _08075E74 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x4]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- adds r1, r7, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x6]
- adds r0, r6
- strh r0, [r5, 0x36]
- ldr r0, _08075E78 @ =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, _08075E7C @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075E6C: .4byte gBattleAnimArgs
-_08075E70: .4byte gBattleAnimAttacker
-_08075E74: .4byte gBattleAnimTarget
-_08075E78: .4byte StartAnimLinearTranslation
-_08075E7C: .4byte DestroyAnimSprite
- thumb_func_end sub_8075DF4
-
- thumb_func_start sub_8075E80
-sub_8075E80: @ 8075E80
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _08075EE0 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075EA0
- ldr r1, _08075EE4 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_08075EA0:
- ldr r4, _08075EE4 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldr r5, _08075EE8 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r6, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r6, 0x38]
- adds r0, r6, 0
- bl sub_8075068
- ldr r0, _08075EEC @ =sub_8075EF0
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08075EE0: .4byte gBattleAnimAttacker
-_08075EE4: .4byte gBattleAnimArgs
-_08075EE8: .4byte gBattleAnimTarget
-_08075EEC: .4byte sub_8075EF0
- thumb_func_end sub_8075E80
-
- thumb_func_start sub_8075EF0
-sub_8075EF0: @ 8075EF0
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _08075F04
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08075F04:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075EF0
-
- thumb_func_start sub_8075F0C
-sub_8075F0C: @ 8075F0C
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, _08075F20 @ =gBattleAnimArgs
- movs r2, 0xC
- ldrsh r1, [r0, r2]
- cmp r1, 0
- bne _08075F24
- movs r4, 0x1
- movs r7, 0x3
- b _08075F28
- .align 2, 0
-_08075F20: .4byte gBattleAnimArgs
-_08075F24:
- movs r4, 0
- movs r7, 0x1
-_08075F28:
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08075F40
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8075160
- ldr r0, _08075F3C @ =gBattleAnimAttacker
- b _08075F4A
- .align 2, 0
-_08075F3C: .4byte gBattleAnimAttacker
-_08075F40:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8075114
- ldr r0, _08075FA8 @ =gBattleAnimTarget
-_08075F4A:
- ldrb r6, [r0]
- ldr r0, _08075FAC @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08075F62
- ldr r1, _08075FB0 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_08075F62:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8075114
- ldr r4, _08075FB0 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x2E]
- adds r0, r6, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r4, 0x4]
- adds r0, r2
- strh r0, [r5, 0x32]
- adds r0, r6, 0
- adds r1, r7, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r5, 0x36]
- ldr r0, _08075FB4 @ =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, _08075FB8 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08075FA8: .4byte gBattleAnimTarget
-_08075FAC: .4byte gBattleAnimAttacker
-_08075FB0: .4byte gBattleAnimArgs
-_08075FB4: .4byte StartAnimLinearTranslation
-_08075FB8: .4byte DestroyAnimSprite
- thumb_func_end sub_8075F0C
-
- thumb_func_start duplicate_obj_of_side_rel2move_in_transparent_mode
-duplicate_obj_of_side_rel2move_in_transparent_mode: @ 8075FBC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- beq _08076026
- movs r6, 0
- ldr r2, _08076018 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r1, r0, 2
-_08075FD8:
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r4, r0, r2
- adds r5, r4, 0
- adds r5, 0x3E
- ldrb r0, [r5]
- lsls r0, 31
- cmp r0, 0
- bne _0807601C
- adds r0, r4, 0
- adds r1, r2
- movs r2, 0x44
- bl memcpy
- ldrb r1, [r4, 0x1]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x1]
- ldrb r0, [r5]
- adds r2, 0x8
- adds r1, r2, 0
- ands r0, r1
- strb r0, [r5]
- lsls r0, r6, 16
- asrs r0, 16
- b _0807602A
- .align 2, 0
-_08076018: .4byte gSprites
-_0807601C:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3F
- bls _08075FD8
-_08076026:
- movs r0, 0x1
- negs r0, r0
-_0807602A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end duplicate_obj_of_side_rel2move_in_transparent_mode
-
- thumb_func_start obj_delete_but_dont_free_vram
-obj_delete_but_dont_free_vram: @ 8076030
- push {lr}
- adds r3, r0, 0
- adds r3, 0x3F
- ldrb r1, [r3]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r3]
- bl DestroySprite
- pop {r0}
- bx r0
- thumb_func_end obj_delete_but_dont_free_vram
-
- thumb_func_start sub_8076048
-sub_8076048: @ 8076048
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- movs r3, 0
- ldr r2, _080760C0 @ =gBattleAnimArgs
- movs r0, 0x4
- ldrsh r1, [r2, r0]
- movs r4, 0
- ldrsh r0, [r2, r4]
- cmp r1, r0
- ble _08076062
- movs r3, 0x1
-_08076062:
- cmp r1, r0
- bge _08076068
- ldr r3, _080760C4 @ =0x0000ffff
-_08076068:
- movs r0, 0x6
- ldrsh r1, [r2, r0]
- movs r4, 0x2
- ldrsh r0, [r2, r4]
- cmp r1, r0
- ble _08076076
- movs r6, 0x1
-_08076076:
- cmp r1, r0
- bge _0807607C
- ldr r6, _080760C4 @ =0x0000ffff
-_0807607C:
- ldr r0, _080760C8 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r1, 0
- strh r1, [r4, 0x8]
- ldrh r0, [r2, 0x8]
- strh r0, [r4, 0xA]
- strh r1, [r4, 0xC]
- ldrh r0, [r2]
- strh r0, [r4, 0xE]
- ldrh r0, [r2, 0x2]
- strh r0, [r4, 0x10]
- strh r3, [r4, 0x12]
- strh r6, [r4, 0x14]
- ldrh r0, [r2, 0x4]
- strh r0, [r4, 0x16]
- ldrh r0, [r2, 0x6]
- strh r0, [r4, 0x18]
- ldrh r1, [r2, 0x2]
- lsls r1, 8
- ldrh r0, [r2]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080760CC @ =sub_80760D0
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080760C0: .4byte gBattleAnimArgs
-_080760C4: .4byte 0x0000ffff
-_080760C8: .4byte gTasks
-_080760CC: .4byte sub_80760D0
- thumb_func_end sub_8076048
-
- thumb_func_start sub_80760D0
-sub_80760D0: @ 80760D0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0807611C @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _08076164
- movs r0, 0
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08076120
- ldrh r2, [r4, 0xE]
- movs r3, 0xE
- ldrsh r1, [r4, r3]
- movs r3, 0x16
- ldrsh r0, [r4, r3]
- cmp r1, r0
- beq _08076134
- ldrh r0, [r4, 0x12]
- adds r0, r2, r0
- strh r0, [r4, 0xE]
- b _08076134
- .align 2, 0
-_0807611C: .4byte gTasks
-_08076120:
- ldrh r2, [r4, 0x10]
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r3, 0x18
- ldrsh r0, [r4, r3]
- cmp r1, r0
- beq _08076134
- ldrh r0, [r4, 0x14]
- adds r0, r2, r0
- strh r0, [r4, 0x10]
-_08076134:
- ldrh r1, [r4, 0x10]
- lsls r1, 8
- ldrh r0, [r4, 0xE]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08076164
- movs r3, 0x10
- ldrsh r1, [r4, r3]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08076164
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08076164:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80760D0
-
- thumb_func_start sub_807616C
-sub_807616C: @ 807616C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0807618C @ =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xFF
- bne _08076190
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080761B6
- .align 2, 0
-_0807618C: .4byte gBattleAnimArgs
-_08076190:
- ldr r1, _080761BC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r2, _080761C0 @ =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- lsls r1, 4
- ldr r3, _080761C4 @ =0x00000101
- adds r2, r3, 0
- adds r1, r2
- strh r1, [r0, 0x8]
- bl sub_80761C8
-_080761B6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080761BC: .4byte gTasks
-_080761C0: .4byte gSprites
-_080761C4: .4byte 0x00000101
- thumb_func_end sub_807616C
-
- thumb_func_start sub_80761C8
-sub_80761C8: @ 80761C8
- ldr r3, _080761E8 @ =gBattleAnimArgs
- ldrh r1, [r3, 0x2]
- movs r2, 0
- strh r1, [r0, 0xA]
- strh r2, [r0, 0xC]
- ldrh r1, [r3, 0x4]
- strh r1, [r0, 0xE]
- strh r2, [r0, 0x10]
- ldrh r1, [r3, 0x6]
- strh r1, [r0, 0x12]
- strh r2, [r0, 0x14]
- ldrh r1, [r3, 0x8]
- strh r1, [r0, 0x16]
- ldr r1, _080761EC @ =sub_80761F0
- str r1, [r0]
- bx lr
- .align 2, 0
-_080761E8: .4byte gBattleAnimArgs
-_080761EC: .4byte sub_80761F0
- thumb_func_end sub_80761C8
-
- thumb_func_start sub_80761F0
-sub_80761F0: @ 80761F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08076248 @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _08076280
- movs r0, 0
- strh r0, [r4, 0x10]
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0807624C
- ldrh r2, [r4, 0xC]
- adds r2, 0x1
- strh r2, [r4, 0xC]
- ldrh r0, [r4, 0x8]
- lsls r2, 24
- lsrs r2, 24
- ldrh r3, [r4, 0xA]
- movs r1, 0xF
- bl BlendPalette
- movs r2, 0xC
- ldrsh r1, [r4, r2]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08076280
- movs r0, 0x1
- strh r0, [r4, 0x14]
- b _08076280
- .align 2, 0
-_08076248: .4byte gTasks
-_0807624C:
- ldrh r2, [r4, 0xC]
- subs r2, 0x1
- strh r2, [r4, 0xC]
- ldrh r0, [r4, 0x8]
- lsls r2, 24
- lsrs r2, 24
- ldrh r3, [r4, 0xA]
- movs r1, 0xF
- bl BlendPalette
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- cmp r1, 0
- bne _08076280
- ldrh r0, [r4, 0x16]
- subs r0, 0x1
- strh r0, [r4, 0x16]
- lsls r0, 16
- cmp r0, 0
- beq _0807627A
- strh r1, [r4, 0x10]
- strh r1, [r4, 0x14]
- b _08076280
-_0807627A:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08076280:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80761F0
-
- thumb_func_start sub_8076288
-sub_8076288: @ 8076288
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080762A8 @ =gBattleAnimArgs
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _080762AC
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080762C2
- .align 2, 0
-_080762A8: .4byte gBattleAnimArgs
-_080762AC:
- ldr r1, _080762C8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- lsls r1, r2, 4
- ldr r2, _080762CC @ =0x00000101
- adds r1, r2
- strh r1, [r0, 0x8]
- bl sub_80761C8
-_080762C2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080762C8: .4byte gTasks
-_080762CC: .4byte 0x00000101
- thumb_func_end sub_8076288
-
- thumb_func_start sub_80762D0
-sub_80762D0: @ 80762D0
- push {r4,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- strh r1, [r3, 0x16]
- strh r1, [r3, 0x18]
- strh r1, [r3, 0x1A]
- strh r4, [r3, 0x26]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r3, 0x1C]
- strh r0, [r3, 0x1E]
- strh r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x22
- adds r3, 0x24
- adds r1, r3, 0
- bl sub_80765C0
- adds r0, r4, 0
- movs r1, 0
- bl PrepareBattlerSpriteForRotScale
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80762D0
-
- thumb_func_start sub_8076308
-sub_8076308: @ 8076308
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, _080763A8 @ =gUnknown_2037F28
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- bl sub_80765C8
- movs r3, 0x16
- ldrsh r1, [r4, r3]
- lsls r1, 3
- adds r1, r0, r1
- str r1, [r5]
- movs r6, 0
- ldrsh r2, [r1, r6]
- ldr r0, _080763AC @ =0x00007ffe
- cmp r2, r0
- beq _080763B0
- cmp r2, r0
- bgt _08076410
- subs r0, 0x1
- cmp r2, r0
- beq _080763B6
- ldrb r0, [r1, 0x5]
- cmp r0, 0
- bne _08076356
- ldrh r0, [r1]
- strh r0, [r4, 0x1C]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x1E]
- ldrb r0, [r1, 0x4]
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- adds r0, r1, 0
- adds r0, 0x8
- str r0, [r5]
-_08076356:
- ldr r1, [r5]
- ldrh r0, [r1]
- ldrh r2, [r4, 0x1C]
- adds r0, r2
- strh r0, [r4, 0x1C]
- ldrh r0, [r1, 0x2]
- ldrh r3, [r4, 0x1E]
- adds r0, r3
- strh r0, [r4, 0x1E]
- ldrh r0, [r4, 0x20]
- ldrb r1, [r1, 0x4]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0x1C
- ldrsh r1, [r4, r6]
- movs r3, 0x1E
- ldrsh r2, [r4, r3]
- ldrh r3, [r4, 0x20]
- bl SetSpriteRotScale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076440
- ldrh r0, [r4, 0x18]
- adds r0, 0x1
- strh r0, [r4, 0x18]
- lsls r0, 16
- asrs r0, 16
- ldr r1, [r5]
- ldrb r1, [r1, 0x5]
- cmp r0, r1
- blt _08076436
- movs r0, 0
- strh r0, [r4, 0x18]
- b _08076408
- .align 2, 0
-_080763A8: .4byte gUnknown_2037F28
-_080763AC: .4byte 0x00007ffe
-_080763B0:
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x16]
- b _08076436
-_080763B6:
- ldrh r2, [r1, 0x2]
- movs r6, 0x2
- ldrsh r0, [r1, r6]
- cmp r0, 0
- beq _08076408
- ldrh r1, [r4, 0x1A]
- movs r3, 0x1A
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080763D6
- subs r0, r1, 0x1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- cmp r0, 0
- bne _080763D8
- b _08076408
-_080763D6:
- strh r2, [r4, 0x1A]
-_080763D8:
- movs r6, 0x16
- ldrsh r0, [r4, r6]
- cmp r0, 0
- beq _08076436
- ldr r3, _08076400 @ =gUnknown_2037F28
- ldr r5, _08076404 @ =0x00007ffd
-_080763E4:
- ldrh r2, [r4, 0x16]
- subs r1, r2, 0x1
- strh r1, [r4, 0x16]
- ldr r0, [r3]
- subs r0, 0x8
- str r0, [r3]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r0, r5
- beq _08076434
- lsls r0, r1, 16
- cmp r0, 0
- bne _080763E4
- b _08076436
- .align 2, 0
-_08076400: .4byte gUnknown_2037F28
-_08076404: .4byte 0x00007ffd
-_08076408:
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- b _08076436
-_08076410:
- ldr r2, _08076430 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl ResetSpriteRotScale
- movs r0, 0
- b _08076438
- .align 2, 0
-_08076430: .4byte gSprites
-_08076434:
- strh r2, [r4, 0x16]
-_08076436:
- movs r0, 0x1
-_08076438:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8076308
-
- thumb_func_start sub_8076440
-sub_8076440: @ 8076440
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80764EC
- lsls r0, 16
- lsrs r0, 15
- movs r1, 0x40
- subs r5, r1, r0
- ldr r1, _0807648C @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r4, r0, r1
- ldrb r1, [r4, 0x3]
- lsls r1, 26
- lsrs r1, 27
- lsls r0, r5, 8
- ldr r2, _08076490 @ =gOamMatrices
- lsls r1, 3
- adds r1, r2
- movs r2, 0x6
- ldrsh r1, [r1, r2]
- bl __divsi3
- cmp r0, 0x80
- ble _0807647C
- movs r0, 0x80
-_0807647C:
- subs r0, r5, r0
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x26]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807648C: .4byte gSprites
-_08076490: .4byte gOamMatrices
- thumb_func_end sub_8076440
-
- thumb_func_start sub_8076494
-sub_8076494: @ 8076494
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 24
- lsrs r0, 24
- bl sub_80764EC
- lsls r0, 16
- lsrs r0, 15
- movs r1, 0x40
- subs r5, r1, r0
- ldr r1, _080764E4 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r4, r0, r1
- ldrb r1, [r4, 0x3]
- lsls r1, 26
- lsrs r1, 27
- lsls r0, r5, 8
- ldr r2, _080764E8 @ =gOamMatrices
- lsls r1, 3
- adds r1, r2
- movs r2, 0x6
- ldrsh r1, [r1, r2]
- bl __divsi3
- cmp r0, 0x80
- ble _080764D4
- movs r0, 0x80
-_080764D4:
- subs r0, r5, r0
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x26]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080764E4: .4byte gSprites
-_080764E8: .4byte gOamMatrices
- thumb_func_end sub_8076494
-
- thumb_func_start sub_80764EC
-sub_80764EC: @ 80764EC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08076548 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r1, _0807654C @ =gBattlerSpriteIds
- ldr r6, _08076550 @ =gBattlerPartyIndexes
-_08076508:
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, r2
- bne _080765AC
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08076568
- ldr r0, _08076554 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0807655C
- lsls r0, r4, 1
- adds r0, r6
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08076558 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- b _0807655E
- .align 2, 0
-_08076548: .4byte gSprites
-_0807654C: .4byte gBattlerSpriteIds
-_08076550: .4byte gBattlerPartyIndexes
-_08076554: .4byte gBattleSpritesDataPtr
-_08076558: .4byte gPlayerParty
-_0807655C:
- ldrh r1, [r1, 0x2]
-_0807655E:
- ldr r0, _08076564 @ =gUnknown_8235E6C
- b _080765A0
- .align 2, 0
-_08076564: .4byte gUnknown_8235E6C
-_08076568:
- ldr r0, _08076594 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _0807659C
- lsls r0, r4, 1
- adds r0, r6
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08076598 @ =gEnemyParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- b _0807659E
- .align 2, 0
-_08076594: .4byte gBattleSpritesDataPtr
-_08076598: .4byte gEnemyParty
-_0807659C:
- ldrh r1, [r1, 0x2]
-_0807659E:
- ldr r0, _080765A8 @ =gUnknown_82349CC
-_080765A0:
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- b _080765B8
- .align 2, 0
-_080765A8: .4byte gUnknown_82349CC
-_080765AC:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08076508
- movs r0, 0x40
-_080765B8:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80764EC
-
- thumb_func_start sub_80765C0
-sub_80765C0: @ 80765C0
- strh r2, [r0]
- asrs r2, 16
- strh r2, [r1]
- bx lr
- thumb_func_end sub_80765C0
-
- thumb_func_start sub_80765C8
-sub_80765C8: @ 80765C8
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- orrs r0, r1
- bx lr
- thumb_func_end sub_80765C8
-
- thumb_func_start sub_80765D4
-sub_80765D4: @ 80765D4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- adds r5, r3, 0
- ldr r0, [sp, 0x14]
- ldr r4, [sp, 0x18]
- ldr r6, [sp, 0x1C]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r6, 16
- lsrs r6, 16
- mov r3, r8
- strh r6, [r3, 0x18]
- strh r1, [r3, 0x26]
- strh r2, [r3, 0x1A]
- strh r5, [r3, 0x1C]
- strh r0, [r3, 0x22]
- strh r4, [r3, 0x24]
- lsls r0, 16
- asrs r0, 16
- lsls r2, 16
- asrs r2, 16
- subs r0, r2
- adds r1, r6, 0
- bl __divsi3
- mov r1, r8
- strh r0, [r1, 0x1E]
- lsls r4, 16
- asrs r4, 16
- lsls r5, 16
- asrs r5, 16
- subs r4, r5
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- mov r3, r8
- strh r0, [r3, 0x20]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80765D4
-
- thumb_func_start sub_8076640
-sub_8076640: @ 8076640
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08076652
- movs r0, 0
- b _080766AE
-_08076652:
- subs r0, r1, 0x1
- strh r0, [r4, 0x18]
- lsls r0, 16
- cmp r0, 0
- beq _0807666C
- ldrh r0, [r4, 0x1E]
- ldrh r3, [r4, 0x1A]
- adds r0, r3
- strh r0, [r4, 0x1A]
- ldrh r0, [r4, 0x20]
- ldrh r1, [r4, 0x1C]
- adds r0, r1
- b _08076672
-_0807666C:
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x1A]
- ldrh r0, [r4, 0x24]
-_08076672:
- strh r0, [r4, 0x1C]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x1A
- ldrsh r1, [r4, r2]
- movs r3, 0x1C
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl SetSpriteRotScale
- movs r0, 0x18
- ldrsh r3, [r4, r0]
- cmp r3, 0
- beq _0807669C
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076440
- b _080766AC
-_0807669C:
- ldr r2, _080766B4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
-_080766AC:
- ldrb r0, [r4, 0x18]
-_080766AE:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080766B4: .4byte gSprites
- thumb_func_end sub_8076640
-
- thumb_func_start sub_80766B8
-sub_80766B8: @ 80766B8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080766E4 @ =gAnimFriendship
- ldrb r0, [r0]
- movs r1, 0
- cmp r0, 0x1E
- bls _080766D6
- movs r1, 0x1
- cmp r0, 0x64
- bls _080766D6
- movs r1, 0x3
- cmp r0, 0xC8
- bhi _080766D6
- movs r1, 0x2
-_080766D6:
- ldr r0, _080766E8 @ =gBattleAnimArgs
- strh r1, [r0, 0xE]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080766E4: .4byte gAnimFriendship
-_080766E8: .4byte gBattleAnimArgs
- thumb_func_end sub_80766B8
-
- thumb_func_start sub_80766EC
-sub_80766EC: @ 80766EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- ldr r6, _080767E0 @ =gBattleAnimTarget
- ldrb r0, [r6]
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _0807672C
- ldr r2, _080767E4 @ =gSprites
- ldr r1, _080767E8 @ =gBattlerSpriteIds
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- adds r2, r4, 0
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_0807672C:
- ldr r0, _080767EC @ =gBattleAnimAttacker
- mov r8, r0
- ldrb r0, [r0]
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08076764
- ldr r2, _080767E4 @ =gSprites
- ldr r1, _080767E8 @ =gBattlerSpriteIds
- mov r3, r8
- ldrb r0, [r3]
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- adds r2, r4, 0
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_08076764:
- ldrb r0, [r6]
- movs r5, 0x2
- eors r0, r5
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _0807679C
- ldr r2, _080767E4 @ =gSprites
- ldr r1, _080767E8 @ =gBattlerSpriteIds
- ldrb r0, [r6]
- eors r0, r5
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- adds r2, r4, 0
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_0807679C:
- mov r1, r8
- ldrb r0, [r1]
- eors r0, r5
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080767D4
- ldr r2, _080767E4 @ =gSprites
- ldr r1, _080767E8 @ =gBattlerSpriteIds
- mov r3, r8
- ldrb r0, [r3]
- eors r0, r5
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- ands r7, r0
- lsls r3, r7, 2
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
-_080767D4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080767E0: .4byte gBattleAnimTarget
-_080767E4: .4byte gSprites
-_080767E8: .4byte gBattlerSpriteIds
-_080767EC: .4byte gBattleAnimAttacker
- thumb_func_end sub_80766EC
-
- thumb_func_start sub_80767F0
-sub_80767F0: @ 80767F0
- push {r4-r6,lr}
- movs r5, 0
- ldr r0, _08076850 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r5, r0
- bge _0807684A
- ldr r6, _08076854 @ =gSprites
-_080767FE:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08076840
- adds r0, r4, 0
- bl GetBattlerSpriteSubpriority
- ldr r3, _08076858 @ =gBattlerSpriteIds
- adds r3, r5, r3
- ldrb r2, [r3]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r6
- adds r1, 0x43
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r2, [r0, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r2, r1
- movs r1, 0x8
- orrs r2, r1
- strb r2, [r0, 0x5]
-_08076840:
- adds r5, 0x1
- ldr r0, _08076850 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r5, r0
- blt _080767FE
-_0807684A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08076850: .4byte gBattlersCount
-_08076854: .4byte gSprites
-_08076858: .4byte gBattlerSpriteIds
- thumb_func_end sub_80767F0
-
- thumb_func_start GetBattlerSpriteSubpriority
-GetBattlerSpriteSubpriority: @ 807685C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1E
- cmp r0, 0
- beq _0807687E
- movs r1, 0x14
- cmp r0, 0x2
- beq _0807687E
- movs r1, 0x32
- cmp r0, 0x1
- bne _0807687E
- movs r1, 0x28
-_0807687E:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end GetBattlerSpriteSubpriority
-
- thumb_func_start sub_8076884
-sub_8076884: @ 8076884
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0807689A
- cmp r0, 0x3
- bne _0807689E
-_0807689A:
- movs r0, 0x2
- b _080768A0
-_0807689E:
- movs r0, 0x1
-_080768A0:
- movs r1, 0x4
- bl sub_80BC30C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8076884
-
- thumb_func_start sub_80768B0
-sub_80768B0: @ 80768B0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080768C6
- cmp r0, 0x3
- bne _080768CA
-_080768C6:
- movs r0, 0x2
- b _080768CC
-_080768CA:
- movs r0, 0x1
-_080768CC:
- pop {r1}
- bx r1
- thumb_func_end sub_80768B0
-
- thumb_func_start sub_80768D0
-sub_80768D0: @ 80768D0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- ldr r4, [sp, 0x30]
- ldr r5, [sp, 0x34]
- ldr r6, [sp, 0x38]
- mov r8, r6
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 16
- lsrs r3, 16
- mov r10, r3
- lsls r4, 16
- lsrs r4, 16
- str r4, [sp, 0x4]
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x8]
- lsls r0, r7, 3
- ldr r1, _080769B0 @ =gUnknown_83AE084
- adds r0, r1
- bl LoadSpriteSheet
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- ldr r1, _080769B4 @ =gUnknown_83AE054
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x2]
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080769B8 @ =gMonSpritesGfxPtr
- ldr r0, [r4]
- cmp r0, 0
- beq _0807694E
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _0807694E
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- ldr r1, [r4]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- str r0, [r1]
-_0807694E:
- mov r3, r9
- cmp r3, 0
- bne _080769EC
- adds r0, r6, 0
- ldr r1, [sp, 0x3C]
- mov r2, r8
- bl GetMonSpritePalFromSpeciesAndPersonality
- lsls r1, r5, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r3, [sp, 0x44]
- cmp r3, 0x1
- beq _0807699A
- ldr r0, [sp, 0x40]
- lsls r1, r0, 24
- lsrs r1, 24
- movs r0, 0x5
- bl sub_804455C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0807699A
- ldr r0, _080769BC @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r2, [sp, 0x40]
- lsls r0, r2, 2
- adds r0, r1
- ldrh r0, [r0, 0x2]
- cmp r0, 0
- beq _080769C4
-_0807699A:
- lsls r0, r6, 3
- ldr r1, _080769C0 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _080769B8 @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r3, 0xBE
- lsls r3, 1
- adds r1, r3
- ldr r1, [r1]
- movs r2, 0x1
- b _08076A46
- .align 2, 0
-_080769B0: .4byte gUnknown_83AE084
-_080769B4: .4byte gUnknown_83AE054
-_080769B8: .4byte gMonSpritesGfxPtr
-_080769BC: .4byte gBattleSpritesDataPtr
-_080769C0: .4byte gMonFrontPicTable
-_080769C4:
- lsls r0, r6, 3
- ldr r1, _080769E4 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _080769E8 @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- ldr r1, [r1]
- movs r2, 0x1
- str r2, [sp]
- adds r2, r6, 0
- mov r3, r8
- bl LoadSpecialPokePic
- b _08076A7C
- .align 2, 0
-_080769E4: .4byte gMonFrontPicTable
-_080769E8: .4byte gMonSpritesGfxPtr
-_080769EC:
- adds r0, r6, 0
- ldr r1, [sp, 0x3C]
- mov r2, r8
- bl GetMonSpritePalFromSpeciesAndPersonality
- lsls r1, r5, 20
- movs r3, 0x80
- lsls r3, 17
- adds r1, r3
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r0, [sp, 0x44]
- cmp r0, 0x1
- beq _08076A32
- ldr r2, [sp, 0x40]
- lsls r1, r2, 24
- lsrs r1, 24
- movs r0, 0x5
- bl sub_804455C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08076A32
- ldr r0, _08076A54 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r3, [sp, 0x40]
- lsls r0, r3, 2
- adds r0, r1
- ldrh r2, [r0, 0x2]
- cmp r2, 0
- beq _08076A60
-_08076A32:
- lsls r0, r6, 3
- ldr r1, _08076A58 @ =gMonBackPicTable
- adds r0, r1
- ldr r1, _08076A5C @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- ldr r1, [r1]
- movs r2, 0
-_08076A46:
- str r2, [sp]
- adds r2, r6, 0
- mov r3, r8
- bl LoadSpecialPokePic_DontHandleDeoxys
- b _08076A7C
- .align 2, 0
-_08076A54: .4byte gBattleSpritesDataPtr
-_08076A58: .4byte gMonBackPicTable
-_08076A5C: .4byte gMonSpritesGfxPtr
-_08076A60:
- lsls r0, r6, 3
- ldr r1, _08076AC8 @ =gMonBackPicTable
- adds r0, r1
- ldr r1, _08076ACC @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r3, 0xBE
- lsls r3, 1
- adds r1, r3
- ldr r1, [r1]
- str r2, [sp]
- adds r2, r6, 0
- mov r3, r8
- bl LoadSpecialPokePic
-_08076A7C:
- ldr r5, _08076ACC @ =gMonSpritesGfxPtr
- ldr r0, [r5]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- ldr r0, [r0]
- ldr r2, [sp, 0xC]
- lsls r1, r2, 5
- ldr r3, _08076AD0 @ =0x06010000
- adds r1, r3
- movs r2, 0x80
- lsls r2, 4
- movs r3, 0x1
- bl RequestDma3Copy
- ldr r0, [r5]
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0
- str r1, [r0]
- mov r0, r9
- cmp r0, 0
- bne _08076ADC
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- ldr r1, _08076AD4 @ =gUnknown_83AE054
- adds r0, r1
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- ldr r3, _08076AD8 @ =gUnknown_82349CC
- b _08076AEE
- .align 2, 0
-_08076AC8: .4byte gMonBackPicTable
-_08076ACC: .4byte gMonSpritesGfxPtr
-_08076AD0: .4byte 0x06010000
-_08076AD4: .4byte gUnknown_83AE054
-_08076AD8: .4byte gUnknown_82349CC
-_08076ADC:
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- ldr r1, _08076B18 @ =gUnknown_83AE054
- adds r0, r1
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- ldr r3, _08076B1C @ =gUnknown_8235E6C
-_08076AEE:
- lsls r2, r6, 2
- adds r2, r3
- ldrb r2, [r2, 0x1]
- ldr r3, [sp, 0x4]
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- ldr r3, [sp, 0x8]
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08076B18: .4byte gUnknown_83AE054
-_08076B1C: .4byte gUnknown_8235E6C
- thumb_func_end sub_80768D0
-
- thumb_func_start sub_8076B20
-sub_8076B20: @ 8076B20
- push {lr}
- bl DestroySpriteAndFreeResources
- pop {r0}
- bx r0
- thumb_func_end sub_8076B20
-
- thumb_func_start sub_8076B2C
-sub_8076B2C: @ 8076B2C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08076C08
- ldr r0, _08076B88 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- mov r1, r8
- lsls r2, r1, 2
- adds r1, r2, r0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08076B94
- ldr r0, _08076B8C @ =gBattlerPartyIndexes
- mov r1, r8
- lsls r4, r1, 1
- adds r4, r0
- ldrh r0, [r4]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08076B90 @ =gPlayerParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- ldrh r0, [r4]
- muls r0, r6
- adds r0, r5
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- b _08076B9C
- .align 2, 0
-_08076B88: .4byte gBattleSpritesDataPtr
-_08076B8C: .4byte gBattlerPartyIndexes
-_08076B90: .4byte gPlayerParty
-_08076B94:
- ldrh r7, [r1, 0x2]
- ldr r0, _08076BD4 @ =gTransformedPersonalities
- adds r0, r2, r0
- ldr r2, [r0]
-_08076B9C:
- cmp r7, 0xC9
- bne _08076BEC
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _08076BD8
- movs r0, 0xC9
- b _08076BE2
- .align 2, 0
-_08076BD4: .4byte gTransformedPersonalities
-_08076BD8:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_08076BE2:
- lsls r1, r0, 2
- ldr r0, _08076BE8 @ =gUnknown_8235E6C
- b _08076CDC
- .align 2, 0
-_08076BE8: .4byte gUnknown_8235E6C
-_08076BEC:
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- bls _08076BFC
- ldr r4, _08076BF8 @ =gUnknown_8235E6C
- b _08076CDE
- .align 2, 0
-_08076BF8: .4byte gUnknown_8235E6C
-_08076BFC:
- lsls r1, r7, 2
- ldr r0, _08076C04 @ =gUnknown_8235E6C
- b _08076CDC
- .align 2, 0
-_08076C04: .4byte gUnknown_8235E6C
-_08076C08:
- ldr r0, _08076C48 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- mov r1, r8
- lsls r2, r1, 2
- adds r1, r2, r0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- bne _08076C54
- ldr r0, _08076C4C @ =gBattlerPartyIndexes
- mov r1, r8
- lsls r4, r1, 1
- adds r4, r0
- ldrh r0, [r4]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08076C50 @ =gEnemyParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- ldrh r0, [r4]
- muls r0, r6
- adds r0, r5
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- b _08076C5C
- .align 2, 0
-_08076C48: .4byte gBattleSpritesDataPtr
-_08076C4C: .4byte gBattlerPartyIndexes
-_08076C50: .4byte gEnemyParty
-_08076C54:
- ldrh r7, [r1, 0x2]
- ldr r0, _08076C94 @ =gTransformedPersonalities
- adds r0, r2, r0
- ldr r2, [r0]
-_08076C5C:
- cmp r7, 0xC9
- bne _08076CA6
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _08076C98
- movs r0, 0xC9
- b _08076CA2
- .align 2, 0
-_08076C94: .4byte gTransformedPersonalities
-_08076C98:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_08076CA2:
- lsls r1, r0, 2
- b _08076CDA
-_08076CA6:
- ldr r0, _08076CBC @ =0x00000181
- cmp r7, r0
- bne _08076CC8
- ldr r0, _08076CC0 @ =gBattleMonForms
- add r0, r8
- ldrb r0, [r0]
- lsls r0, 2
- ldr r1, _08076CC4 @ =gUnknown_83AE03C
- adds r4, r0, r1
- b _08076CDE
- .align 2, 0
-_08076CBC: .4byte 0x00000181
-_08076CC0: .4byte gBattleMonForms
-_08076CC4: .4byte gUnknown_83AE03C
-_08076CC8:
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- bls _08076CD8
- ldr r4, _08076CD4 @ =gUnknown_82349CC
- b _08076CDE
- .align 2, 0
-_08076CD4: .4byte gUnknown_82349CC
-_08076CD8:
- lsls r1, r7, 2
-_08076CDA:
- ldr r0, _08076CF0 @ =gUnknown_82349CC
-_08076CDC:
- adds r4, r1, r0
-_08076CDE:
- mov r0, r9
- cmp r0, 0x6
- bhi _08076D8E
- lsls r0, 2
- ldr r1, _08076CF4 @ =_08076CF8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08076CF0: .4byte gUnknown_82349CC
-_08076CF4: .4byte _08076CF8
- .align 2, 0
-_08076CF8:
- .4byte _08076D14
- .4byte _08076D1E
- .4byte _08076D4A
- .4byte _08076D62
- .4byte _08076D26
- .4byte _08076D38
- .4byte _08076D7A
-_08076D14:
- ldrb r1, [r4]
- movs r0, 0xF
- ands r0, r1
- lsls r0, 3
- b _08076D90
-_08076D1E:
- ldrb r0, [r4]
- lsrs r0, 4
- lsls r0, 3
- b _08076D90
-_08076D26:
- mov r0, r8
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4]
- lsrs r1, 4
- b _08076D5C
-_08076D38:
- mov r0, r8
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4]
- lsrs r1, 4
- b _08076D74
-_08076D4A:
- mov r0, r8
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrb r2, [r4]
- movs r1, 0xF
- ands r1, r2
-_08076D5C:
- lsls r1, 2
- subs r0, r1
- b _08076D90
-_08076D62:
- mov r0, r8
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrb r2, [r4]
- movs r1, 0xF
- ands r1, r2
-_08076D74:
- lsls r1, 2
- adds r0, r1
- b _08076D90
-_08076D7A:
- mov r0, r8
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1F
- ldrb r1, [r4, 0x1]
- subs r0, r1
- b _08076D90
-_08076D8E:
- movs r0, 0
-_08076D90:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8076B2C
-
- thumb_func_start sub_8076D9C
-sub_8076D9C: @ 8076D9C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r2
- mov r10, r3
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- cmp r1, 0
- bne _08076DBA
- movs r5, 0
- movs r6, 0x1
- b _08076DBE
-_08076DBA:
- movs r5, 0x2
- movs r6, 0x3
-_08076DBE:
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r4, 0
- adds r1, r6, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r7, r0, 24
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _08076E06
- movs r0, 0x2
- eors r4, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- adds r1, r6, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r3, r0, 24
- mov r0, r8
- lsls r1, r0, 16
- lsls r2, r7, 16
- b _08076E12
-_08076E06:
- mov r0, r8
- lsls r1, r0, 16
- lsrs r5, r1, 16
- lsls r0, r7, 16
- lsrs r3, r0, 16
- adds r2, r0, 0
-_08076E12:
- asrs r0, r1, 16
- adds r0, r5
- asrs r0, 1
- mov r1, r9
- strh r0, [r1]
- asrs r0, r2, 16
- adds r0, r3
- asrs r0, 1
- mov r1, r10
- strh r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8076D9C
-
- thumb_func_start sub_8076E34
-sub_8076E34: @ 8076E34
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x4
- lsls r6, r1, 24
- lsrs r6, 24
- ldr r0, _08076ECC @ =SpriteCallbackDummy
- mov r10, r0
- bl CreateInvisibleSpriteWithCallback
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08076ED0 @ =gSprites
- mov r9, r0
- mov r0, r8
- lsls r3, r0, 4
- add r3, r8
- lsls r3, 2
- mov r0, r9
- adds r5, r3, r0
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- add r4, r9
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x44
- str r3, [sp]
- bl memcpy
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldrb r2, [r5, 0x5]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r5, 0x5]
- ldrb r0, [r5, 0x1]
- ands r1, r0
- movs r0, 0x8
- orrs r1, r0
- strb r1, [r5, 0x1]
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 22
- ldrh r2, [r5, 0x4]
- ldr r0, _08076ED4 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- movs r0, 0x1C
- add r9, r0
- ldr r3, [sp]
- add r3, r9
- mov r0, r10
- str r0, [r3]
- mov r0, r8
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08076ECC: .4byte SpriteCallbackDummy
-_08076ED0: .4byte gSprites
-_08076ED4: .4byte 0xfffffc00
- thumb_func_end sub_8076E34
-
- thumb_func_start sub_8076ED8
-sub_8076ED8: @ 8076ED8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r0, _08076F10 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08076F18
- ldr r2, _08076F14 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r2, 0x6]
- negs r0, r0
- strh r0, [r2, 0x6]
- adds r3, r4, 0
- adds r3, 0x3F
- ldrb r0, [r3]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r3]
- adds r1, r2, 0
- b _08076F22
- .align 2, 0
-_08076F10: .4byte gBattleAnimAttacker
-_08076F14: .4byte gBattleAnimArgs
-_08076F18:
- ldr r1, _08076F4C @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
-_08076F22:
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x38]
- ldr r1, _08076F50 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _08076F54 @ =sub_8074E70
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08076F4C: .4byte gBattleAnimArgs
-_08076F50: .4byte move_anim_8074EE0
-_08076F54: .4byte sub_8074E70
- thumb_func_end sub_8076ED8
-
- thumb_func_start sub_8076F58
-sub_8076F58: @ 8076F58
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08076F80 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08076F88
- ldr r2, _08076F84 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r4, 0x20]
- movs r1, 0x6
- ldrsh r0, [r2, r1]
- negs r0, r0
- strh r0, [r2, 0x6]
- adds r1, r2, 0
- b _08076F92
- .align 2, 0
-_08076F80: .4byte gBattleAnimAttacker
-_08076F84: .4byte gBattleAnimArgs
-_08076F88:
- ldr r1, _08076FC4 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
-_08076F92:
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x38]
- ldrb r1, [r1, 0xC]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r1, _08076FC8 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _08076FCC @ =sub_8074E70
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08076FC4: .4byte gBattleAnimArgs
-_08076FC8: .4byte move_anim_8074EE0
-_08076FCC: .4byte sub_8074E70
- thumb_func_end sub_8076F58
-
- thumb_func_start sub_8076FD0
-sub_8076FD0: @ 8076FD0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8074FCC
- ldr r0, _08076FF4 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08076FFC
- ldr r0, _08076FF8 @ =gBattleAnimArgs
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _08077008
- .align 2, 0
-_08076FF4: .4byte gBattleAnimAttacker
-_08076FF8: .4byte gBattleAnimArgs
-_08076FFC:
- ldr r1, _08077024 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, r1, 0
-_08077008:
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _08077028 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldr r1, _0807702C @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08077024: .4byte gBattleAnimArgs
-_08077028: .4byte sub_8074F6C
-_0807702C: .4byte DestroyAnimSprite
- thumb_func_end sub_8076FD0
-
- thumb_func_start sub_8077030
-sub_8077030: @ 8077030
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080770C4 @ =gTasks
- adds r5, r1, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- strh r0, [r5, 0x8]
- ldr r7, _080770C8 @ =gBattleAnimAttacker
- ldrb r0, [r7]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0x8
- cmp r0, 0
- beq _08077064
- movs r0, 0x8
- negs r0, r0
- adds r1, r0, 0
-_08077064:
- strh r1, [r5, 0xA]
- strh r6, [r5, 0xC]
- strh r6, [r5, 0xE]
- ldr r4, _080770CC @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x24]
- ldrh r2, [r5, 0x8]
- subs r1, r2
- strh r1, [r0, 0x24]
- ldr r0, _080770D0 @ =0x00002771
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x10]
- strh r6, [r5, 0x12]
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- adds r0, 0x10
- lsls r0, 20
- lsrs r6, r0, 16
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r4, r0, 4
- ldrb r0, [r7]
- bl GetBattlerSpriteSubpriority
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x14]
- cmp r0, 0x14
- beq _080770C0
- cmp r0, 0x28
- bne _080770D4
-_080770C0:
- movs r0, 0x2
- b _080770D6
- .align 2, 0
-_080770C4: .4byte gTasks
-_080770C8: .4byte gBattleAnimAttacker
-_080770CC: .4byte gSprites
-_080770D0: .4byte 0x00002771
-_080770D4:
- movs r0, 0x3
-_080770D6:
- strh r0, [r5, 0x14]
- lsls r0, r4, 1
- ldr r1, _08077104 @ =gPlttBufferUnfaded
- adds r0, r1
- lsls r1, r6, 1
- ldr r2, _08077108 @ =gPlttBufferFaded
- adds r1, r2
- ldr r2, _0807710C @ =0x04000008
- bl CpuSet
- ldr r0, _08077110 @ =gBattleAnimArgs
- ldrb r2, [r0, 0x2]
- ldrh r3, [r0]
- adds r0, r6, 0
- movs r1, 0x10
- bl BlendPalette
- ldr r0, _08077114 @ =sub_8077118
- str r0, [r5]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077104: .4byte gPlttBufferUnfaded
-_08077108: .4byte gPlttBufferFaded
-_0807710C: .4byte 0x04000008
-_08077110: .4byte gBattleAnimArgs
-_08077114: .4byte sub_8077118
- thumb_func_end sub_8077030
-
- thumb_func_start sub_8077118
-sub_8077118: @ 8077118
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0807713C @ =gTasks
- adds r4, r0, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0807717C
- cmp r0, 0x1
- bgt _08077140
- cmp r0, 0
- beq _08077146
- b _080771D8
- .align 2, 0
-_0807713C: .4byte gTasks
-_08077140:
- cmp r0, 0x2
- beq _080771C4
- b _080771D8
-_08077146:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80771E4
- ldr r2, _08077178 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r4, 0xA]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- ldrh r1, [r4, 0xE]
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080771D8
- strh r1, [r4, 0xE]
- b _080771B6
- .align 2, 0
-_08077178: .4byte gSprites
-_0807717C:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80771E4
- ldr r3, _080771C0 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x24]
- ldrh r2, [r4, 0xA]
- subs r1, r2
- strh r1, [r0, 0x24]
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bne _080771D8
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- strh r2, [r1, 0x24]
-_080771B6:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _080771D8
- .align 2, 0
-_080771C0: .4byte gSprites
-_080771C4:
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080771D8
- ldr r0, _080771E0 @ =0x00002771
- bl FreeSpritePaletteByTag
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080771D8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080771E0: .4byte 0x00002771
- thumb_func_end sub_8077118
-
- thumb_func_start sub_80771E4
-sub_80771E4: @ 80771E4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- movs r0, 0
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r7, r0, 16
- asrs r0, 16
- cmp r0, 0
- blt _08077254
- ldr r5, _08077260 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r3, r4, r5
- movs r0, 0x3
- ldrb r1, [r6, 0x14]
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldrb r1, [r6, 0x10]
- lsls r1, 4
- movs r2, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- movs r0, 0x8
- strh r0, [r3, 0x2E]
- mov r0, r8
- strh r0, [r3, 0x30]
- strh r7, [r3, 0x32]
- movs r0, 0x8
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r0, [r0, 0x24]
- strh r0, [r3, 0x24]
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _08077264 @ =sub_8077268
- str r0, [r4]
- ldrh r0, [r6, 0x12]
- adds r0, 0x1
- strh r0, [r6, 0x12]
-_08077254:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077260: .4byte gSprites
-_08077264: .4byte sub_8077268
- thumb_func_end sub_80771E4
-
- thumb_func_start sub_8077268
-sub_8077268: @ 8077268
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- subs r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _08077292
- ldr r2, _08077298 @ =gTasks
- movs r0, 0x30
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x12]
- subs r1, 0x1
- strh r1, [r0, 0x12]
- adds r0, r3, 0
- bl obj_delete_but_dont_free_vram
-_08077292:
- pop {r0}
- bx r0
- .align 2, 0
-_08077298: .4byte gTasks
- thumb_func_end sub_8077268
-
- thumb_func_start sub_807729C
-sub_807729C: @ 807729C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080772D0 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080772D4
- movs r0, 0x5
- b _080772D6
- .align 2, 0
-_080772D0: .4byte gBattleAnimAttacker
-_080772D4:
- ldr r0, _080772E8 @ =0x0000fff6
-_080772D6:
- strh r0, [r5, 0x2E]
- ldr r0, _080772EC @ =0x0000ffd8
- strh r0, [r5, 0x30]
- ldr r0, _080772F0 @ =sub_80772F4
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080772E8: .4byte 0x0000fff6
-_080772EC: .4byte 0x0000ffd8
-_080772F0: .4byte sub_80772F4
- thumb_func_end sub_807729C
-
- thumb_func_start sub_80772F4
-sub_80772F4: @ 80772F4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r5, [r4, 0x30]
- ldrh r2, [r4, 0x34]
- adds r0, r5, r2
- strh r0, [r4, 0x34]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x26]
- lsls r0, r5, 16
- asrs r0, 16
- movs r1, 0x14
- negs r1, r1
- cmp r0, r1
- bge _08077330
- adds r0, r5, 0x1
- strh r0, [r4, 0x30]
-_08077330:
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _08077348
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08077348:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80772F4
-
- thumb_func_start sub_8077350
-sub_8077350: @ 8077350
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _08077388 @ =gBattleAnimArgs
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x8]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0xA]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x36]
- ldr r0, _0807738C @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08077390
- ldrh r0, [r5, 0x8]
- adds r0, 0x1E
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0xA]
- subs r0, 0x14
- b _0807739E
- .align 2, 0
-_08077388: .4byte gBattleAnimArgs
-_0807738C: .4byte gBattleAnimTarget
-_08077390:
- ldrh r0, [r5, 0x8]
- subs r0, 0x1E
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0xA]
- subs r0, 0x50
-_0807739E:
- strh r0, [r4, 0x22]
- ldr r0, _080773B4 @ =StartAnimLinearTranslation
- str r0, [r4, 0x1C]
- ldr r1, _080773B8 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080773B4: .4byte StartAnimLinearTranslation
-_080773B8: .4byte DestroyAnimSprite
- thumb_func_end sub_8077350
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s
deleted file mode 100644
index dc5517ca0..000000000
--- a/asm/battle_anim_sound_tasks.s
+++ /dev/null
@@ -1,927 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80DCE10
-sub_80DCE10: @ 80DCE10
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080DCE6C @ =gTasks
- lsls r6, r0, 2
- adds r6, r0
- lsls r6, 3
- adds r6, r1
- ldr r1, _080DCE70 @ =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r6, 0x8]
- ldrh r0, [r1, 0x2]
- strh r0, [r6, 0xA]
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x3F
- bl sub_8073A44
- adds r5, r0, 0
- lsls r4, 24
- asrs r4, 24
- lsls r5, 24
- asrs r5, 24
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x2
- bl CalculatePanIncrement
- strh r4, [r6, 0xC]
- strh r5, [r6, 0xE]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r6, 0x10]
- movs r0, 0xA
- strh r0, [r6, 0x1C]
- ldr r0, _080DCE74 @ =sub_80DCE78
- str r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCE6C: .4byte gTasks
-_080DCE70: .4byte gBattleAnimArgs
-_080DCE74: .4byte sub_80DCE78
- thumb_func_end sub_80DCE10
-
- thumb_func_start sub_80DCE78
-sub_80DCE78: @ 80DCE78
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080DCEA8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r5, [r4, 0xC]
- ldrb r6, [r4, 0x10]
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6F
- bne _080DCEB0
- movs r0, 0x5
- strh r0, [r4, 0x1C]
- strh r1, [r4, 0x1E]
- ldr r0, _080DCEAC @ =sub_80DCEE4
- str r0, [r4]
- b _080DCEDE
- .align 2, 0
-_080DCEA8: .4byte gTasks
-_080DCEAC: .4byte sub_80DCEE4
-_080DCEB0:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- bne _080DCECA
- strh r1, [r4, 0x1C]
- ldrh r0, [r4, 0x8]
- lsls r1, r5, 24
- asrs r1, 24
- bl PlaySE12WithPanning
-_080DCECA:
- lsls r1, r6, 24
- asrs r1, 24
- lsls r0, r5, 16
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- asrs r0, 16
- bl sub_8073B60
- strh r0, [r4, 0xC]
-_080DCEDE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80DCE78
-
- thumb_func_start sub_80DCEE4
-sub_80DCEE4: @ 80DCEE4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080DCF34 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080DCF2C
- movs r0, 0
- strh r0, [r4, 0x1C]
- movs r0, 0x3F
- bl sub_8073A44
- adds r1, r0, 0
- ldrh r0, [r4, 0xA]
- lsls r1, 24
- asrs r1, 24
- bl PlaySE12WithPanning
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080DCF2C
- adds r0, r5, 0
- bl DestroyAnimSoundTask
-_080DCF2C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCF34: .4byte gTasks
- thumb_func_end sub_80DCEE4
-
- thumb_func_start mas_80DCF38
-mas_80DCF38: @ 80DCF38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _080DCFDC @ =gBattleAnimArgs
- ldrh r1, [r0]
- str r1, [sp]
- ldrb r5, [r0, 0x4]
- ldrb r6, [r0, 0x6]
- ldrb r3, [r0, 0x8]
- mov r10, r3
- ldrb r7, [r0, 0xA]
- ldrb r1, [r0, 0xC]
- mov r9, r1
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- bl sub_8073A44
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- asrs r5, 24
- adds r0, r5, 0
- bl sub_8073A44
- adds r5, r0, 0
- lsls r4, 24
- asrs r4, 24
- lsls r5, 24
- asrs r5, 24
- lsls r6, 24
- asrs r6, 24
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl CalculatePanIncrement
- ldr r2, _080DCFE0 @ =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- mov r6, sp
- ldrh r6, [r6]
- strh r6, [r1, 0x8]
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1, 0xE]
- mov r0, r10
- strh r0, [r1, 0x10]
- strh r7, [r1, 0x12]
- mov r3, r9
- strh r3, [r1, 0x14]
- strh r2, [r1, 0x1C]
- strh r4, [r1, 0x1E]
- strh r3, [r1, 0x20]
- ldr r2, _080DCFE4 @ =sub_80DCFE8
- str r2, [r1]
- mov r0, r8
- bl _call_via_r2
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCFDC: .4byte gBattleAnimArgs
-_080DCFE0: .4byte gTasks
-_080DCFE4: .4byte sub_80DCFE8
- thumb_func_end mas_80DCF38
-
- thumb_func_start sub_80DCFE8
-sub_80DCFE8: @ 80DCFE8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080DD02C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x20]
- adds r1, r0, 0x1
- strh r1, [r4, 0x20]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080DD030
- movs r0, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x8]
- movs r1, 0x1E
- ldrsb r1, [r4, r1]
- bl PlaySE12WithPanning
- ldrh r0, [r4, 0x10]
- subs r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bne _080DD030
- adds r0, r5, 0
- bl DestroyAnimSoundTask
- b _080DD062
- .align 2, 0
-_080DD02C: .4byte gTasks
-_080DD030:
- ldr r1, _080DD068 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080DD062
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r0, [r4, 0xE]
- ldrh r1, [r4, 0x1E]
- adds r0, r1
- strh r0, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- bl sub_8073B60
- strh r0, [r4, 0x1E]
-_080DD062:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD068: .4byte gTasks
- thumb_func_end sub_80DCFE8
-
- thumb_func_start sub_80DD06C
-sub_80DD06C: @ 80DD06C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080DD090 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DD098
- ldr r0, _080DD094 @ =gBattleAnimAttacker
- ldrb r4, [r0]
- b _080DD0BE
- .align 2, 0
-_080DD090: .4byte gBattleAnimArgs
-_080DD094: .4byte gBattleAnimAttacker
-_080DD098:
- cmp r0, 0x1
- bne _080DD0A8
- ldr r0, _080DD0A4 @ =gBattleAnimTarget
- ldrb r4, [r0]
- b _080DD0BE
- .align 2, 0
-_080DD0A4: .4byte gBattleAnimTarget
-_080DD0A8:
- cmp r0, 0x2
- bne _080DD0B4
- ldr r0, _080DD0B0 @ =gBattleAnimAttacker
- b _080DD0B6
- .align 2, 0
-_080DD0B0: .4byte gBattleAnimAttacker
-_080DD0B4:
- ldr r0, _080DD0E0 @ =gBattleAnimTarget
-_080DD0B6:
- ldrb r1, [r0]
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r1
-_080DD0BE:
- ldr r0, _080DD0E4 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _080DD0CC
- cmp r0, 0x3
- bne _080DD0E8
-_080DD0CC:
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _080DD0E8
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _080DD13A
- .align 2, 0
-_080DD0E0: .4byte gBattleAnimTarget
-_080DD0E4: .4byte gBattleAnimArgs
-_080DD0E8:
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080DD10C
- ldr r1, _080DD104 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080DD108 @ =gEnemyParty
- b _080DD11A
- .align 2, 0
-_080DD104: .4byte gBattlerPartyIndexes
-_080DD108: .4byte gEnemyParty
-_080DD10C:
- ldr r1, _080DD140 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080DD144 @ =gPlayerParty
-_080DD11A:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080DD134
- lsls r1, r6, 24
- asrs r1, 24
- movs r2, 0x3
- bl PlayCry3
-_080DD134:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DD13A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD140: .4byte gBattlerPartyIndexes
-_080DD144: .4byte gPlayerParty
- thumb_func_end sub_80DD06C
-
- thumb_func_start sub_80DD148
-sub_80DD148: @ 80DD148
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080DD16C @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DD174
- ldr r0, _080DD170 @ =gBattleAnimAttacker
- ldrb r4, [r0]
- b _080DD19A
- .align 2, 0
-_080DD16C: .4byte gBattleAnimArgs
-_080DD170: .4byte gBattleAnimAttacker
-_080DD174:
- cmp r0, 0x1
- bne _080DD184
- ldr r0, _080DD180 @ =gBattleAnimTarget
- ldrb r4, [r0]
- b _080DD19A
- .align 2, 0
-_080DD180: .4byte gBattleAnimTarget
-_080DD184:
- cmp r0, 0x2
- bne _080DD190
- ldr r0, _080DD18C @ =gBattleAnimAttacker
- b _080DD192
- .align 2, 0
-_080DD18C: .4byte gBattleAnimAttacker
-_080DD190:
- ldr r0, _080DD1BC @ =gBattleAnimTarget
-_080DD192:
- ldrb r1, [r0]
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r1
-_080DD19A:
- ldr r0, _080DD1C0 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0x1
- beq _080DD1A8
- cmp r0, 0x3
- bne _080DD1C4
-_080DD1A8:
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _080DD1C4
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _080DD26A
- .align 2, 0
-_080DD1BC: .4byte gBattleAnimTarget
-_080DD1C0: .4byte gBattleAnimArgs
-_080DD1C4:
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080DD1E8
- ldr r1, _080DD1E0 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080DD1E4 @ =gEnemyParty
- b _080DD1F6
- .align 2, 0
-_080DD1E0: .4byte gBattlerPartyIndexes
-_080DD1E4: .4byte gEnemyParty
-_080DD1E8:
- ldr r1, _080DD234 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080DD238 @ =gPlayerParty
-_080DD1F6:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r1, _080DD23C @ =gTasks
- lsls r2, r6, 2
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- ldr r4, _080DD240 @ =gBattleAnimArgs
- ldrh r1, [r4, 0x2]
- strh r1, [r0, 0x8]
- strh r3, [r0, 0xA]
- lsls r1, r5, 24
- asrs r1, 24
- strh r1, [r0, 0xC]
- adds r5, r2, 0
- cmp r3, 0
- beq _080DD264
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0xFF
- bne _080DD244
- adds r0, r3, 0
- movs r2, 0x9
- bl PlayCry3
- b _080DD24C
- .align 2, 0
-_080DD234: .4byte gBattlerPartyIndexes
-_080DD238: .4byte gPlayerParty
-_080DD23C: .4byte gTasks
-_080DD240: .4byte gBattleAnimArgs
-_080DD244:
- adds r0, r3, 0
- movs r2, 0x7
- bl PlayCry3
-_080DD24C:
- ldr r0, _080DD25C @ =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _080DD260 @ =sub_80DD270
- str r0, [r1]
- b _080DD26A
- .align 2, 0
-_080DD25C: .4byte gTasks
-_080DD260: .4byte sub_80DD270
-_080DD264:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080DD26A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD148
-
- thumb_func_start sub_80DD270
-sub_80DD270: @ 80DD270
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r4, r0, 24
- mov r9, r4
- ldr r1, _080DD2A0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- ldrh r6, [r1, 0xA]
- mov r8, r6
- ldrb r5, [r1, 0xC]
- adds r7, r5, 0
- ldrh r2, [r1, 0x1A]
- movs r3, 0x1A
- ldrsh r0, [r1, r3]
- cmp r0, 0x1
- bgt _080DD2A4
- adds r0, r2, 0x1
- strh r0, [r1, 0x1A]
- b _080DD2E6
- .align 2, 0
-_080DD2A0: .4byte gTasks
-_080DD2A4:
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0xFF
- bne _080DD2CA
- bl IsCryPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080DD2E6
- lsls r1, r5, 24
- asrs r1, 24
- adds r0, r6, 0
- movs r2, 0xA
- bl PlayCry3
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080DD2E6
-_080DD2CA:
- bl IsCryPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080DD2E6
- lsls r1, r7, 24
- asrs r1, 24
- mov r0, r8
- movs r2, 0x8
- bl PlayCry3
- mov r0, r9
- bl DestroyAnimVisualTask
-_080DD2E6:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD270
-
- thumb_func_start sub_80DD2F4
-sub_80DD2F4: @ 80DD2F4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r1, _080DD318 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0x1A]
- movs r3, 0x1A
- ldrsh r0, [r1, r3]
- cmp r0, 0x1
- bgt _080DD31C
- adds r0, r2, 0x1
- strh r0, [r1, 0x1A]
- b _080DD32C
- .align 2, 0
-_080DD318: .4byte gTasks
-_080DD31C:
- bl IsCryPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080DD32C
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080DD32C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD2F4
-
- thumb_func_start sub_80DD334
-sub_80DD334: @ 80DD334
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- ldr r2, _080DD374 @ =gUnknown_2037F1C
- ldr r1, _080DD378 @ =gBattleAnimAttacker
- ldrb r1, [r1]
- lsls r1, 1
- adds r1, r2
- ldrh r3, [r1]
- ldr r2, _080DD37C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r4, r1, r2
- strh r3, [r4, 0xA]
- lsls r0, 24
- asrs r1, r0, 24
- strh r1, [r4, 0xC]
- cmp r3, 0
- beq _080DD384
- adds r0, r3, 0
- movs r2, 0x4
- bl PlayCry3
- ldr r0, _080DD380 @ =sub_80DD390
- str r0, [r4]
- b _080DD38A
- .align 2, 0
-_080DD374: .4byte gUnknown_2037F1C
-_080DD378: .4byte gBattleAnimAttacker
-_080DD37C: .4byte gTasks
-_080DD380: .4byte sub_80DD390
-_080DD384:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DD38A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD334
-
- thumb_func_start sub_80DD390
-sub_80DD390: @ 80DD390
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080DD3B4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bgt _080DD3B8
- adds r0, r1, 0x1
- strh r0, [r4, 0x1A]
- b _080DD3D4
- .align 2, 0
-_080DD3B4: .4byte gTasks
-_080DD3B8:
- bl IsCryPlaying
- lsls r0, 24
- cmp r0, 0
- bne _080DD3D4
- ldrh r0, [r4, 0xA]
- movs r1, 0xC
- ldrsb r1, [r4, r1]
- movs r2, 0x6
- bl PlayCry3
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DD3D4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD390
-
- thumb_func_start sub_80DD3DC
-sub_80DD3DC: @ 80DD3DC
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080DD40C @ =gBattleAnimArgs
- ldrh r5, [r0]
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- adds r0, r5, 0
- bl PlaySE1WithPanning
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD40C: .4byte gBattleAnimArgs
- thumb_func_end sub_80DD3DC
-
- thumb_func_start sub_80DD410
-sub_80DD410: @ 80DD410
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080DD440 @ =gBattleAnimArgs
- ldrh r5, [r0]
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- adds r0, r5, 0
- bl PlaySE2WithPanning
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD440: .4byte gBattleAnimArgs
- thumb_func_end sub_80DD410
-
- thumb_func_start sub_80DD444
-sub_80DD444: @ 80DD444
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _080DD4C8 @ =gBattleAnimArgs
- ldrb r5, [r0, 0x2]
- ldrb r6, [r0, 0x4]
- ldrh r1, [r0, 0x6]
- mov r9, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_8073A44
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- asrs r5, 24
- adds r0, r5, 0
- bl sub_8073A44
- adds r5, r0, 0
- lsls r4, 24
- asrs r4, 24
- lsls r5, 24
- asrs r5, 24
- lsls r6, 24
- asrs r6, 24
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl CalculatePanIncrement
- ldr r2, _080DD4CC @ =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- lsls r0, 24
- asrs r0, 24
- strh r0, [r1, 0xE]
- mov r0, r9
- strh r0, [r1, 0x12]
- strh r2, [r1, 0x1C]
- strh r4, [r1, 0x1E]
- ldr r2, _080DD4D0 @ =sub_80DD4D4
- str r2, [r1]
- mov r0, r8
- bl _call_via_r2
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD4C8: .4byte gBattleAnimArgs
-_080DD4CC: .4byte gTasks
-_080DD4D0: .4byte sub_80DD4D4
- thumb_func_end sub_80DD444
-
- thumb_func_start sub_80DD4D4
-sub_80DD4D4: @ 80DD4D4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080DD52C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r2, [r4, 0xE]
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x12
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _080DD50E
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- adds r0, r2, r1
- strh r0, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- bl sub_8073B60
- strh r0, [r4, 0x1E]
-_080DD50E:
- ldr r1, _080DD530 @ =gUnknown_2037F24
- ldrh r0, [r4, 0x1E]
- strb r0, [r1]
- movs r3, 0x1E
- ldrsh r1, [r4, r3]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080DD526
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DD526:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD52C: .4byte gTasks
-_080DD530: .4byte gUnknown_2037F24
- thumb_func_end sub_80DD4D4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s
index c95a1099e..e49ba538c 100644
--- a/asm/battle_anim_special.s
+++ b/asm/battle_anim_special.s
@@ -18,10 +18,10 @@ sub_80EEC0C: @ 80EEC0C
str r0, [sp, 0x10]
ldr r0, _080EEDB4 @ =gBattleAnimAttacker
ldrb r4, [r0]
- ldr r0, _080EEDB8 @ =gUnknown_2022984
+ ldr r0, _080EEDB8 @ =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, _080EEDBC @ =gUnknown_2022986
+ ldr r0, _080EEDBC @ =gBattle_WIN0V
strh r1, [r0]
ldr r1, _080EEDC0 @ =0x00003f3f
movs r0, 0x48
@@ -155,13 +155,13 @@ sub_80EEC0C: @ 80EEC0C
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080EEDD8 @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080EEDDC @ =gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
- bl sub_80753B4
+ bl AnimLoadCompressedBgGfx
ldr r0, _080EEDE0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette
mov r1, sp
ldrb r1, [r1, 0x8]
@@ -204,8 +204,8 @@ sub_80EEC0C: @ 80EEC0C
bx r0
.align 2, 0
_080EEDB4: .4byte gBattleAnimAttacker
-_080EEDB8: .4byte gUnknown_2022984
-_080EEDBC: .4byte gUnknown_2022986
+_080EEDB8: .4byte gBattle_WIN0H
+_080EEDBC: .4byte gBattle_WIN0V
_080EEDC0: .4byte 0x00003f3f
_080EEDC4: .4byte 0x00003f3d
_080EEDC8: .4byte 0x00003f42
@@ -336,9 +336,9 @@ _080EEE9C:
bne _080EEFA8
movs r0, 0
bl sub_8073128
- ldr r0, _080EEFB4 @ =gUnknown_2022984
+ ldr r0, _080EEFB4 @ =gBattle_WIN0H
strh r4, [r0]
- ldr r0, _080EEFB8 @ =gUnknown_2022986
+ ldr r0, _080EEFB8 @ =gBattle_WIN0V
strh r4, [r0]
ldr r4, _080EEFBC @ =0x00003f3f
movs r0, 0x48
@@ -439,8 +439,8 @@ _080EEFA8:
pop {r0}
bx r0
.align 2, 0
-_080EEFB4: .4byte gUnknown_2022984
-_080EEFB8: .4byte gUnknown_2022986
+_080EEFB4: .4byte gBattle_WIN0H
+_080EEFB8: .4byte gBattle_WIN0V
_080EEFBC: .4byte 0x00003f3f
_080EEFC0: .4byte gSprites
_080EEFC4: .4byte gHealthboxSpriteIds
@@ -855,7 +855,7 @@ _080EF2E6:
movs r3, 0
bl SetSpriteRotScale
adds r0, r5, 0
- bl sub_8076440
+ bl SetBattlerSpriteYOffsetFromYScale
movs r0, 0x1C
ldrsh r1, [r4, r0]
ldr r0, _080EF314 @ =0x000002cf
@@ -1585,7 +1585,7 @@ sub_80EF8C0: @ 80EF8C0
ldr r0, _080EF8E8 @ =0x0000ffd8
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080EF8EC @ =sub_80EF8F0
str r0, [r4, 0x1C]
pop {r4}
@@ -1601,7 +1601,7 @@ sub_80EF8F0: @ 80EF8F0
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080EF99E
@@ -2804,7 +2804,7 @@ _080F01F2:
ldrsb r0, [r1, r0]
strh r0, [r5, 0x38]
adds r0, r5, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
add r4, r10
ldr r0, _080F0270 @ =sub_80F0278
str r0, [r4]
@@ -2849,7 +2849,7 @@ sub_80F0278: @ 80F0278
orrs r0, r1
strb r0, [r3]
adds r0, r4, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080F02A8
@@ -3204,9 +3204,9 @@ sub_80F052C: @ 80F052C
movs r0, 0x20
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
adds r0, r4, 0
- bl sub_80750C8
+ bl TranslateAnimVerticalArc
ldr r0, _080F0570 @ =sub_80F0574
str r0, [r4, 0x1C]
pop {r4}
@@ -3220,7 +3220,7 @@ _080F0570: .4byte sub_80F0574
sub_80F0574: @ 80F0574
push {r4,lr}
adds r4, r0, 0
- bl sub_80750C8
+ bl TranslateAnimVerticalArc
lsls r0, 24
cmp r0, 0
bne _080F0590
@@ -5317,7 +5317,7 @@ _080F15F0:
_080F15F6:
ldr r0, _080F1610 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_80768B0
+ bl GetBattlerSpriteBGPriorityRank
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -5982,7 +5982,7 @@ sub_80F1B3C: @ 80F1B3C
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
movs r0, 0x1E
strh r0, [r4, 0x2E]
movs r0, 0x1
@@ -6011,7 +6011,7 @@ sub_80F1B3C: @ 80F1B3C
ldr r0, _080F1BB4 @ =0x0000ffe0
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r2, _080F1BB8 @ =gSprites
ldr r1, _080F1BBC @ =gBattlerSpriteIds
ldr r0, _080F1BC0 @ =gBattleAnimAttacker
@@ -6074,7 +6074,7 @@ _080F1C00: .4byte sub_80F1C04
sub_80F1C04: @ 80F1C04
push {r4,lr}
adds r4, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080F1C26
diff --git a/asm/battle_anim_utility_funcs.s b/asm/battle_anim_utility_funcs.s
deleted file mode 100644
index f447bdf45..000000000
--- a/asm/battle_anim_utility_funcs.s
+++ /dev/null
@@ -1,5133 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80BA7F8
-sub_80BA7F8: @ 80BA7F8
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _080BA838 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r4, r1]
- bl sub_80B9A14
- adds r6, r0, 0
- ldrh r3, [r4]
- lsls r3, 16
- asrs r0, r3, 23
- movs r4, 0x1
- ands r0, r4
- asrs r1, r3, 24
- ands r1, r4
- asrs r2, r3, 25
- ands r2, r4
- asrs r3, 26
- ands r3, r4
- bl sub_8075CB8
- orrs r6, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_80BAA4C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA838: .4byte gBattleAnimArgs
- thumb_func_end sub_80BA7F8
-
- thumb_func_start sub_80BA83C
-sub_80BA83C: @ 80BA83C
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1, 0x1]
- movs r0, 0x1
- bl sub_80B9A14
- adds r5, r0, 0
- ldr r0, _080BA868 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x7
- bhi _080BA8E6
- lsls r0, 2
- ldr r1, _080BA86C @ =_080BA870
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BA868: .4byte gBattleAnimArgs
-_080BA86C: .4byte _080BA870
- .align 2, 0
-_080BA870:
- .4byte _080BA892
- .4byte _080BA89E
- .4byte _080BA890
- .4byte _080BA89C
- .4byte _080BA8AC
- .4byte _080BA8C4
- .4byte _080BA8CC
- .4byte _080BA8D8
-_080BA890:
- movs r5, 0
-_080BA892:
- mov r0, sp
- ldr r1, _080BA898 @ =gBattleAnimAttacker
- b _080BA8A2
- .align 2, 0
-_080BA898: .4byte gBattleAnimAttacker
-_080BA89C:
- movs r5, 0
-_080BA89E:
- mov r0, sp
- ldr r1, _080BA8A8 @ =gBattleAnimTarget
-_080BA8A2:
- ldrb r1, [r1]
- strb r1, [r0]
- b _080BA8E6
- .align 2, 0
-_080BA8A8: .4byte gBattleAnimTarget
-_080BA8AC:
- mov r1, sp
- ldr r0, _080BA8BC @ =gBattleAnimAttacker
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _080BA8C0 @ =gBattleAnimTarget
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
- b _080BA8E6
- .align 2, 0
-_080BA8BC: .4byte gBattleAnimAttacker
-_080BA8C0: .4byte gBattleAnimTarget
-_080BA8C4:
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1]
- b _080BA8E6
-_080BA8CC:
- movs r5, 0
- mov r2, sp
- ldr r0, _080BA8D4 @ =gBattleAnimAttacker
- b _080BA8DE
- .align 2, 0
-_080BA8D4: .4byte gBattleAnimAttacker
-_080BA8D8:
- movs r5, 0
- mov r2, sp
- ldr r0, _080BA930 @ =gBattleAnimTarget
-_080BA8DE:
- ldrb r0, [r0]
- movs r1, 0x2
- eors r0, r1
- strb r0, [r2]
-_080BA8E6:
- movs r4, 0
- mov r6, sp
-_080BA8EA:
- ldrb r0, [r6]
- cmp r4, r0
- beq _080BA914
- ldrb r0, [r6, 0x1]
- cmp r4, r0
- beq _080BA914
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080BA914
- adds r0, r4, 0
- bl sub_8075D80
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r0
- orrs r5, r1
-_080BA914:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080BA8EA
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80BAA4C
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA930: .4byte gBattleAnimTarget
- thumb_func_end sub_80BA83C
-
- thumb_func_start sub_80BA934
-sub_80BA934: @ 80BA934
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BA958 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- bl sub_80B9A14
- adds r2, r0, 0
- ldr r0, _080BA95C @ =gBattleTerrain
- ldrb r0, [r0]
- cmp r0, 0x9
- bhi _080BAA0A
- lsls r0, 2
- ldr r1, _080BA960 @ =_080BA964
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BA958: .4byte gBattleAnimArgs
-_080BA95C: .4byte gBattleTerrain
-_080BA960: .4byte _080BA964
- .align 2, 0
-_080BA964:
- .4byte _080BA98C
- .4byte _080BA99C
- .4byte _080BA9A8
- .4byte _080BA9B8
- .4byte _080BA9C4
- .4byte _080BA9D4
- .4byte _080BA9E4
- .4byte _080BA9F4
- .4byte _080BAA04
- .4byte _080BAA04
-_080BA98C:
- ldr r1, _080BA994 @ =gBattleAnimArgs
- ldr r0, _080BA998 @ =0x00000b0c
- b _080BAA08
- .align 2, 0
-_080BA994: .4byte gBattleAnimArgs
-_080BA998: .4byte 0x00000b0c
-_080BA99C:
- ldr r1, _080BA9A4 @ =gBattleAnimArgs
- movs r0, 0x9E
- lsls r0, 4
- b _080BAA08
- .align 2, 0
-_080BA9A4: .4byte gBattleAnimArgs
-_080BA9A8:
- ldr r1, _080BA9B0 @ =gBattleAnimArgs
- ldr r0, _080BA9B4 @ =0x00002f1e
- b _080BAA08
- .align 2, 0
-_080BA9B0: .4byte gBattleAnimArgs
-_080BA9B4: .4byte 0x00002f1e
-_080BA9B8:
- ldr r1, _080BA9C0 @ =gBattleAnimArgs
- movs r0, 0x90
- lsls r0, 7
- b _080BAA08
- .align 2, 0
-_080BA9C0: .4byte gBattleAnimArgs
-_080BA9C4:
- ldr r1, _080BA9CC @ =gBattleAnimArgs
- ldr r0, _080BA9D0 @ =0x00007ecb
- b _080BAA08
- .align 2, 0
-_080BA9CC: .4byte gBattleAnimArgs
-_080BA9D0: .4byte 0x00007ecb
-_080BA9D4:
- ldr r1, _080BA9DC @ =gBattleAnimArgs
- ldr r0, _080BA9E0 @ =0x00007ecb
- b _080BAA08
- .align 2, 0
-_080BA9DC: .4byte gBattleAnimArgs
-_080BA9E0: .4byte 0x00007ecb
-_080BA9E4:
- ldr r1, _080BA9EC @ =gBattleAnimArgs
- ldr r0, _080BA9F0 @ =0x00002a16
- b _080BAA08
- .align 2, 0
-_080BA9EC: .4byte gBattleAnimArgs
-_080BA9F0: .4byte 0x00002a16
-_080BA9F4:
- ldr r1, _080BA9FC @ =gBattleAnimArgs
- ldr r0, _080BAA00 @ =0x00000d2e
- b _080BAA08
- .align 2, 0
-_080BA9FC: .4byte gBattleAnimArgs
-_080BAA00: .4byte 0x00000d2e
-_080BAA04:
- ldr r1, _080BAA18 @ =gBattleAnimArgs
- ldr r0, _080BAA1C @ =0x00007fff
-_080BAA08:
- strh r0, [r1, 0x8]
-_080BAA0A:
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80BAA4C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAA18: .4byte gBattleAnimArgs
-_080BAA1C: .4byte 0x00007fff
- thumb_func_end sub_80BA934
-
- thumb_func_start sub_80BAA20
-sub_80BAA20: @ 80BAA20
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080BAA48 @ =gBattleAnimArgs
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- adds r0, r4, 0
- bl sub_80BAA4C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAA48: .4byte gBattleAnimArgs
- thumb_func_end sub_80BAA20
-
- thumb_func_start sub_80BAA4C
-sub_80BAA4C: @ 80BAA4C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080BAA84 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- strh r1, [r2, 0x8]
- lsrs r1, 16
- strh r1, [r2, 0xA]
- ldr r3, _080BAA88 @ =gBattleAnimArgs
- ldrh r1, [r3, 0x2]
- strh r1, [r2, 0xC]
- ldrh r1, [r3, 0x4]
- strh r1, [r2, 0xE]
- ldrh r1, [r3, 0x6]
- strh r1, [r2, 0x10]
- ldrh r1, [r3, 0x8]
- strh r1, [r2, 0x12]
- ldrh r1, [r3, 0x4]
- strh r1, [r2, 0x1C]
- ldr r1, _080BAA8C @ =sub_80BAA90
- str r1, [r2]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080BAA84: .4byte gTasks
-_080BAA88: .4byte gBattleAnimArgs
-_080BAA8C: .4byte sub_80BAA90
- thumb_func_end sub_80BAA4C
-
- thumb_func_start sub_80BAA90
-sub_80BAA90: @ 80BAA90
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- ldr r2, _080BAB10 @ =gTasks
- lsls r5, r7, 2
- adds r0, r5, r7
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x1A]
- mov r8, r0
- movs r4, 0x1A
- ldrsh r1, [r3, r4]
- movs r4, 0xC
- ldrsh r0, [r3, r4]
- mov r9, r2
- cmp r1, r0
- bne _080BAB26
- strh r6, [r3, 0x1A]
- movs r0, 0x8
- ldrsh r4, [r3, r0]
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- lsls r0, 16
- orrs r4, r0
- mov r8, r5
- cmp r4, 0
- beq _080BAAF2
- adds r5, r3, 0
-_080BAAD0:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _080BAAE4
- ldrb r2, [r5, 0x1C]
- ldrh r3, [r5, 0x12]
- adds r0, r6, 0
- movs r1, 0x10
- bl BlendPalette
-_080BAAE4:
- adds r0, r6, 0
- adds r0, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- lsrs r4, 1
- cmp r4, 0
- bne _080BAAD0
-_080BAAF2:
- mov r4, r8
- adds r0, r4, r7
- lsls r0, 3
- mov r1, r9
- adds r2, r0, r1
- ldrh r0, [r2, 0x1C]
- movs r4, 0x1C
- ldrsh r3, [r2, r4]
- movs r4, 0x10
- ldrsh r1, [r2, r4]
- cmp r3, r1
- bge _080BAB14
- adds r0, 0x1
- strh r0, [r2, 0x1C]
- b _080BAB2C
- .align 2, 0
-_080BAB10: .4byte gTasks
-_080BAB14:
- cmp r3, r1
- ble _080BAB1E
- subs r0, 0x1
- strh r0, [r2, 0x1C]
- b _080BAB2C
-_080BAB1E:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- b _080BAB2C
-_080BAB26:
- mov r0, r8
- adds r0, 0x1
- strh r0, [r3, 0x1A]
-_080BAB2C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BAA90
-
- thumb_func_start sub_80BAB38
-sub_80BAB38: @ 80BAB38
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _080BAB6C @ =gBattleAnimArgs
- ldrb r0, [r4]
- ldrb r1, [r4, 0x2]
- ldrb r2, [r4, 0x4]
- ldrb r3, [r4, 0x6]
- ldrb r4, [r4, 0x8]
- str r4, [sp]
- bl BeginHardwarePaletteFade
- ldr r1, _080BAB70 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080BAB74 @ =sub_80BAB78
- str r1, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAB6C: .4byte gBattleAnimArgs
-_080BAB70: .4byte gTasks
-_080BAB74: .4byte sub_80BAB78
- thumb_func_end sub_80BAB38
-
- thumb_func_start sub_80BAB78
-sub_80BAB78: @ 80BAB78
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080BAB94 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BAB90
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080BAB90:
- pop {r0}
- bx r0
- .align 2, 0
-_080BAB94: .4byte gPaletteFade
- thumb_func_end sub_80BAB78
-
- thumb_func_start sub_80BAB98
-sub_80BAB98: @ 80BAB98
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080BABC4 @ =gTasks
- adds r1, r0
- ldr r2, _080BABC8 @ =gBattleAnimArgs
- ldrh r0, [r2]
- movs r3, 0
- strh r0, [r1, 0x8]
- strh r3, [r1, 0xA]
- ldrh r0, [r2, 0x2]
- strh r0, [r1, 0xC]
- ldrh r0, [r2, 0x4]
- strh r0, [r1, 0xE]
- ldrh r0, [r2, 0x6]
- strh r0, [r1, 0x10]
- strh r3, [r1, 0x12]
- ldr r0, _080BABCC @ =sub_80BABD0
- str r0, [r1]
- bx lr
- .align 2, 0
-_080BABC4: .4byte gTasks
-_080BABC8: .4byte gBattleAnimArgs
-_080BABCC: .4byte sub_80BABD0
- thumb_func_end sub_80BAB98
-
- thumb_func_start sub_80BABD0
-sub_80BABD0: @ 80BABD0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r2, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080BABFC @ =gTasks
- adds r4, r0, r1
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080BAC94
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080BAC00
- subs r0, r1, 0x1
- strh r0, [r4, 0xA]
- b _080BACA2
- .align 2, 0
-_080BABFC: .4byte gTasks
-_080BAC00:
- ldrb r0, [r4, 0x8]
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- blt _080BAC7E
- ldr r6, _080BAC8C @ =gSprites
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r3, r1, r6
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- movs r2, 0x2
- cmp r0, 0
- beq _080BAC28
- movs r2, 0x1
-_080BAC28:
- lsls r2, 2
- ldrb r1, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x5]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r4, 0xE]
- strh r1, [r0, 0x2E]
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r5, [r0, 0x30]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x5
- strh r1, [r0, 0x32]
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080BAC90 @ =sub_80BACA8
- str r1, [r0]
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
-_080BAC7E:
- ldrh r0, [r4, 0x10]
- subs r0, 0x1
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0xC]
- strh r0, [r4, 0xA]
- b _080BACA2
- .align 2, 0
-_080BAC8C: .4byte gSprites
-_080BAC90: .4byte sub_80BACA8
-_080BAC94:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BACA2
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080BACA2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BABD0
-
- thumb_func_start sub_80BACA8
-sub_80BACA8: @ 80BACA8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080BACBC
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- b _080BACE0
-_080BACBC:
- ldr r3, _080BACE8 @ =gTasks
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl obj_delete_but_dont_free_vram
-_080BACE0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BACE8: .4byte gTasks
- thumb_func_end sub_80BACA8
-
- thumb_func_start sub_80BACEC
-sub_80BACEC: @ 80BACEC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r7, 0
- ldr r0, _080BAE20 @ =gUnknown_2022984
- strh r7, [r0]
- ldr r0, _080BAE24 @ =gUnknown_2022986
- strh r7, [r0]
- ldr r1, _080BAE28 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080BAE2C @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080BAE30 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080BAE34 @ =0x00000c08
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0xA
- bl GetGpuReg
- add r4, sp, 0x10
- strh r0, [r4]
- ldrb r1, [r4]
- movs r0, 0x4
- negs r0, r0
- mov r8, r0
- ands r0, r1
- strb r0, [r4]
- mov r2, sp
- adds r2, 0x11
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2]
- ldrh r1, [r4]
- movs r0, 0xA
- bl SetGpuReg
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080BAD7A
- ldrb r1, [r4]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- ldrh r1, [r4]
- movs r0, 0xA
- bl SetGpuReg
-_080BAD7A:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080BADFE
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080BADFE
- ldr r5, _080BAE38 @ =gBattleAnimAttacker
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080BADAA
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- bne _080BADFE
-_080BADAA:
- ldrb r0, [r5]
- movs r6, 0x2
- eors r0, r6
- bl IsBattlerSpriteVisible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BADFE
- ldr r3, _080BAE3C @ =gSprites
- ldr r1, _080BAE40 @ =gBattlerSpriteIds
- ldrb r0, [r5]
- eors r0, r6
- adds r0, r1
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldrb r1, [r4]
- mov r0, r8
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4]
- ldrh r1, [r4]
- movs r0, 0xA
- bl SetGpuReg
- movs r7, 0x1
-_080BADFE:
- ldr r4, _080BAE38 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BAE4C
- ldr r1, _080BAE44 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BAE48 @ =gEnemyParty
- b _080BAE5C
- .align 2, 0
-_080BAE20: .4byte gUnknown_2022984
-_080BAE24: .4byte gUnknown_2022986
-_080BAE28: .4byte 0x00003f3f
-_080BAE2C: .4byte 0x00003f3d
-_080BAE30: .4byte 0x00003f42
-_080BAE34: .4byte 0x00000c08
-_080BAE38: .4byte gBattleAnimAttacker
-_080BAE3C: .4byte gSprites
-_080BAE40: .4byte gBattlerSpriteIds
-_080BAE44: .4byte gBattlerPartyIndexes
-_080BAE48: .4byte gEnemyParty
-_080BAE4C:
- ldr r1, _080BAF0C @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BAF10 @ =gPlayerParty
-_080BAE5C:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r0, _080BAF14 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8076E34
- lsls r0, 24
- lsrs r4, r0, 24
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BAF18 @ =gFile_graphics_battle_anims_masks_curse_tilemap
- bl sub_807543C
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080BAEAC
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080BAEAC:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BAF1C @ =gFile_graphics_battle_anims_masks_curse_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080BAF20 @ =gUnknown_83E7CC8
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- adds r1, 0x1
- movs r2, 0x2
- bl LoadPalette
- ldr r2, _080BAF24 @ =gBattle_BG1_X
- ldr r0, _080BAF28 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x20]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r2]
- ldr r2, _080BAF2C @ =gBattle_BG1_Y
- ldrh r0, [r1, 0x22]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r2]
- ldr r1, _080BAF30 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- strh r7, [r0, 0x14]
- ldr r1, _080BAF34 @ =sub_80BAF38
- str r1, [r0]
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BAF0C: .4byte gBattlerPartyIndexes
-_080BAF10: .4byte gPlayerParty
-_080BAF14: .4byte gBattleAnimAttacker
-_080BAF18: .4byte gFile_graphics_battle_anims_masks_curse_tilemap
-_080BAF1C: .4byte gFile_graphics_battle_anims_masks_curse_sheet
-_080BAF20: .4byte gUnknown_83E7CC8
-_080BAF24: .4byte gBattle_BG1_X
-_080BAF28: .4byte gSprites
-_080BAF2C: .4byte gBattle_BG1_Y
-_080BAF30: .4byte gTasks
-_080BAF34: .4byte sub_80BAF38
- thumb_func_end sub_80BACEC
-
- thumb_func_start sub_80BAF38
-sub_80BAF38: @ 80BAF38
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080BB068 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x1C]
- adds r0, 0x4
- movs r1, 0
- mov r8, r1
- strh r0, [r5, 0x1C]
- ldr r7, _080BB06C @ =gBattle_BG1_Y
- ldrh r2, [r7]
- subs r1, r2, 0x4
- strh r1, [r7]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x40
- bne _080BB05A
- mov r0, r8
- strh r0, [r5, 0x1C]
- adds r0, r2, 0
- adds r0, 0x3C
- strh r0, [r7]
- ldrh r0, [r5, 0x1E]
- adds r0, 0x1
- strh r0, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080BB05A
- movs r0, 0
- bl sub_8073128
- ldr r0, _080BB070 @ =gUnknown_2022984
- mov r1, r8
- strh r1, [r0]
- ldr r0, _080BB074 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080BB078 @ =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 _080BAFCA
- movs r0, 0xA
- bl GetGpuReg
- add r1, sp, 0x10
- strh r0, [r1]
- ldrb r2, [r1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrh r1, [r1]
- movs r0, 0xA
- bl SetGpuReg
-_080BAFCA:
- 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 r0, 0
- bl GetAnimBankSpriteId
- ldr r4, _080BB07C @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_8075358
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080BB050
- ldr r2, _080BB080 @ =gBattlerSpriteIds
- ldr r0, _080BB084 @ =gBattleAnimAttacker
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- adds r0, r2
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
-_080BB050:
- mov r2, r8
- strh r2, [r7]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080BB05A:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB068: .4byte gTasks
-_080BB06C: .4byte gBattle_BG1_Y
-_080BB070: .4byte gUnknown_2022984
-_080BB074: .4byte gUnknown_2022986
-_080BB078: .4byte 0x00003f3f
-_080BB07C: .4byte gSprites
-_080BB080: .4byte gBattlerSpriteIds
-_080BB084: .4byte gBattleAnimAttacker
- thumb_func_end sub_80BAF38
-
- thumb_func_start sub_80BB088
-sub_80BB088: @ 80BB088
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080BB0C8 @ =gUnknown_20399B4
- movs r0, 0x18
- bl AllocZeroed
- str r0, [r4]
- movs r2, 0
- ldr r3, _080BB0CC @ =gBattleAnimArgs
-_080BB09C:
- ldr r1, [r4]
- lsls r0, r2, 1
- adds r1, 0x4
- adds r1, r0
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _080BB09C
- ldr r0, _080BB0D0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080BB0D4 @ =sub_80BB0D8
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB0C8: .4byte gUnknown_20399B4
-_080BB0CC: .4byte gBattleAnimArgs
-_080BB0D0: .4byte gTasks
-_080BB0D4: .4byte sub_80BB0D8
- thumb_func_end sub_80BB088
-
- thumb_func_start sub_80BB0D8
-sub_80BB0D8: @ 80BB0D8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080BB0F0 @ =gUnknown_20399B4
- ldr r1, [r0]
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080BB0F8
- ldr r0, _080BB0F4 @ =gBattleAnimAttacker
- b _080BB0FA
- .align 2, 0
-_080BB0F0: .4byte gUnknown_20399B4
-_080BB0F4: .4byte gBattleAnimAttacker
-_080BB0F8:
- ldr r0, _080BB230 @ =gBattleAnimTarget
-_080BB0FA:
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r4, _080BB234 @ =gUnknown_20399B4
- ldr r2, [r4]
- ldrb r0, [r2]
- movs r1, 0x2
- eors r0, r1
- strb r0, [r2, 0x1]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080BB12A
- ldr r1, [r4]
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080BB130
- ldrb r0, [r1, 0x1]
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _080BB130
-_080BB12A:
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1, 0xA]
-_080BB130:
- ldr r0, _080BB238 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BB23C @ =gUnknown_2022986
- strh r1, [r0]
- ldr r1, _080BB240 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080BB244 @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080BB248 @ =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
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080BB18E
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080BB18E:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080BB20A
- ldr r4, _080BB234 @ =gUnknown_20399B4
- ldr r1, [r4]
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080BB20A
- ldrb r0, [r1]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080BB1C0
- ldr r0, [r4]
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- bne _080BB20A
-_080BB1C0:
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl IsBattlerSpriteVisible
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bne _080BB20A
- ldr r3, _080BB24C @ =gSprites
- ldr r1, _080BB250 @ =gBattlerSpriteIds
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- adds r0, r1
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, [r4]
- strb r5, [r0, 0x2]
-_080BB20A:
- ldr r4, _080BB234 @ =gUnknown_20399B4
- ldr r0, [r4]
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BB25C
- ldr r1, _080BB254 @ =gBattlerPartyIndexes
- ldr r0, [r4]
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BB258 @ =gEnemyParty
- b _080BB26E
- .align 2, 0
-_080BB230: .4byte gBattleAnimTarget
-_080BB234: .4byte gUnknown_20399B4
-_080BB238: .4byte gUnknown_2022984
-_080BB23C: .4byte gUnknown_2022986
-_080BB240: .4byte 0x00003f3f
-_080BB244: .4byte 0x00003f3d
-_080BB248: .4byte 0x00003f42
-_080BB24C: .4byte gSprites
-_080BB250: .4byte gBattlerSpriteIds
-_080BB254: .4byte gBattlerPartyIndexes
-_080BB258: .4byte gEnemyParty
-_080BB25C:
- ldr r1, _080BB290 @ =gBattlerPartyIndexes
- ldr r0, [r4]
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BB294 @ =gPlayerParty
-_080BB26E:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- ldr r1, [r4]
- strh r0, [r1, 0x14]
- ldr r0, _080BB298 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _080BB29C @ =sub_80BB2A0
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB290: .4byte gBattlerPartyIndexes
-_080BB294: .4byte gPlayerParty
-_080BB298: .4byte gTasks
-_080BB29C: .4byte sub_80BB2A0
- thumb_func_end sub_80BB0D8
-
- thumb_func_start sub_80BB2A0
-sub_80BB2A0: @ 80BB2A0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r6, _080BB300 @ =gBattlerSpriteIds
- ldr r4, _080BB304 @ =gUnknown_20399B4
- ldr r2, [r4]
- ldrb r0, [r2]
- adds r1, r0, r6
- ldrb r1, [r1]
- ldrh r2, [r2, 0x14]
- bl sub_8076E34
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, [r4]
- movs r1, 0xA
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _080BB2E2
- ldrb r0, [r2, 0x1]
- adds r1, r0, r6
- ldrb r1, [r1]
- ldrh r2, [r2, 0x14]
- bl sub_8076E34
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
-_080BB2E2:
- mov r0, sp
- bl sub_80752A0
- ldr r0, [r4]
- movs r4, 0x4
- ldrsh r0, [r0, r4]
- cmp r0, 0
- bne _080BB30C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BB308 @ =gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
- bl sub_807543C
- b _080BB316
- .align 2, 0
-_080BB300: .4byte gBattlerSpriteIds
-_080BB304: .4byte gUnknown_20399B4
-_080BB308: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap
-_080BB30C:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BB354 @ =gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
- bl sub_807543C
-_080BB316:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080BB32E
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080BB32E:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080BB358 @ =gFile_graphics_battle_anims_masks_stat_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080BB35C @ =gUnknown_20399B4
- ldr r0, [r0]
- movs r1, 0x6
- ldrsh r0, [r0, r1]
- cmp r0, 0x6
- bhi _080BB3C4
- lsls r0, 2
- ldr r1, _080BB360 @ =_080BB364
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BB354: .4byte gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap
-_080BB358: .4byte gFile_graphics_battle_anims_masks_stat_sheet
-_080BB35C: .4byte gUnknown_20399B4
-_080BB360: .4byte _080BB364
- .align 2, 0
-_080BB364:
- .4byte _080BB380
- .4byte _080BB388
- .4byte _080BB390
- .4byte _080BB398
- .4byte _080BB3A0
- .4byte _080BB3A8
- .4byte _080BB3B0
-_080BB380:
- ldr r0, _080BB384 @ =gFile_graphics_battle_anims_masks_stat2_palette
- b _080BB3B2
- .align 2, 0
-_080BB384: .4byte gFile_graphics_battle_anims_masks_stat2_palette
-_080BB388:
- ldr r0, _080BB38C @ =gFile_graphics_battle_anims_masks_stat1_palette
- b _080BB3B2
- .align 2, 0
-_080BB38C: .4byte gFile_graphics_battle_anims_masks_stat1_palette
-_080BB390:
- ldr r0, _080BB394 @ =gFile_graphics_battle_anims_masks_stat3_palette
- b _080BB3B2
- .align 2, 0
-_080BB394: .4byte gFile_graphics_battle_anims_masks_stat3_palette
-_080BB398:
- ldr r0, _080BB39C @ =gFile_graphics_battle_anims_masks_stat4_palette
- b _080BB3B2
- .align 2, 0
-_080BB39C: .4byte gFile_graphics_battle_anims_masks_stat4_palette
-_080BB3A0:
- ldr r0, _080BB3A4 @ =gFile_graphics_battle_anims_masks_stat6_palette
- b _080BB3B2
- .align 2, 0
-_080BB3A4: .4byte gFile_graphics_battle_anims_masks_stat6_palette
-_080BB3A8:
- ldr r0, _080BB3AC @ =gFile_graphics_battle_anims_masks_stat7_palette
- b _080BB3B2
- .align 2, 0
-_080BB3AC: .4byte gFile_graphics_battle_anims_masks_stat7_palette
-_080BB3B0:
- ldr r0, _080BB3C0 @ =gFile_graphics_battle_anims_masks_stat8_palette
-_080BB3B2:
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- b _080BB3D2
- .align 2, 0
-_080BB3C0: .4byte gFile_graphics_battle_anims_masks_stat8_palette
-_080BB3C4:
- ldr r0, _080BB3FC @ =gFile_graphics_battle_anims_masks_stat5_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
-_080BB3D2:
- ldr r3, _080BB400 @ =gBattle_BG1_X
- movs r2, 0
- strh r2, [r3]
- ldr r0, _080BB404 @ =gBattle_BG1_Y
- strh r2, [r0]
- ldr r1, _080BB408 @ =gUnknown_20399B4
- ldr r0, [r1]
- movs r4, 0x4
- ldrsh r0, [r0, r4]
- adds r4, r1, 0
- cmp r0, 0x1
- bne _080BB414
- movs r0, 0x40
- strh r0, [r3]
- ldr r2, _080BB40C @ =gTasks
- lsls r3, r5, 2
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r2
- ldr r1, _080BB410 @ =0x0000fffd
- b _080BB420
- .align 2, 0
-_080BB3FC: .4byte gFile_graphics_battle_anims_masks_stat5_palette
-_080BB400: .4byte gBattle_BG1_X
-_080BB404: .4byte gBattle_BG1_Y
-_080BB408: .4byte gUnknown_20399B4
-_080BB40C: .4byte gTasks
-_080BB410: .4byte 0x0000fffd
-_080BB414:
- ldr r2, _080BB43C @ =gTasks
- lsls r3, r5, 2
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0x3
-_080BB420:
- strh r1, [r0, 0xA]
- ldr r0, [r4]
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BB440
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0xA
- strh r1, [r0, 0x10]
- movs r1, 0x14
- b _080BB44C
- .align 2, 0
-_080BB43C: .4byte gTasks
-_080BB440:
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0xD
- strh r1, [r0, 0x10]
- movs r1, 0x1E
-_080BB44C:
- strh r1, [r0, 0x12]
- adds r1, r3, r5
- lsls r1, 3
- adds r1, r2
- strh r7, [r1, 0x8]
- ldr r3, [r4]
- ldrh r0, [r3, 0xA]
- strh r0, [r1, 0xC]
- mov r4, r8
- strh r4, [r1, 0xE]
- ldrb r0, [r3, 0x2]
- strh r0, [r1, 0x14]
- ldr r2, _080BB490 @ =gBattlerSpriteIds
- ldrb r0, [r3, 0x1]
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r1, 0x16]
- ldr r0, _080BB494 @ =sub_80BB4B8
- str r0, [r1]
- movs r1, 0x4
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080BB498
- movs r0, 0x40
- negs r0, r0
- bl sub_8073B08
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xE8
- bl PlaySE12WithPanning
- b _080BB4AC
- .align 2, 0
-_080BB490: .4byte gBattlerSpriteIds
-_080BB494: .4byte sub_80BB4B8
-_080BB498:
- movs r0, 0x40
- negs r0, r0
- bl sub_8073B08
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xEE
- bl PlaySE12WithPanning
-_080BB4AC:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BB2A0
-
- thumb_func_start sub_80BB4B8
-sub_80BB4B8: @ 80BB4B8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, _080BB4E4 @ =gBattle_BG1_Y
- ldr r1, _080BB4E8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0xA]
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- movs r0, 0x26
- ldrsh r2, [r5, r0]
- cmp r2, 0x1
- beq _080BB52E
- cmp r2, 0x1
- bgt _080BB4EC
- cmp r2, 0
- beq _080BB4F6
- b _080BB644
- .align 2, 0
-_080BB4E4: .4byte gBattle_BG1_Y
-_080BB4E8: .4byte gTasks
-_080BB4EC:
- cmp r2, 0x2
- beq _080BB544
- cmp r2, 0x3
- beq _080BB582
- b _080BB644
-_080BB4F6:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- cmp r0, 0
- bgt _080BB504
- b _080BB644
-_080BB504:
- strh r2, [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 r1, [r5, r2]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- cmp r1, r0
- beq _080BB52C
- b _080BB644
-_080BB52C:
- b _080BB57A
-_080BB52E:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- cmp r0, r1
- beq _080BB542
- b _080BB644
-_080BB542:
- b _080BB57A
-_080BB544:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- cmp r0, 0
- ble _080BB644
- movs r0, 0
- strh r0, [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 r1, 0x20
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080BB644
- movs r0, 0
- bl sub_8073128
-_080BB57A:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
- b _080BB644
-_080BB582:
- ldr r0, _080BB64C @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BB650 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080BB654 @ =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 _080BB5B2
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080BB5B2:
- 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 r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080BB658 @ =gSprites
- adds r0, r4
- bl DestroySprite
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080BB606
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
-_080BB606:
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080BB632
- movs r2, 0x16
- ldrsh r0, [r5, r2]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
-_080BB632:
- ldr r4, _080BB65C @ =gUnknown_20399B4
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080BB644:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB64C: .4byte gUnknown_2022984
-_080BB650: .4byte gUnknown_2022986
-_080BB654: .4byte 0x00003f3f
-_080BB658: .4byte gSprites
-_080BB65C: .4byte gUnknown_20399B4
- thumb_func_end sub_80BB4B8
-
- thumb_func_start sub_80BB660
-sub_80BB660: @ 80BB660
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x1
- bl sub_8075CB8
- adds r6, r0, 0
- movs r1, 0
- bl sub_80BB790
- ldr r0, _080BB6C0 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- lsrs r0, r6, 16
- movs r5, 0
- strh r0, [r4, 0x24]
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- adds r6, r0, 0
- ldr r1, _080BB6C4 @ =0x0000ffff
- ands r6, r1
- adds r0, r6, 0
- bl sub_80BB790
- strh r6, [r4, 0x26]
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
- ldr r0, _080BB6C8 @ =sub_80BB6CC
- str r0, [r4]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB6C0: .4byte gTasks
-_080BB6C4: .4byte 0x0000ffff
-_080BB6C8: .4byte sub_80BB6CC
- thumb_func_end sub_80BB660
-
- thumb_func_start sub_80BB6CC
-sub_80BB6CC: @ 80BB6CC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080BB6F0 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080BB710
- cmp r1, 0x1
- bgt _080BB6F4
- cmp r1, 0
- beq _080BB6FA
- b _080BB78A
- .align 2, 0
-_080BB6F0: .4byte gTasks
-_080BB6F4:
- cmp r1, 0x2
- beq _080BB784
- b _080BB78A
-_080BB6FA:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080BB78A
- strh r1, [r4, 0xA]
- movs r0, 0x10
- strh r0, [r4, 0xC]
- b _080BB778
-_080BB710:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080BB78A
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- movs r5, 0
- movs r6, 0x1
-_080BB72C:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- asrs r0, r5
- ands r0, r6
- cmp r0, 0
- beq _080BB746
- lsls r0, r5, 20
- lsrs r0, 16
- ldrb r2, [r4, 0xC]
- movs r1, 0x10
- ldr r3, _080BB780 @ =0x0000ffff
- bl BlendPalette
-_080BB746:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- asrs r0, r5
- ands r0, r6
- cmp r0, 0
- beq _080BB766
- lsls r0, r5, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r0, 16
- ldrb r2, [r4, 0xC]
- movs r1, 0x10
- movs r3, 0
- bl BlendPalette
-_080BB766:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xF
- bls _080BB72C
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BB78A
-_080BB778:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080BB78A
- .align 2, 0
-_080BB780: .4byte 0x0000ffff
-_080BB784:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080BB78A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BB6CC
-
- thumb_func_start sub_80BB790
-sub_80BB790: @ 80BB790
- push {r4-r6,lr}
- adds r3, r0, 0
- lsls r1, 16
- lsrs r6, r1, 16
- movs r2, 0
-_080BB79A:
- movs r0, 0x1
- ands r0, r3
- lsrs r4, r3, 1
- adds r5, r2, 0x1
- cmp r0, 0
- beq _080BB7C6
- lsls r0, r2, 20
- lsrs r2, r0, 16
- adds r0, r2, 0
- adds r0, 0x10
- cmp r2, r0
- bge _080BB7C6
- ldr r1, _080BB7D8 @ =gPlttBufferFaded
- adds r3, r0, 0
-_080BB7B6:
- lsls r0, r2, 1
- adds r0, r1
- strh r6, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- blt _080BB7B6
-_080BB7C6:
- adds r3, r4, 0
- lsls r0, r5, 16
- lsrs r2, r0, 16
- cmp r2, 0x1F
- bls _080BB79A
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB7D8: .4byte gPlttBufferFaded
- thumb_func_end sub_80BB790
-
- thumb_func_start sub_80BB7DC
-sub_80BB7DC: @ 80BB7DC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- movs r2, 0
- ldr r0, _080BB824 @ =gBattleAnimAttacker
- ldrb r3, [r0]
- movs r5, 0x1
-_080BB7EC:
- cmp r3, r2
- beq _080BB7FA
- adds r1, r2, 0
- adds r1, 0x10
- adds r0, r5, 0
- lsls r0, r1
- orrs r4, r0
-_080BB7FA:
- adds r2, 0x1
- cmp r2, 0x3
- bls _080BB7EC
- movs r2, 0x5
- ldr r0, _080BB828 @ =gBattleAnimArgs
- adds r1, r0, 0
- adds r1, 0x8
-_080BB808:
- ldrh r0, [r1]
- strh r0, [r1, 0x2]
- subs r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _080BB808
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80BAA4C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB824: .4byte gBattleAnimAttacker
-_080BB828: .4byte gBattleAnimArgs
- thumb_func_end sub_80BB7DC
-
- thumb_func_start sub_80BB82C
-sub_80BB82C: @ 80BB82C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl sub_8075458
- ldr r0, _080BB894 @ =sub_80BB8A4
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080BB898 @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080BB868
- ldr r0, _080BB89C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BB868
- ldrh r0, [r4]
- negs r0, r0
- strh r0, [r4]
- ldrh r0, [r4, 0x2]
- negs r0, r0
- strh r0, [r4, 0x2]
-_080BB868:
- ldr r0, _080BB8A0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r2, _080BB898 @ =gBattleAnimArgs
- ldrh r0, [r2]
- strh r0, [r1, 0xA]
- ldrh r0, [r2, 0x2]
- strh r0, [r1, 0xC]
- ldrh r0, [r2, 0x6]
- strh r0, [r1, 0xE]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB894: .4byte sub_80BB8A4
-_080BB898: .4byte gBattleAnimArgs
-_080BB89C: .4byte gBattleAnimAttacker
-_080BB8A0: .4byte gTasks
- thumb_func_end sub_80BB82C
-
- thumb_func_start sub_80BB8A4
-sub_80BB8A4: @ 80BB8A4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080BB910 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r3, [r1, 0xA]
- ldrh r0, [r1, 0x1C]
- adds r3, r0
- movs r4, 0
- mov r12, r4
- strh r3, [r1, 0x1C]
- ldrh r2, [r1, 0xC]
- ldrh r7, [r1, 0x1E]
- adds r2, r7
- strh r2, [r1, 0x1E]
- ldr r6, _080BB914 @ =gBattle_BG3_X
- lsls r0, r3, 16
- asrs r0, 24
- ldrh r4, [r6]
- adds r0, r4
- strh r0, [r6]
- ldr r4, _080BB918 @ =gBattle_BG3_Y
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r7, [r4]
- adds r0, r7
- strh r0, [r4]
- movs r0, 0xFF
- ands r3, r0
- strh r3, [r1, 0x1C]
- ands r2, r0
- strh r2, [r1, 0x1E]
- ldr r0, _080BB91C @ =gBattleAnimArgs
- movs r3, 0xE
- ldrsh r2, [r0, r3]
- movs r7, 0xE
- ldrsh r0, [r1, r7]
- cmp r2, r0
- bne _080BB90A
- mov r0, r12
- strh r0, [r6]
- strh r0, [r4]
- movs r0, 0x1
- bl sub_8075458
- adds r0, r5, 0
- bl DestroyTask
-_080BB90A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB910: .4byte gTasks
-_080BB914: .4byte gBattle_BG3_X
-_080BB918: .4byte gBattle_BG3_Y
-_080BB91C: .4byte gBattleAnimArgs
- thumb_func_end sub_80BB8A4
-
- thumb_func_start sub_80BB920
-sub_80BB920: @ 80BB920
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080BB944 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- ldr r1, _080BB948 @ =gBattleAnimArgs
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0xE]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB944: .4byte gBattleAnimAttacker
-_080BB948: .4byte gBattleAnimArgs
- thumb_func_end sub_80BB920
-
- thumb_func_start sub_80BB94C
-sub_80BB94C: @ 80BB94C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080BB970 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- ldr r1, _080BB974 @ =gBattleAnimArgs
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0xE]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB970: .4byte gBattleAnimTarget
-_080BB974: .4byte gBattleAnimArgs
- thumb_func_end sub_80BB94C
-
- thumb_func_start sub_80BB978
-sub_80BB978: @ 80BB978
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r5, _080BB9A4 @ =gBattleAnimArgs
- movs r4, 0
- ldr r0, _080BB9A8 @ =gBattleAnimAttacker
- ldrb r2, [r0]
- movs r0, 0x2
- ldr r1, _080BB9AC @ =gBattleAnimTarget
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bne _080BB994
- movs r4, 0x1
-_080BB994:
- strh r4, [r5, 0xE]
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB9A4: .4byte gBattleAnimArgs
-_080BB9A8: .4byte gBattleAnimAttacker
-_080BB9AC: .4byte gBattleAnimTarget
- thumb_func_end sub_80BB978
-
- thumb_func_start sub_80BB9B0
-sub_80BB9B0: @ 80BB9B0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r6, _080BBA10 @ =gSprites
-_080BB9BA:
- ldr r0, _080BBA14 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- cmp r4, r0
- beq _080BB9F8
- lsls r0, r4, 24
- lsrs r0, 24
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080BB9F8
- ldr r0, _080BBA18 @ =gBattlerSpriteIds
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldr r1, _080BBA1C @ =gBattleAnimArgs
- adds r2, 0x3E
- movs r0, 0x1
- ldrb r3, [r1]
- ands r3, r0
- lsls r3, 2
- ldrb r0, [r2]
- movs r7, 0x5
- negs r7, r7
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
-_080BB9F8:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080BB9BA
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBA10: .4byte gSprites
-_080BBA14: .4byte gBattleAnimAttacker
-_080BBA18: .4byte gBattlerSpriteIds
-_080BBA1C: .4byte gBattleAnimArgs
- thumb_func_end sub_80BB9B0
-
- thumb_func_start sub_80BBA20
-sub_80BBA20: @ 80BBA20
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- ldr r1, [sp, 0x44]
- ldr r4, [sp, 0x48]
- ldr r5, [sp, 0x4C]
- ldr r6, [sp, 0x50]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x14]
- lsls r3, 24
- lsrs r7, r3, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x18]
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x1C]
- lsls r6, 24
- lsrs r6, 24
- mov r10, r6
- movs r0, 0
- str r0, [sp, 0x20]
- movs r0, 0x2
- adds r6, r7, 0
- eors r6, r0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080BBA82
- mov r1, r8
- cmp r1, 0
- beq _080BBA86
- adds r0, r6, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _080BBA86
-_080BBA82:
- movs r2, 0
- mov r8, r2
-_080BBA86:
- ldr r0, _080BBB20 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BBB24 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r1, _080BBB28 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080BBB2C @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080BBB30 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0xA
- bl GetGpuReg
- add r4, sp, 0x10
- strh r0, [r4]
- ldrb r1, [r4]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- mov r2, sp
- adds r2, 0x11
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080BBAFC
- ldrb r0, [r4]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4]
-_080BBAFC:
- ldrh r1, [r4]
- movs r0, 0xA
- bl SetGpuReg
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BBB3C
- ldr r1, _080BBB34 @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BBB38 @ =gEnemyParty
- b _080BBB4A
- .align 2, 0
-_080BBB20: .4byte gUnknown_2022984
-_080BBB24: .4byte gUnknown_2022986
-_080BBB28: .4byte 0x00003f3f
-_080BBB2C: .4byte 0x00003f3d
-_080BBB30: .4byte 0x00003f42
-_080BBB34: .4byte gBattlerPartyIndexes
-_080BBB38: .4byte gEnemyParty
-_080BBB3C:
- ldr r1, _080BBC10 @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BBC14 @ =gPlayerParty
-_080BBB4A:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r5, _080BBC18 @ =gBattlerSpriteIds
- adds r0, r7, r5
- ldrb r1, [r0]
- adds r0, r7, 0
- adds r2, r4, 0
- bl sub_8076E34
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, r8
- cmp r0, 0
- beq _080BBB80
- adds r0, r6, r5
- ldrb r1, [r0]
- adds r0, r6, 0
- adds r2, r4, 0
- bl sub_8076E34
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x20]
-_080BBB80:
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, [sp, 0x58]
- bl sub_807543C
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080BBBA8
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080BBBA8:
- mov r0, sp
- ldrb r0, [r0, 0x9]
- mov r1, sp
- ldrh r2, [r1, 0xA]
- ldr r1, [sp, 0x54]
- bl sub_80753B4
- mov r0, sp
- ldrb r1, [r0, 0x8]
- lsls r1, 4
- ldr r0, [sp, 0x5C]
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r0, _080BBC1C @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BBC20 @ =gBattle_BG1_Y
- strh r1, [r0]
- ldr r1, _080BBC24 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- mov r1, sp
- ldrh r1, [r1, 0x14]
- strh r1, [r0, 0xA]
- mov r2, sp
- ldrh r2, [r2, 0x18]
- strh r2, [r0, 0x10]
- mov r1, r10
- strh r1, [r0, 0x12]
- mov r2, sp
- ldrh r2, [r2, 0x1C]
- strh r2, [r0, 0x14]
- strh r7, [r0, 0x8]
- mov r1, r8
- strh r1, [r0, 0xC]
- mov r2, sp
- ldrh r2, [r2, 0x20]
- strh r2, [r0, 0xE]
- ldr r1, _080BBC28 @ =sub_80BBC2C
- str r1, [r0]
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBC10: .4byte gBattlerPartyIndexes
-_080BBC14: .4byte gPlayerParty
-_080BBC18: .4byte gBattlerSpriteIds
-_080BBC1C: .4byte gBattle_BG1_X
-_080BBC20: .4byte gBattle_BG1_Y
-_080BBC24: .4byte gTasks
-_080BBC28: .4byte sub_80BBC2C
- thumb_func_end sub_80BBA20
-
- thumb_func_start sub_80BBC2C
-sub_80BBC2C: @ 80BBC2C
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080BBC68 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r3, r0, r1
- movs r0, 0xA
- ldrsh r2, [r3, r0]
- adds r5, r1, 0
- cmp r2, 0
- bge _080BBC4A
- negs r2, r2
-_080BBC4A:
- ldrh r0, [r3, 0x22]
- adds r4, r0, r2
- strh r4, [r3, 0x22]
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bge _080BBC70
- ldr r2, _080BBC6C @ =gBattle_BG1_Y
- lsls r1, r4, 16
- asrs r1, 24
- ldrh r0, [r2]
- subs r0, r1
- strh r0, [r2]
- b _080BBC7C
- .align 2, 0
-_080BBC68: .4byte gTasks
-_080BBC6C: .4byte gBattle_BG1_Y
-_080BBC70:
- ldr r1, _080BBCA0 @ =gBattle_BG1_Y
- lsls r0, r4, 16
- asrs r0, 24
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
-_080BBC7C:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r5
- ldrh r1, [r5, 0x22]
- movs r0, 0xFF
- ands r0, r1
- movs r2, 0
- strh r0, [r5, 0x22]
- movs r3, 0x26
- ldrsh r0, [r5, r3]
- cmp r0, 0x1
- beq _080BBCE6
- cmp r0, 0x1
- bgt _080BBCA4
- cmp r0, 0
- beq _080BBCAA
- b _080BBDD8
- .align 2, 0
-_080BBCA0: .4byte gBattle_BG1_Y
-_080BBCA4:
- cmp r0, 0x2
- beq _080BBD00
- b _080BBDD8
-_080BBCAA:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x14
- ldrsh r1, [r5, r3]
- cmp r0, r1
- bge _080BBCBE
- b _080BBDD8
-_080BBCBE:
- strh r2, [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 r0, 0x20
- ldrsh r1, [r5, r0]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bne _080BBDD8
- b _080BBCF8
-_080BBCE6:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x12
- ldrsh r1, [r5, r3]
- cmp r0, r1
- bne _080BBDD8
-_080BBCF8:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
- b _080BBDD8
-_080BBD00:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x14
- ldrsh r1, [r5, r3]
- cmp r0, r1
- blt _080BBDD8
- strh r2, [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 _080BBDD8
- movs r0, 0
- bl sub_8073128
- ldr r0, _080BBDE0 @ =gUnknown_2022984
- strh r4, [r0]
- ldr r0, _080BBDE4 @ =gUnknown_2022986
- strh r4, [r0]
- ldr r4, _080BBDE8 @ =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 _080BBD7E
- movs r0, 0xA
- bl GetGpuReg
- mov r1, sp
- strh r0, [r1]
- mov r2, sp
- ldrb r1, [r2]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- mov r0, sp
- ldrh r1, [r0]
- movs r0, 0xA
- bl SetGpuReg
-_080BBD7E:
- 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 r3, 0x8
- ldrsh r1, [r5, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080BBDEC @ =gSprites
- adds r0, r4
- bl DestroySprite
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080BBDD2
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
-_080BBDD2:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080BBDD8:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBDE0: .4byte gUnknown_2022984
-_080BBDE4: .4byte gUnknown_2022986
-_080BBDE8: .4byte 0x00003f3f
-_080BBDEC: .4byte gSprites
- thumb_func_end sub_80BBC2C
-
- thumb_func_start sub_80BBDF0
-sub_80BBDF0: @ 80BBDF0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BBE08 @ =gBattleAnimArgs
- ldr r1, _080BBE0C @ =gBattleTerrain
- ldrb r1, [r1]
- strh r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BBE08: .4byte gBattleAnimArgs
-_080BBE0C: .4byte gBattleTerrain
- thumb_func_end sub_80BBDF0
-
- thumb_func_start sub_80BBE10
-sub_80BBE10: @ 80BBE10
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- ldr r1, _080BBE38 @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBE38: .4byte gMonSpritesGfxPtr
- thumb_func_end sub_80BBE10
-
- thumb_func_start sub_80BBE3C
-sub_80BBE3C: @ 80BBE3C
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _080BBE68 @ =gMonSpritesGfxPtr
- ldr r0, [r6]
- movs r5, 0xBE
- lsls r5, 1
- adds r0, r5
- ldr r0, [r0]
- bl Free
- ldr r0, [r6]
- adds r0, r5
- movs r1, 0
- str r1, [r0]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBE68: .4byte gMonSpritesGfxPtr
- thumb_func_end sub_80BBE3C
-
- thumb_func_start sub_80BBE6C
-sub_80BBE6C: @ 80BBE6C
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080BBEAC @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BBEB0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080BBEC8
- movs r2, 0x1
-_080BBE9E:
- lsrs r1, 1
- adds r4, 0x1
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080BBE9E
- b _080BBEC8
- .align 2, 0
-_080BBEAC: .4byte gBattleAnimArgs
-_080BBEB0:
- cmp r0, 0x1
- bne _080BBEBC
- ldr r0, _080BBEB8 @ =gBattleAnimAttacker
- b _080BBEC2
- .align 2, 0
-_080BBEB8: .4byte gBattleAnimAttacker
-_080BBEBC:
- cmp r0, 0x2
- bne _080BBEC8
- ldr r0, _080BBEF8 @ =gBattleAnimTarget
-_080BBEC2:
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
-_080BBEC8:
- ldr r0, _080BBEFC @ =gMonSpritesGfxPtr
- ldr r1, [r0]
- ldr r0, _080BBF00 @ =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r0, [r0, r2]
- movs r2, 0xBE
- lsls r2, 1
- adds r1, r2
- ldr r1, [r1]
- lsls r0, 5
- adds r0, r1
- lsls r1, r4, 5
- ldr r2, _080BBF04 @ =gPlttBufferUnfaded
- adds r1, r2
- movs r2, 0x20
- bl memcpy
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBEF8: .4byte gBattleAnimTarget
-_080BBEFC: .4byte gMonSpritesGfxPtr
-_080BBF00: .4byte gBattleAnimArgs
-_080BBF04: .4byte gPlttBufferUnfaded
- thumb_func_end sub_80BBE6C
-
- thumb_func_start sub_80BBF08
-sub_80BBF08: @ 80BBF08
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080BBF48 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BBF4C
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080BBF64
- movs r2, 0x1
-_080BBF3A:
- lsrs r1, 1
- adds r4, 0x1
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080BBF3A
- b _080BBF64
- .align 2, 0
-_080BBF48: .4byte gBattleAnimArgs
-_080BBF4C:
- cmp r0, 0x1
- bne _080BBF58
- ldr r0, _080BBF54 @ =gBattleAnimAttacker
- b _080BBF5E
- .align 2, 0
-_080BBF54: .4byte gBattleAnimAttacker
-_080BBF58:
- cmp r0, 0x2
- bne _080BBF64
- ldr r0, _080BBF94 @ =gBattleAnimTarget
-_080BBF5E:
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
-_080BBF64:
- lsls r0, r4, 5
- ldr r1, _080BBF98 @ =gPlttBufferUnfaded
- adds r0, r1
- ldr r1, _080BBF9C @ =gMonSpritesGfxPtr
- ldr r2, [r1]
- ldr r1, _080BBFA0 @ =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r1, [r1, r3]
- movs r3, 0xBE
- lsls r3, 1
- adds r2, r3
- ldr r2, [r2]
- lsls r1, 5
- adds r1, r2
- movs r2, 0x20
- bl memcpy
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBF94: .4byte gBattleAnimTarget
-_080BBF98: .4byte gPlttBufferUnfaded
-_080BBF9C: .4byte gMonSpritesGfxPtr
-_080BBFA0: .4byte gBattleAnimArgs
- thumb_func_end sub_80BBF08
-
- thumb_func_start sub_80BBFA4
-sub_80BBFA4: @ 80BBFA4
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080BBFE4 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BBFE8
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8075BE8
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080BC000
- movs r2, 0x1
-_080BBFD6:
- lsrs r1, 1
- adds r4, 0x1
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080BBFD6
- b _080BC000
- .align 2, 0
-_080BBFE4: .4byte gBattleAnimArgs
-_080BBFE8:
- cmp r0, 0x1
- bne _080BBFF4
- ldr r0, _080BBFF0 @ =gBattleAnimAttacker
- b _080BBFFA
- .align 2, 0
-_080BBFF0: .4byte gBattleAnimAttacker
-_080BBFF4:
- cmp r0, 0x2
- bne _080BC000
- ldr r0, _080BC020 @ =gBattleAnimTarget
-_080BBFFA:
- ldrb r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
-_080BC000:
- lsls r1, r4, 5
- ldr r0, _080BC024 @ =gPlttBufferUnfaded
- adds r0, r1, r0
- ldr r2, _080BC028 @ =gPlttBufferFaded
- adds r1, r2
- movs r2, 0x20
- bl memcpy
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC020: .4byte gBattleAnimTarget
-_080BC024: .4byte gPlttBufferUnfaded
-_080BC028: .4byte gPlttBufferFaded
- thumb_func_end sub_80BBFA4
-
- thumb_func_start sub_80BC02C
-sub_80BC02C: @ 80BC02C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsContest
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080BC04C
- ldr r1, _080BC048 @ =gBattleAnimArgs
- movs r0, 0x1
- strh r0, [r1, 0xE]
- b _080BC050
- .align 2, 0
-_080BC048: .4byte gBattleAnimArgs
-_080BC04C:
- ldr r0, _080BC05C @ =gBattleAnimArgs
- strh r1, [r0, 0xE]
-_080BC050:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC05C: .4byte gBattleAnimArgs
- thumb_func_end sub_80BC02C
-
- thumb_func_start sub_80BC060
-sub_80BC060: @ 80BC060
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BC080 @ =gBattleAnimAttacker
- ldr r1, _080BC084 @ =gBattlerTarget
- ldrb r1, [r1]
- strb r1, [r2]
- ldr r2, _080BC088 @ =gBattleAnimTarget
- ldr r1, _080BC08C @ =gEffectBattler
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BC080: .4byte gBattleAnimAttacker
-_080BC084: .4byte gBattlerTarget
-_080BC088: .4byte gBattleAnimTarget
-_080BC08C: .4byte gEffectBattler
- thumb_func_end sub_80BC060
-
- thumb_func_start sub_80BC090
-sub_80BC090: @ 80BC090
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080BC0B8 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r0, _080BC0BC @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080BC0C4
- ldr r1, _080BC0C0 @ =gBattleAnimArgs
- movs r0, 0x1
- b _080BC0C8
- .align 2, 0
-_080BC0B8: .4byte gBattleAnimAttacker
-_080BC0BC: .4byte gBattleAnimTarget
-_080BC0C0: .4byte gBattleAnimArgs
-_080BC0C4:
- ldr r1, _080BC0D8 @ =gBattleAnimArgs
- movs r0, 0
-_080BC0C8:
- strh r0, [r1, 0xE]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC0D8: .4byte gBattleAnimArgs
- thumb_func_end sub_80BC090
-
- thumb_func_start sub_80BC0DC
-sub_80BC0DC: @ 80BC0DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BC0F4 @ =gBattleAnimTarget
- ldr r1, _080BC0F8 @ =gBattlerTarget
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BC0F4: .4byte gBattleAnimTarget
-_080BC0F8: .4byte gBattlerTarget
- thumb_func_end sub_80BC0DC
-
- thumb_func_start sub_80BC0FC
-sub_80BC0FC: @ 80BC0FC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BC11C @ =gBattleAnimAttacker
- ldr r1, _080BC120 @ =gBattlerAttacker
- ldrb r1, [r1]
- strb r1, [r2]
- ldr r2, _080BC124 @ =gBattleAnimTarget
- ldr r1, _080BC128 @ =gEffectBattler
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080BC11C: .4byte gBattleAnimAttacker
-_080BC120: .4byte gBattlerAttacker
-_080BC124: .4byte gBattleAnimTarget
-_080BC128: .4byte gEffectBattler
- thumb_func_end sub_80BC0FC
-
- thumb_func_start sub_80BC12C
-sub_80BC12C: @ 80BC12C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080BC144
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080BC180
-_080BC144:
- ldr r0, _080BC188 @ =gTasks
- lsls r3, r4, 2
- adds r3, r4
- lsls r3, 3
- adds r3, r0
- ldr r0, _080BC18C @ =gBattleSpritesDataPtr
- ldr r4, [r0]
- ldr r2, _080BC190 @ =gBattleAnimAttacker
- ldrb r0, [r2]
- ldr r1, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- strh r0, [r3, 0x8]
- ldrb r1, [r2]
- ldr r0, [r4]
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1]
- ldr r0, _080BC194 @ =sub_80BC19C
- str r0, [r3]
- ldr r1, _080BC198 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080BC180:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC188: .4byte gTasks
-_080BC18C: .4byte gBattleSpritesDataPtr
-_080BC190: .4byte gBattleAnimAttacker
-_080BC194: .4byte sub_80BC19C
-_080BC198: .4byte gUnknown_2037EE2
- thumb_func_end sub_80BC12C
-
- thumb_func_start sub_80BC19C
-sub_80BC19C: @ 80BC19C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BC1E8 @ =gBattleAnimArgs
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bne _080BC1E0
- ldr r0, _080BC1EC @ =gBattleSpritesDataPtr
- ldr r1, [r0]
- ldr r0, _080BC1F0 @ =gBattleAnimAttacker
- ldrb r3, [r0]
- ldr r0, [r1]
- lsls r3, 2
- adds r3, r0
- ldr r1, _080BC1F4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r1, 0x1
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r0, r4, 0
- bl DestroyTask
-_080BC1E0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC1E8: .4byte gBattleAnimArgs
-_080BC1EC: .4byte gBattleSpritesDataPtr
-_080BC1F0: .4byte gBattleAnimAttacker
-_080BC1F4: .4byte gTasks
- thumb_func_end sub_80BC19C
-
- thumb_func_start SetAnimBgAttribute
-SetAnimBgAttribute: @ 80BC1F8
- 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 _080BC20C
- b _080BC2FE
-_080BC20C:
- ldr r0, _080BC228 @ =gUnknown_83E7CCA
- adds r0, r6, r0
- ldrb r0, [r0]
- bl GetGpuReg
- ldr r1, _080BC22C @ =gUnknown_20399B8
- strh r0, [r1]
- cmp r5, 0x6
- bhi _080BC2F0
- lsls r0, r5, 2
- ldr r1, _080BC230 @ =_080BC234
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BC228: .4byte gUnknown_83E7CCA
-_080BC22C: .4byte gUnknown_20399B8
-_080BC230: .4byte _080BC234
- .align 2, 0
-_080BC234:
- .4byte _080BC250
- .4byte _080BC264
- .4byte _080BC27C
- .4byte _080BC294
- .4byte _080BC2AC
- .4byte _080BC2C8
- .4byte _080BC2DC
-_080BC250:
- ldr r2, _080BC260 @ =gUnknown_20399B8
- lsls r3, r4, 6
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x1]
- b _080BC2F0
- .align 2, 0
-_080BC260: .4byte gUnknown_20399B8
-_080BC264:
- ldr r3, _080BC278 @ =gUnknown_20399B8
- movs r0, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 5
- ldrb r2, [r3, 0x1]
- movs r0, 0x21
- negs r0, r0
- b _080BC2EA
- .align 2, 0
-_080BC278: .4byte gUnknown_20399B8
-_080BC27C:
- ldr r3, _080BC290 @ =gUnknown_20399B8
- movs r0, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 6
- ldrb r2, [r3]
- movs r0, 0x41
- negs r0, r0
- b _080BC2BA
- .align 2, 0
-_080BC290: .4byte gUnknown_20399B8
-_080BC294:
- ldr r3, _080BC2A8 @ =gUnknown_20399B8
- movs r0, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0xD
- negs r0, r0
- b _080BC2BA
- .align 2, 0
-_080BC2A8: .4byte gUnknown_20399B8
-_080BC2AC:
- ldr r3, _080BC2C4 @ =gUnknown_20399B8
- movs r0, 0x3
- adds r1, r4, 0
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x4
- negs r0, r0
-_080BC2BA:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _080BC2F0
- .align 2, 0
-_080BC2C4: .4byte gUnknown_20399B8
-_080BC2C8:
- ldr r2, _080BC2D8 @ =gUnknown_20399B8
- lsls r3, r4, 7
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
- b _080BC2F0
- .align 2, 0
-_080BC2D8: .4byte gUnknown_20399B8
-_080BC2DC:
- ldr r3, _080BC304 @ =gUnknown_20399B8
- movs r0, 0x1F
- adds r1, r4, 0
- ands r1, r0
- ldrb r2, [r3, 0x1]
- movs r0, 0x20
- negs r0, r0
-_080BC2EA:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x1]
-_080BC2F0:
- ldr r0, _080BC308 @ =gUnknown_83E7CCA
- adds r0, r6, r0
- ldrb r0, [r0]
- ldr r1, _080BC304 @ =gUnknown_20399B8
- ldrh r1, [r1]
- bl SetGpuReg
-_080BC2FE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC304: .4byte gUnknown_20399B8
-_080BC308: .4byte gUnknown_83E7CCA
- thumb_func_end SetAnimBgAttribute
-
- thumb_func_start sub_80BC30C
-sub_80BC30C: @ 80BC30C
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r2, 0x3
- bhi _080BC394
- ldr r0, _080BC338 @ =gUnknown_83E7CCE
- adds r0, r2, r0
- ldrb r0, [r0]
- bl GetGpuReg
- mov r1, sp
- strh r0, [r1]
- cmp r4, 0x6
- bhi _080BC394
- lsls r0, r4, 2
- ldr r1, _080BC33C @ =_080BC340
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BC338: .4byte gUnknown_83E7CCE
-_080BC33C: .4byte _080BC340
- .align 2, 0
-_080BC340:
- .4byte _080BC35C
- .4byte _080BC364
- .4byte _080BC36C
- .4byte _080BC374
- .4byte _080BC37C
- .4byte _080BC384
- .4byte _080BC38C
-_080BC35C:
- ldr r0, [sp]
- lsls r0, 16
- lsrs r0, 30
- b _080BC396
-_080BC364:
- ldr r0, [sp]
- lsls r0, 18
- lsrs r0, 31
- b _080BC396
-_080BC36C:
- ldr r0, [sp]
- lsls r0, 25
- lsrs r0, 31
- b _080BC396
-_080BC374:
- ldr r0, [sp]
- lsls r0, 28
- lsrs r0, 30
- b _080BC396
-_080BC37C:
- ldr r0, [sp]
- lsls r0, 30
- lsrs r0, 30
- b _080BC396
-_080BC384:
- ldr r0, [sp]
- lsls r0, 24
- lsrs r0, 31
- b _080BC396
-_080BC38C:
- ldr r0, [sp]
- lsls r0, 19
- lsrs r0, 27
- b _080BC396
-_080BC394:
- movs r0, 0
-_080BC396:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BC30C
-
- thumb_func_start HandleIntroSlide
-HandleIntroSlide: @ 80BC3A0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BC3B8 @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BC3C0
- ldr r0, _080BC3BC @ =sub_80BCC4C
- b _080BC3E8
- .align 2, 0
-_080BC3B8: .4byte gBattleTypeFlags
-_080BC3BC: .4byte sub_80BCC4C
-_080BC3C0:
- movs r0, 0x80
- lsls r0, 5
- ands r1, r0
- cmp r1, 0
- beq _080BC3E0
- ldr r0, _080BC3D8 @ =gGameVersion
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080BC3E0
- movs r4, 0x3
- ldr r0, _080BC3DC @ =task00_battle_intro_80BC6C8
- b _080BC3E8
- .align 2, 0
-_080BC3D8: .4byte gGameVersion
-_080BC3DC: .4byte task00_battle_intro_80BC6C8
-_080BC3E0:
- ldr r1, _080BC414 @ =gUnknown_83E7CD4
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
-_080BC3E8:
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080BC418 @ =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
- .align 2, 0
-_080BC414: .4byte gUnknown_83E7CD4
-_080BC418: .4byte gTasks
- thumb_func_end HandleIntroSlide
-
- thumb_func_start sub_80BC41C
-sub_80BC41C: @ 80BC41C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r0, _080BC468 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080BC46C @ =gBattle_BG1_Y
- strh r1, [r0]
- ldr r0, _080BC470 @ =gBattle_BG2_X
- strh r1, [r0]
- ldr r0, _080BC474 @ =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, _080BC478 @ =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
- .align 2, 0
-_080BC468: .4byte gBattle_BG1_X
-_080BC46C: .4byte gBattle_BG1_Y
-_080BC470: .4byte gBattle_BG2_X
-_080BC474: .4byte gBattle_BG2_Y
-_080BC478: .4byte 0x00003f3f
- thumb_func_end sub_80BC41C
-
- thumb_func_start task_battle_intro_80BC47C
-task_battle_intro_80BC47C: @ 80BC47C
- 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, _080BC4B4 @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
- strh r0, [r1]
- ldr r1, _080BC4B8 @ =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 _080BC4A8
- b _080BC6BA
-_080BC4A8:
- lsls r0, 2
- ldr r1, _080BC4BC @ =_080BC4C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BC4B4: .4byte gBattle_BG1_X
-_080BC4B8: .4byte gTasks
-_080BC4BC: .4byte _080BC4C0
- .align 2, 0
-_080BC4C0:
- .4byte _080BC4D4
- .4byte _080BC504
- .4byte _080BC52C
- .4byte _080BC574
- .4byte _080BC6B4
-_080BC4D4:
- ldr r0, _080BC4EC @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BC4F0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r1, 0x10
- b _080BC4FA
- .align 2, 0
-_080BC4EC: .4byte gBattleTypeFlags
-_080BC4F0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r1, 0x1
-_080BC4FA:
- strh r1, [r0, 0xC]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _080BC6BA
-_080BC504:
- 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 _080BC51C
- b _080BC6BA
-_080BC51C:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _080BC6BA
-_080BC52C:
- ldr r1, _080BC568 @ =gUnknown_2022986
- 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 _080BC544
- b _080BC6BA
-_080BC544:
- 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, _080BC56C @ =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, _080BC570 @ =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _080BC6BA
- .align 2, 0
-_080BC568: .4byte gUnknown_2022986
-_080BC56C: .4byte gIntroSlideFlags
-_080BC570: .4byte 0x0000fffe
-_080BC574:
- 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 _080BC590
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- b _080BC5BE
-_080BC590:
- movs r1, 0xA
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _080BC5B0
- ldr r2, _080BC5A8 @ =gBattle_BG1_Y
- ldrh r1, [r2]
- ldr r0, _080BC5AC @ =0x0000ffb0
- cmp r1, r0
- beq _080BC5BE
- subs r0, r1, 0x2
- b _080BC5BC
- .align 2, 0
-_080BC5A8: .4byte gBattle_BG1_Y
-_080BC5AC: .4byte 0x0000ffb0
-_080BC5B0:
- ldr r2, _080BC690 @ =gBattle_BG1_Y
- ldrh r1, [r2]
- ldr r0, _080BC694 @ =0x0000ffc8
- cmp r1, r0
- beq _080BC5BE
- subs r0, r1, 0x1
-_080BC5BC:
- strh r0, [r2]
-_080BC5BE:
- ldr r2, _080BC698 @ =gUnknown_2022986
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _080BC5D2
- ldr r3, _080BC69C @ =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_080BC5D2:
- 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 _080BC5EA
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_080BC5EA:
- movs r3, 0
- ldr r5, _080BC6A0 @ =gScanlineEffect
- mov r9, r5
- ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
- mov r6, r9
- adds r5, r1, 0
-_080BC5F6:
- 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 _080BC5F6
- cmp r3, 0x9F
- bgt _080BC63A
- ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
- ldr r6, _080BC6A0 @ =gScanlineEffect
- ldr r1, _080BC6A8 @ =gTasks
- mov r2, r12
- adds r0, r2, r4
- lsls r0, 3
- adds r5, r0, r1
-_080BC620:
- 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 _080BC620
-_080BC63A:
- 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 _080BC6BA
- 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, _080BC6AC @ =0x0600e000
- ldr r2, _080BC6B0 @ =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 _080BC6BA
- .align 2, 0
-_080BC690: .4byte gBattle_BG1_Y
-_080BC694: .4byte 0x0000ffc8
-_080BC698: .4byte gUnknown_2022986
-_080BC69C: .4byte 0xfffffc04
-_080BC6A0: .4byte gScanlineEffect
-_080BC6A4: .4byte gScanlineEffectRegBuffers
-_080BC6A8: .4byte gTasks
-_080BC6AC: .4byte 0x0600e000
-_080BC6B0: .4byte 0x05000200
-_080BC6B4:
- adds r0, r4, 0
- bl sub_80BC41C
-_080BC6BA:
- 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: @ 80BC6C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080BC6F4 @ =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 _080BC708
- cmp r0, 0x3
- bgt _080BC6F8
- cmp r0, 0x2
- beq _080BC6FC
- b _080BC710
- .align 2, 0
-_080BC6F4: .4byte gTasks
-_080BC6F8:
- cmp r0, 0x4
- bne _080BC710
-_080BC6FC:
- ldr r1, _080BC704 @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x8
- b _080BC70E
- .align 2, 0
-_080BC704: .4byte gBattle_BG1_X
-_080BC708:
- ldr r1, _080BC74C @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
-_080BC70E:
- strh r0, [r1]
-_080BC710:
- 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 _080BC774
- ldr r7, _080BC750 @ =gBattle_BG1_Y
- ldrh r0, [r4, 0x14]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080BC736
- ldr r1, _080BC754 @ =0x000001ff
- adds r0, r1
-_080BC736:
- asrs r0, 9
- subs r0, 0x8
- strh r0, [r7]
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0xB3
- bgt _080BC758
- adds r0, r1, 0x4
- b _080BC75A
- .align 2, 0
-_080BC74C: .4byte gBattle_BG1_X
-_080BC750: .4byte gBattle_BG1_Y
-_080BC754: .4byte 0x000001ff
-_080BC758:
- adds r0, r1, 0x6
-_080BC75A:
- strh r0, [r4, 0x14]
- ldr r2, _080BC790 @ =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 _080BC774
- movs r0, 0
- strh r0, [r3, 0x14]
-_080BC774:
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x4
- bls _080BC784
- b _080BC9AA
-_080BC784:
- lsls r0, 2
- ldr r1, _080BC794 @ =_080BC798
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BC790: .4byte gTasks
-_080BC794: .4byte _080BC798
- .align 2, 0
-_080BC798:
- .4byte _080BC7AC
- .4byte _080BC7DC
- .4byte _080BC808
- .4byte _080BC858
- .4byte _080BC9A4
-_080BC7AC:
- ldr r1, _080BC7C8 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x10
- strh r3, [r2, 0x10]
- ldr r0, _080BC7CC @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BC7D0
- strh r3, [r2, 0xC]
- b _080BC7D4
- .align 2, 0
-_080BC7C8: .4byte gTasks
-_080BC7CC: .4byte gBattleTypeFlags
-_080BC7D0:
- movs r0, 0x1
- strh r0, [r2, 0xC]
-_080BC7D4:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080BC9AA
-_080BC7DC:
- ldr r0, _080BC804 @ =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 _080BC7F2
- b _080BC9AA
-_080BC7F2:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _080BC9AA
- .align 2, 0
-_080BC804: .4byte gTasks
-_080BC808:
- ldr r1, _080BC848 @ =gUnknown_2022986
- 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 _080BC820
- b _080BC9AA
-_080BC820:
- ldr r0, _080BC84C @ =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, _080BC850 @ =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, _080BC854 @ =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _080BC9AA
- .align 2, 0
-_080BC848: .4byte gUnknown_2022986
-_080BC84C: .4byte gTasks
-_080BC850: .4byte gIntroSlideFlags
-_080BC854: .4byte 0x0000fffe
-_080BC858:
- ldr r0, _080BC890 @ =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 _080BC898
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _080BC8B8
- ldr r1, _080BC894 @ =0x00001842
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0xF
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- b _080BC8B8
- .align 2, 0
-_080BC890: .4byte gTasks
-_080BC894: .4byte 0x00001842
-_080BC898:
- ldrh r2, [r1, 0x10]
- movs r0, 0x1F
- ands r0, r2
- cmp r0, 0
- beq _080BC8B8
- ldrh r0, [r1, 0x12]
- subs r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _080BC8B8
- adds r0, r2, 0
- adds r0, 0xFF
- strh r0, [r1, 0x10]
- movs r0, 0x4
- strh r0, [r1, 0x12]
-_080BC8B8:
- ldr r2, _080BC988 @ =gUnknown_2022986
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _080BC8CC
- ldr r3, _080BC98C @ =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_080BC8CC:
- ldr r0, _080BC990 @ =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 _080BC8E2
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_080BC8E2:
- movs r3, 0
- ldr r0, _080BC994 @ =gScanlineEffect
- mov r8, r0
- ldr r2, _080BC998 @ =gScanlineEffectRegBuffers
- mov r12, r2
- mov r7, r8
- adds r4, r1, 0
-_080BC8F0:
- 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 _080BC8F0
- cmp r3, 0x9F
- bgt _080BC934
- ldr r0, _080BC998 @ =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, _080BC994 @ =gScanlineEffect
- ldr r1, _080BC990 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r4, r0, r1
-_080BC91A:
- 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 _080BC91A
-_080BC934:
- ldr r1, _080BC990 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0xC
- ldrsh r2, [r1, r3]
- cmp r2, 0
- bne _080BC9AA
- 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, _080BC99C @ =0x0600e000
- ldr r2, _080BC9A0 @ =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 _080BC9AA
- .align 2, 0
-_080BC988: .4byte gUnknown_2022986
-_080BC98C: .4byte 0xfffffc04
-_080BC990: .4byte gTasks
-_080BC994: .4byte gScanlineEffect
-_080BC998: .4byte gScanlineEffectRegBuffers
-_080BC99C: .4byte 0x0600e000
-_080BC9A0: .4byte 0x05000200
-_080BC9A4:
- adds r0, r5, 0
- bl sub_80BC41C
-_080BC9AA:
- ldr r0, _080BC9D0 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _080BC9C2
- ldrh r1, [r1, 0x10]
- movs r0, 0x52
- bl SetGpuReg
-_080BC9C2:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC9D0: .4byte gTasks
- thumb_func_end task00_battle_intro_80BC6C8
-
- thumb_func_start task_battle_intro_anim
-task_battle_intro_anim: @ 80BC9D4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080BCA08 @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x8
- strh r0, [r1]
- ldr r1, _080BCA0C @ =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 _080BC9FE
- b _080BCC22
-_080BC9FE:
- lsls r0, 2
- ldr r1, _080BCA10 @ =_080BCA14
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BCA08: .4byte gBattle_BG1_X
-_080BCA0C: .4byte gTasks
-_080BCA10: .4byte _080BCA14
- .align 2, 0
-_080BCA14:
- .4byte _080BCA28
- .4byte _080BCA7C
- .4byte _080BCAA8
- .4byte _080BCAF8
- .4byte _080BCC1C
-_080BCA28:
- ldr r1, _080BCA60 @ =0x00001842
- movs r0, 0x50
- bl SetGpuReg
- ldr r4, _080BCA64 @ =0x00000808
- movs r0, 0x52
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r1, _080BCA68 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- strh r4, [r2, 0x10]
- ldr r0, _080BCA6C @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BCA70
- movs r0, 0x10
- b _080BCA72
- .align 2, 0
-_080BCA60: .4byte 0x00001842
-_080BCA64: .4byte 0x00000808
-_080BCA68: .4byte gTasks
-_080BCA6C: .4byte gBattleTypeFlags
-_080BCA70:
- movs r0, 0x1
-_080BCA72:
- strh r0, [r2, 0xC]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080BCC22
-_080BCA7C:
- ldr r0, _080BCAA4 @ =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 _080BCA94
- b _080BCC22
-_080BCA94:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _080BCC22
- .align 2, 0
-_080BCAA4: .4byte gTasks
-_080BCAA8:
- ldr r1, _080BCAE8 @ =gUnknown_2022986
- 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 _080BCAC0
- b _080BCC22
-_080BCAC0:
- ldr r0, _080BCAEC @ =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, _080BCAF0 @ =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, _080BCAF4 @ =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _080BCC22
- .align 2, 0
-_080BCAE8: .4byte gUnknown_2022986
-_080BCAEC: .4byte gTasks
-_080BCAF0: .4byte gIntroSlideFlags
-_080BCAF4: .4byte 0x0000fffe
-_080BCAF8:
- 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 _080BCB12
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- b _080BCB32
-_080BCB12:
- ldrh r1, [r2, 0x10]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- beq _080BCB32
- ldrh r0, [r2, 0x12]
- subs r0, 0x1
- strh r0, [r2, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _080BCB32
- adds r0, r1, 0
- adds r0, 0xFF
- strh r0, [r2, 0x10]
- movs r0, 0x6
- strh r0, [r2, 0x12]
-_080BCB32:
- ldr r2, _080BCC00 @ =gUnknown_2022986
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _080BCB46
- ldr r3, _080BCC04 @ =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_080BCB46:
- 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 _080BCB5C
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_080BCB5C:
- movs r3, 0
- ldr r6, _080BCC08 @ =gScanlineEffect
- mov r8, r6
- ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
- adds r4, r1, 0
-_080BCB66:
- 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 _080BCB66
- cmp r3, 0x9F
- bgt _080BCBAA
- ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
- ldr r6, _080BCC08 @ =gScanlineEffect
- ldr r1, _080BCC10 @ =gTasks
- mov r2, r12
- adds r0, r2, r5
- lsls r0, 3
- adds r4, r0, r1
-_080BCB90:
- 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 _080BCB90
-_080BCBAA:
- ldr r1, _080BCC10 @ =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 _080BCC22
- 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, _080BCC14 @ =0x0600e000
- ldr r2, _080BCC18 @ =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 _080BCC22
- .align 2, 0
-_080BCC00: .4byte gUnknown_2022986
-_080BCC04: .4byte 0xfffffc04
-_080BCC08: .4byte gScanlineEffect
-_080BCC0C: .4byte gScanlineEffectRegBuffers
-_080BCC10: .4byte gTasks
-_080BCC14: .4byte 0x0600e000
-_080BCC18: .4byte 0x05000200
-_080BCC1C:
- adds r0, r5, 0
- bl sub_80BC41C
-_080BCC22:
- ldr r0, _080BCC48 @ =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 _080BCC3C
- ldrh r1, [r1, 0x10]
- movs r0, 0x52
- bl SetGpuReg
-_080BCC3C:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BCC48: .4byte gTasks
- thumb_func_end task_battle_intro_anim
-
- thumb_func_start sub_80BCC4C
-sub_80BCC4C: @ 80BCC4C
- 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, _080BCC98 @ =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 _080BCCC2
- movs r2, 0x10
- ldrsh r0, [r7, r2]
- cmp r0, 0
- bne _080BCCC2
- ldr r2, _080BCC9C @ =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 _080BCC8A
- cmp r1, 0x4F
- bhi _080BCCA4
-_080BCC8A:
- adds r0, r1, 0x3
- strh r0, [r2]
- ldr r1, _080BCCA0 @ =gBattle_BG2_X
- ldrh r0, [r1]
- subs r0, 0x3
- strh r0, [r1]
- b _080BCCC2
- .align 2, 0
-_080BCC98: .4byte gTasks
-_080BCC9C: .4byte gBattle_BG1_X
-_080BCCA0: .4byte gBattle_BG2_X
-_080BCCA4:
- str r5, [sp]
- ldr r1, _080BCCE4 @ =0x0600e000
- ldr r4, _080BCCE8 @ =0x05000200
- mov r0, sp
- adds r2, r4, 0
- bl CpuSet
- str r5, [sp, 0x4]
- add r0, sp, 0x4
- ldr r1, _080BCCEC @ =0x0600f000
- adds r2, r4, 0
- bl CpuSet
- movs r0, 0x1
- strh r0, [r7, 0x10]
-_080BCCC2:
- ldr r0, _080BCCF0 @ =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 _080BCCDA
- b _080BCEE6
-_080BCCDA:
- lsls r0, r1, 2
- ldr r1, _080BCCF4 @ =_080BCCF8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BCCE4: .4byte 0x0600e000
-_080BCCE8: .4byte 0x05000200
-_080BCCEC: .4byte 0x0600f000
-_080BCCF0: .4byte gTasks
-_080BCCF4: .4byte _080BCCF8
- .align 2, 0
-_080BCCF8:
- .4byte _080BCD0C
- .4byte _080BCD1E
- .4byte _080BCDC4
- .4byte _080BCE08
- .4byte _080BCEE0
-_080BCD0C:
- 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 _080BCEE6
-_080BCD1E:
- 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 _080BCD34
- b _080BCEE6
-_080BCD34:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- ldr r4, _080BCDB4 @ =gSprites
- ldr r5, _080BCDB8 @ =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, _080BCDBC @ =sub_801182C
- 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, _080BCDC0 @ =0x00003f06
- movs r0, 0x4A
- bl SetGpuReg
- b _080BCEE6
- .align 2, 0
-_080BCDB4: .4byte gSprites
-_080BCDB8: .4byte gBattleStruct
-_080BCDBC: .4byte sub_801182C
-_080BCDC0: .4byte 0x00003f06
-_080BCDC4:
- ldr r1, _080BCDFC @ =gUnknown_2022986
- 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 _080BCDDC
- b _080BCEE6
-_080BCDDC:
- 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, _080BCE00 @ =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, _080BCE04 @ =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _080BCEE6
- .align 2, 0
-_080BCDFC: .4byte gUnknown_2022986
-_080BCE00: .4byte gIntroSlideFlags
-_080BCE04: .4byte 0x0000fffe
-_080BCE08:
- ldr r2, _080BCECC @ =gUnknown_2022986
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _080BCE1C
- ldr r3, _080BCED0 @ =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_080BCE1C:
- 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 _080BCE32
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_080BCE32:
- movs r3, 0
- ldr r0, _080BCED4 @ =gScanlineEffect
- mov r12, r0
- ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers
- mov r8, r2
- mov r7, r12
- adds r4, r1, 0
-_080BCE40:
- 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 _080BCE40
- cmp r3, 0x9F
- bgt _080BCE84
- ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers
- mov r8, r0
- ldr r7, _080BCED4 @ =gScanlineEffect
- ldr r1, _080BCEDC @ =gTasks
- adds r0, r5, r6
- lsls r0, 3
- adds r4, r0, r1
-_080BCE6A:
- 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 _080BCE6A
-_080BCE84:
- 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 _080BCEE6
- 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 _080BCEE6
- .align 2, 0
-_080BCECC: .4byte gUnknown_2022986
-_080BCED0: .4byte 0xfffffc04
-_080BCED4: .4byte gScanlineEffect
-_080BCED8: .4byte gScanlineEffectRegBuffers
-_080BCEDC: .4byte gTasks
-_080BCEE0:
- adds r0, r6, 0
- bl sub_80BC41C
-_080BCEE6:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BCC4C
-
- thumb_func_start sub_80BCEF4
-sub_80BCEF4: @ 80BCEF4
- 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, _080BCFC4 @ =gMonSpritesGfxPtr
- ldr r2, [r1]
- lsls r4, 2
- adds r2, 0x4
- adds r2, r4
- ldr r1, _080BCFC8 @ =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 _080BCFA0
- mov r12, r0
- mov r2, r8
- lsls r7, r2, 1
-_080BCF72:
- mov r1, r8
- adds r2, r1, 0
- adds r2, 0x8
- adds r4, r6, 0x1
- cmp r1, r2
- bge _080BCF9A
- mov r0, r10
- lsls r3, r0, 12
- lsls r0, r6, 6
- add r0, r9
- adds r6, r7, r0
- subs r1, r2, r1
-_080BCF8A:
- adds r0, r5, 0
- orrs r0, r3
- strh r0, [r6]
- adds r5, 0x1
- adds r6, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _080BCF8A
-_080BCF9A:
- adds r6, r4, 0
- cmp r6, r12
- blt _080BCF72
-_080BCFA0:
- 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
- .align 2, 0
-_080BCFC4: .4byte gMonSpritesGfxPtr
-_080BCFC8: .4byte gBattleMonForms
- thumb_func_end sub_80BCEF4
-
- thumb_func_start sub_80BCFCC
-sub_80BCFCC: @ 80BCFCC
- 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, _080BD090 @ =0x040000d4
- ldr r0, _080BD094 @ =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, _080BD098 @ =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 _080BD080
- mov r9, r1
- mov r7, r12
- lsls r7, 1
- mov r8, r7
- lsls r5, 11
- str r5, [sp]
-_080BD048:
- mov r2, r12
- adds r3, r2, 0
- adds r3, 0x8
- adds r5, r0, 0x1
- cmp r2, r3
- bge _080BD07A
- 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
-_080BD06A:
- adds r0, r4, 0
- orrs r0, r6
- strh r0, [r1]
- adds r4, 0x1
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _080BD06A
-_080BD07A:
- adds r0, r5, 0
- cmp r0, r9
- blt _080BD048
-_080BD080:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BD090: .4byte 0x040000d4
-_080BD094: .4byte gMonSpritesGfxPtr
-_080BD098: .4byte 0x80000400
- thumb_func_end sub_80BCFCC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/berry_crush_2.s b/asm/berry_crush_2.s
index fedf89c50..7495c8519 100644
--- a/asm/berry_crush_2.s
+++ b/asm/berry_crush_2.s
@@ -2856,7 +2856,7 @@ _0814D106:
movs r0, 0
movs r1, 0
bl DrawDialogueFrame
- ldr r2, _0814D148 @ =gUnknown_8419F54
+ ldr r2, _0814D148 @ =gText_SavingDontTurnOffThePower2
movs r0, 0
str r0, [sp]
movs r0, 0x2
@@ -2877,7 +2877,7 @@ _0814D106:
bl CreateTask
b _0814D178
.align 2, 0
-_0814D148: .4byte gUnknown_8419F54
+_0814D148: .4byte gText_SavingDontTurnOffThePower2
_0814D14C: .4byte sub_80DA634
_0814D150:
ldr r0, _0814D160 @ =sub_80DA634
diff --git a/asm/bug.s b/asm/bug.s
deleted file mode 100644
index de99118a2..000000000
--- a/asm/bug.s
+++ /dev/null
@@ -1,829 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B3FAC
-sub_80B3FAC: @ 80B3FAC
- push {r4-r6,lr}
- adds r6, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B3FD8
- adds r0, r6, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, _080B3FD4 @ =gBattleAnimArgs
- ldrh r1, [r0, 0x4]
- negs r1, r1
- strh r1, [r0, 0x4]
- ldrh r1, [r0]
- negs r1, r1
- strh r1, [r0]
- b _080B4008
- .align 2, 0
-_080B3FD4: .4byte gBattleAnimArgs
-_080B3FD8:
- ldr r0, _080B406C @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B4008
- adds r0, r6, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r1, _080B4070 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080B4008:
- ldr r5, _080B406C @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074844
- lsls r0, 24
- ldr r4, _080B4070 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r6, 0x36]
- ldr r0, _080B4074 @ =StartAnimLinearTranslation
- str r0, [r6, 0x1C]
- ldr r1, _080B4078 @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B406C: .4byte gBattleAnimTarget
-_080B4070: .4byte gBattleAnimArgs
-_080B4074: .4byte StartAnimLinearTranslation
-_080B4078: .4byte DestroyAnimSprite
- thumb_func_end sub_80B3FAC
-
- thumb_func_start sub_80B407C
-sub_80B407C: @ 80B407C
- push {r4-r6,lr}
- adds r6, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B40A0
- ldr r1, _080B409C @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
- adds r0, r6, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- b _080B40BC
- .align 2, 0
-_080B409C: .4byte gBattleAnimArgs
-_080B40A0:
- ldr r0, _080B4118 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B40BC
- ldr r0, _080B411C @ =gBattleAnimArgs
- ldrh r1, [r0, 0x2]
- negs r1, r1
- strh r1, [r0, 0x2]
- ldrh r1, [r0]
- negs r1, r1
- strh r1, [r0]
-_080B40BC:
- ldr r5, _080B4118 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8074844
- lsls r0, 24
- ldr r4, _080B411C @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x2E]
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x36]
- ldr r0, _080B4120 @ =StartAnimLinearTranslation
- str r0, [r6, 0x1C]
- ldr r1, _080B4124 @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4118: .4byte gBattleAnimTarget
-_080B411C: .4byte gBattleAnimArgs
-_080B4120: .4byte StartAnimLinearTranslation
-_080B4124: .4byte DestroyAnimSprite
- thumb_func_end sub_80B407C
-
- thumb_func_start sub_80B4128
-sub_80B4128: @ 80B4128
- push {r4,r5,lr}
- adds r5, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B4144
- ldr r0, _080B4184 @ =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- strh r1, [r0, 0x4]
-_080B4144:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r1, _080B4184 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080B418C
- ldr r4, _080B4188 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- b _080B419E
- .align 2, 0
-_080B4184: .4byte gBattleAnimArgs
-_080B4188: .4byte gBattleAnimTarget
-_080B418C:
- ldr r0, _080B41B4 @ =gBattleAnimTarget
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl sub_8076D9C
-_080B419E:
- adds r0, r5, 0
- bl sub_8075678
- ldr r0, _080B41B8 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x6]
- strh r0, [r5, 0x38]
- ldr r0, _080B41BC @ =sub_80B41C0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B41B4: .4byte gBattleAnimTarget
-_080B41B8: .4byte gBattleAnimArgs
-_080B41BC: .4byte sub_80B41C0
- thumb_func_end sub_80B4128
-
- thumb_func_start sub_80B41C0
-sub_80B41C0: @ 80B41C0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080B41D6
- adds r0, r4, 0
- bl DestroyAnimSprite
- b _080B41F2
-_080B41D6:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x3A]
- adds r0, 0xD
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
-_080B41F2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B41C0
-
- thumb_func_start sub_80B41F8
-sub_80B41F8: @ 80B41F8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B4228 @ =gBattleAnimTarget
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_8076D9C
- ldr r0, _080B422C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B4234
- ldr r0, _080B4230 @ =gBattleAnimArgs
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _080B4240
- .align 2, 0
-_080B4228: .4byte gBattleAnimTarget
-_080B422C: .4byte gBattleAnimAttacker
-_080B4230: .4byte gBattleAnimArgs
-_080B4234:
- ldr r1, _080B4268 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, r1, 0
-_080B4240:
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080B426C @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B425C
- ldrh r0, [r4, 0x22]
- adds r0, 0x8
- strh r0, [r4, 0x22]
-_080B425C:
- ldr r0, _080B4270 @ =sub_80B4274
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4268: .4byte gBattleAnimArgs
-_080B426C: .4byte gBattleAnimTarget
-_080B4270: .4byte sub_80B4274
- thumb_func_end sub_80B41F8
-
- thumb_func_start sub_80B4274
-sub_80B4274: @ 80B4274
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080B42A8
- movs r0, 0
- strh r0, [r3, 0x2E]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
-_080B42A8:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _080B42BC
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080B42BC:
- pop {r0}
- bx r0
- thumb_func_end sub_80B4274
-
- thumb_func_start sub_80B42C0
-sub_80B42C0: @ 80B42C0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- ldr r0, _080B42E4 @ =sub_80B42E8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B42E4: .4byte sub_80B42E8
- thumb_func_end sub_80B42C0
-
- thumb_func_start sub_80B42E8
-sub_80B42E8: @ 80B42E8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0x13
- bgt _080B42FC
- adds r0, r1, 0x1
- strh r0, [r4, 0x32]
- b _080B433A
-_080B42FC:
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B433A
- ldrh r1, [r4, 0x2E]
- subs r1, 0x1
- strh r1, [r4, 0x2E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B433A
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B4340 @ =sub_80B4344
- str r0, [r4, 0x1C]
-_080B433A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4340: .4byte sub_80B4344
- thumb_func_end sub_80B42E8
-
- thumb_func_start sub_80B4344
-sub_80B4344: @ 80B4344
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B4344
-
- thumb_func_start sub_80B4364
-sub_80B4364: @ 80B4364
- push {r4-r7,lr}
- sub sp, 0x4
- adds r7, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B4384
- ldr r1, _080B4380 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- b _080B43A6
- .align 2, 0
-_080B4380: .4byte gBattleAnimArgs
-_080B4384:
- ldr r0, _080B4480 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B43A6
- ldr r1, _080B4484 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
-_080B43A6:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B43F6
- ldr r0, _080B4480 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- adds r4, r0, 0
- ldr r5, _080B4488 @ =gBattleAnimTarget
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080B43F6
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- beq _080B43E4
- ldrb r0, [r5]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B43F6
-_080B43E4:
- ldr r0, _080B4484 @ =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- negs r1, r1
- strh r1, [r0, 0x4]
- movs r2, 0
- ldrsh r1, [r0, r2]
- negs r1, r1
- strh r1, [r0]
-_080B43F6:
- adds r0, r7, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r5, _080B4488 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- ldr r6, _080B4484 @ =gBattleAnimArgs
- lsrs r4, 24
- ldrh r0, [r6, 0x4]
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r6, 0x6]
- adds r1, r2
- lsls r1, 16
- ldrh r2, [r7, 0x20]
- lsls r0, r4, 16
- asrs r0, 16
- subs r0, r2
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r7, 0x22]
- lsrs r5, r1, 16
- asrs r1, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl sub_8075B30
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- adds r0, r7, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8075A1C
- ldrh r0, [r6, 0x8]
- strh r0, [r7, 0x2E]
- strh r4, [r7, 0x32]
- strh r5, [r7, 0x36]
- ldr r0, _080B448C @ =StartAnimLinearTranslation
- str r0, [r7, 0x1C]
- ldr r1, _080B4490 @ =DestroyAnimSprite
- adds r0, r7, 0
- bl StoreSpriteCallbackInData6
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4480: .4byte gBattleAnimAttacker
-_080B4484: .4byte gBattleAnimArgs
-_080B4488: .4byte gBattleAnimTarget
-_080B448C: .4byte StartAnimLinearTranslation
-_080B4490: .4byte DestroyAnimSprite
- thumb_func_end sub_80B4364
-
- thumb_func_start sub_80B4494
-sub_80B4494: @ 80B4494
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080B4500 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B44B4
- ldr r1, _080B4504 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080B44B4:
- ldr r4, _080B4504 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldr r5, _080B4508 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r6, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r6, 0x38]
- adds r0, r6, 0
- bl sub_8075068
- ldr r0, _080B450C @ =sub_80B4510
- str r0, [r6, 0x1C]
- adds r2, r6, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4500: .4byte gBattleAnimAttacker
-_080B4504: .4byte gBattleAnimArgs
-_080B4508: .4byte gBattleAnimTarget
-_080B450C: .4byte sub_80B4510
- thumb_func_end sub_80B4494
-
- thumb_func_start sub_80B4510
-sub_80B4510: @ 80B4510
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r2]
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B453C
- adds r0, r4, 0
- bl DestroyAnimSprite
- b _080B45CC
-_080B453C:
- movs r0, 0x2E
- adds r0, r4
- mov r8, r0
- ldrh r7, [r4, 0x20]
- ldrh r5, [r4, 0x24]
- ldrh r1, [r4, 0x22]
- mov r12, r1
- ldrh r6, [r4, 0x26]
- mov r2, r8
- add r1, sp, 0x4
- movs r3, 0x7
-_080B4552:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080B4552
- adds r0, r7, r5
- lsls r0, 16
- lsrs r5, r0, 16
- mov r2, r12
- adds r0, r2, r6
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- bne _080B45CC
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- lsls r1, r5, 16
- asrs r1, 16
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r1, r2
- lsls r2, r6, 16
- asrs r2, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl sub_8075B30
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8075A1C
- add r2, sp, 0x4
- mov r1, r8
- movs r3, 0x7
-_080B45BE:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080B45BE
-_080B45CC:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B4510
-
- thumb_func_start sub_80B45D8
-sub_80B45D8: @ 80B45D8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B45EC @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B45F4
- ldr r4, _080B45F0 @ =gBattleAnimAttacker
- b _080B45F6
- .align 2, 0
-_080B45EC: .4byte gBattleAnimArgs
-_080B45F0: .4byte gBattleAnimAttacker
-_080B45F4:
- ldr r4, _080B4628 @ =gBattleAnimTarget
-_080B45F6:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x12
- strh r0, [r5, 0x22]
- ldr r1, _080B462C @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B4630 @ =sub_8074F50
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4628: .4byte gBattleAnimTarget
-_080B462C: .4byte move_anim_8074EE0
-_080B4630: .4byte sub_8074F50
- thumb_func_end sub_80B45D8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cable_club.s b/asm/cable_club.s
index d7432e2c2..76346a28c 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -1496,7 +1496,7 @@ _08081308: .4byte gReceivedRemoteLinkPlayers
thumb_func_start sub_808130C
sub_808130C: @ 808130C
push {lr}
- bl sub_806F67C
+ bl Field_AskSaveTheGame
pop {r0}
bx r0
thumb_func_end sub_808130C
@@ -2001,7 +2001,7 @@ _08081724:
ldr r0, _0808173C @ =c2_8056854
_08081728:
str r0, [r1, 0x8]
- ldr r0, _08081740 @ =sub_806FB7C
+ ldr r0, _08081740 @ =CB2_SetUpSaveAfterLinkBattle
bl SetMainCallback2
pop {r4,r5}
pop {r0}
@@ -2009,7 +2009,7 @@ _08081728:
.align 2, 0
_08081738: .4byte gMain
_0808173C: .4byte c2_8056854
-_08081740: .4byte sub_806FB7C
+_08081740: .4byte CB2_SetUpSaveAfterLinkBattle
thumb_func_end sub_8081668
thumb_func_start sub_8081744
@@ -2388,7 +2388,7 @@ sp02A_crash_sound: @ 8081A1C
ldr r0, _08081A2C @ =gSpecialVar_0x8006
ldrb r0, [r0]
ldr r1, _08081A30 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl sub_808B700
+ bl InitLinkPartnerTrainerCard
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/dark.s b/asm/dark.s
deleted file mode 100644
index cbc4060c3..000000000
--- a/asm/dark.s
+++ /dev/null
@@ -1,2323 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B78E0
-sub_80B78E0: @ 80B78E0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B791C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080B7920 @ =gBattleAnimArgs
- ldrh r1, [r1]
- strh r1, [r0, 0x8]
- ldr r1, _080B7924 @ =gBattleAnimAttacker
- ldrb r4, [r1]
- movs r1, 0x10
- strh r1, [r0, 0xA]
- movs r0, 0x52
- bl SetGpuReg
- adds r0, r4, 0
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B792C
- ldr r1, _080B7928 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _080B7934
- .align 2, 0
-_080B791C: .4byte gTasks
-_080B7920: .4byte gBattleAnimArgs
-_080B7924: .4byte gBattleAnimAttacker
-_080B7928: .4byte 0x00003f42
-_080B792C:
- ldr r1, _080B7948 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_080B7934:
- ldr r0, _080B794C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080B7950 @ =sub_80B7954
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7948: .4byte 0x00003f44
-_080B794C: .4byte gTasks
-_080B7950: .4byte sub_80B7954
- thumb_func_end sub_80B78E0
-
- thumb_func_start sub_80B7954
-sub_80B7954: @ 80B7954
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080B79C0 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r6, r0, r1
- ldrh r0, [r6, 0xA]
- lsrs r4, r0, 8
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC
- ldrsh r0, [r6, r2]
- ldrb r2, [r6, 0x8]
- cmp r0, r2
- bne _080B79D0
- adds r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 8
- orrs r1, r0
- movs r5, 0
- strh r1, [r6, 0xA]
- ldrh r1, [r6, 0xA]
- movs r0, 0x52
- bl SetGpuReg
- strh r5, [r6, 0xC]
- cmp r4, 0x10
- bne _080B79D6
- ldr r2, _080B79C4 @ =gSprites
- ldr r1, _080B79C8 @ =gBattlerSpriteIds
- ldr r0, _080B79CC @ =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, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- b _080B79D6
- .align 2, 0
-_080B79C0: .4byte gTasks
-_080B79C4: .4byte gSprites
-_080B79C8: .4byte gBattlerSpriteIds
-_080B79CC: .4byte gBattleAnimAttacker
-_080B79D0:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
-_080B79D6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7954
-
- thumb_func_start sub_80B79DC
-sub_80B79DC: @ 80B79DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B7A08 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r1
- ldr r0, _080B7A0C @ =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r2, 0x8]
- movs r1, 0x80
- lsls r1, 5
- strh r1, [r2, 0xA]
- ldr r0, _080B7A10 @ =sub_80B7A14
- str r0, [r2]
- movs r0, 0x52
- bl SetGpuReg
- pop {r0}
- bx r0
- .align 2, 0
-_080B7A08: .4byte gTasks
-_080B7A0C: .4byte gBattleAnimArgs
-_080B7A10: .4byte sub_80B7A14
- thumb_func_end sub_80B79DC
-
- thumb_func_start sub_80B7A14
-sub_80B7A14: @ 80B7A14
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080B7A70 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r6, r0, r1
- ldrh r0, [r6, 0xA]
- lsrs r4, r0, 8
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC
- ldrsh r0, [r6, r2]
- ldrb r2, [r6, 0x8]
- cmp r0, r2
- bne _080B7A74
- subs r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 8
- orrs r1, r0
- movs r5, 0
- strh r1, [r6, 0xA]
- ldrh r1, [r6, 0xA]
- movs r0, 0x52
- bl SetGpuReg
- strh r5, [r6, 0xC]
- cmp r4, 0
- bne _080B7A7A
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- b _080B7A7A
- .align 2, 0
-_080B7A70: .4byte gTasks
-_080B7A74:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
-_080B7A7A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7A14
-
- thumb_func_start sub_80B7A80
-sub_80B7A80: @ 80B7A80
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080B7AAC @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B7AB4
- ldr r1, _080B7AB0 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _080B7ABC
- .align 2, 0
-_080B7AAC: .4byte gBattleAnimAttacker
-_080B7AB0: .4byte 0x00003f42
-_080B7AB4:
- ldr r1, _080B7AC8 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_080B7ABC:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7AC8: .4byte 0x00003f44
- thumb_func_end sub_80B7A80
-
- thumb_func_start sub_80B7ACC
-sub_80B7ACC: @ 80B7ACC
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, _080B7B38 @ =gBattleAnimTarget
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x30]
- ldr r5, _080B7B3C @ =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- movs r0, 0x7E
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl InitSpriteDataForLinearTranslation
- ldrh r0, [r4, 0x30]
- negs r0, r0
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldr r0, _080B7B40 @ =0x0000ffd8
- strh r0, [r4, 0x3A]
- ldr r1, _080B7B44 @ =sub_80B7B48
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7B38: .4byte gBattleAnimTarget
-_080B7B3C: .4byte gBattleAnimAttacker
-_080B7B40: .4byte 0x0000ffd8
-_080B7B44: .4byte sub_80B7B48
- thumb_func_end sub_80B7ACC
-
- thumb_func_start sub_80B7B48
-sub_80B7B48: @ 80B7B48
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r5, [r4, 0x30]
- ldrh r0, [r4, 0x34]
- adds r2, r5, r0
- strh r2, [r4, 0x34]
- ldrh r3, [r4, 0x32]
- ldrh r6, [r4, 0x36]
- adds r1, r3, r6
- strh r1, [r4, 0x36]
- lsls r0, r2, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- movs r6, 0x3C
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bne _080B7B8A
- adds r0, r2, r5
- strh r0, [r4, 0x34]
- adds r1, r3
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
-_080B7B8A:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x3A
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r6, [r4, 0x26]
- adds r0, r6
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- cmp r0, 0x7F
- ble _080B7BBA
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3A]
- adds r0, 0x14
- strh r0, [r4, 0x3A]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
-_080B7BBA:
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080B7BCC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B7BCC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7B48
-
- thumb_func_start sub_80B7BD4
-sub_80B7BD4: @ 80B7BD4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B7C08 @ =gBattleAnimArgs
- ldrh r0, [r5]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrb r1, [r5, 0x4]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x32]
- ldr r0, _080B7C0C @ =sub_80B7C10
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7C08: .4byte gBattleAnimArgs
-_080B7C0C: .4byte sub_80B7C10
- thumb_func_end sub_80B7BD4
-
- thumb_func_start sub_80B7C10
-sub_80B7C10: @ 80B7C10
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x36]
- adds r0, r1
- strh r0, [r2, 0x36]
- ldrh r1, [r2, 0x30]
- ldrh r3, [r2, 0x38]
- adds r1, r3
- strh r1, [r2, 0x38]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r2, 0x26]
- ldrh r0, [r2, 0x34]
- adds r0, 0x1
- strh r0, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x32
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bne _080B7C46
- ldr r0, _080B7C4C @ =sub_80B7C50
- str r0, [r2, 0x1C]
-_080B7C46:
- pop {r0}
- bx r0
- .align 2, 0
-_080B7C4C: .4byte sub_80B7C50
- thumb_func_end sub_80B7C10
-
- thumb_func_start sub_80B7C50
-sub_80B7C50: @ 80B7C50
- push {lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x36]
- ldrh r0, [r3, 0x2E]
- subs r1, r0
- strh r1, [r3, 0x36]
- ldrh r0, [r3, 0x38]
- ldrh r2, [r3, 0x30]
- subs r0, r2
- strh r0, [r3, 0x38]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r3, 0x24]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r3, 0x26]
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _080B7C82
- adds r0, r3, 0
- bl move_anim_8074EE0
-_080B7C82:
- pop {r0}
- bx r0
- thumb_func_end sub_80B7C50
-
- thumb_func_start sub_80B7C88
-sub_80B7C88: @ 80B7C88
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r0, _080B7C9C @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r3, r0, 0
- cmp r1, 0
- bne _080B7CA4
- ldr r0, _080B7CA0 @ =gBattleAnimAttacker
- b _080B7CA6
- .align 2, 0
-_080B7C9C: .4byte gBattleAnimArgs
-_080B7CA0: .4byte gBattleAnimAttacker
-_080B7CA4:
- ldr r0, _080B7CD4 @ =gBattleAnimTarget
-_080B7CA6:
- ldrb r5, [r0]
- movs r6, 0x14
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x4
- ldr r7, _080B7CD8 @ =0x000003ff
- adds r0, r7, 0
- ands r1, r0
- ldr r0, _080B7CDC @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- movs r1, 0x2
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- beq _080B7D04
- cmp r0, 0x1
- bgt _080B7CE0
- cmp r0, 0
- beq _080B7CEA
- b _080B7D58
- .align 2, 0
-_080B7CD4: .4byte gBattleAnimTarget
-_080B7CD8: .4byte 0x000003ff
-_080B7CDC: .4byte 0xfffffc00
-_080B7CE0:
- cmp r0, 0x2
- beq _080B7D1E
- cmp r0, 0x3
- beq _080B7D36
- b _080B7D58
-_080B7CEA:
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r4, 0x22]
- b _080B7D58
-_080B7D04:
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0xE
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x10
- strh r0, [r4, 0x22]
- b _080B7D58
-_080B7D1E:
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- b _080B7D4C
-_080B7D36:
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0xE
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x10
-_080B7D4C:
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- movs r6, 0xEC
-_080B7D58:
- movs r0, 0x20
- strh r0, [r4, 0x2E]
- lsls r0, r6, 24
- asrs r0, 24
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- adds r0, 0xC
- strh r0, [r4, 0x36]
- ldr r0, _080B7D80 @ =0x0000fff4
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldr r0, _080B7D84 @ =sub_80B7D88
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7D80: .4byte 0x0000fff4
-_080B7D84: .4byte sub_80B7D88
- thumb_func_end sub_80B7C88
-
- thumb_func_start sub_80B7D88
-sub_80B7D88: @ 80B7D88
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B7D9C
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080B7D9C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7D88
-
- thumb_func_start sub_80B7DA4
-sub_80B7DA4: @ 80B7DA4
- push {r4-r7,lr}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B7E08 @ =gTasks
- adds r5, r1, r0
- ldr r4, _080B7E0C @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1F
- movs r6, 0
- strh r0, [r5, 0x16]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- subs r0, 0x7
- strh r0, [r5, 0x14]
- ldrh r1, [r5, 0x16]
- strh r1, [r5, 0x12]
- strh r0, [r5, 0x10]
- subs r1, r0
- lsls r1, 8
- strh r1, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r5, 0x24]
- adds r0, 0x20
- strh r0, [r5, 0x26]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B7E14
- ldr r0, _080B7E10 @ =0x0000fff4
- b _080B7E16
- .align 2, 0
-_080B7E08: .4byte gTasks
-_080B7E0C: .4byte gBattleAnimAttacker
-_080B7E10: .4byte 0x0000fff4
-_080B7E14:
- ldr r0, _080B7E60 @ =0x0000ffc0
-_080B7E16:
- strh r0, [r5, 0x18]
- ldr r0, _080B7E64 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xE]
- cmp r0, 0x1
- bne _080B7E78
- add r4, sp, 0xC
- adds r0, r4, 0
- bl sub_80752A0
- ldr r0, _080B7E68 @ =gBattle_BG1_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- ldr r1, _080B7E6C @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldrb r1, [r4, 0x8]
- lsls r1, 4
- movs r0, 0
- movs r2, 0x20
- bl FillPalette
- ldr r0, _080B7E70 @ =0x04000016
- str r0, [sp]
- movs r7, 0x2
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B7EA8
- ldr r1, _080B7E74 @ =gBattle_BG2_X
- b _080B7EA2
- .align 2, 0
-_080B7E60: .4byte 0x0000ffc0
-_080B7E64: .4byte gBattleAnimAttacker
-_080B7E68: .4byte gBattle_BG1_Y
-_080B7E6C: .4byte 0x00003f42
-_080B7E70: .4byte 0x04000016
-_080B7E74: .4byte gBattle_BG2_X
-_080B7E78:
- ldr r0, _080B7F30 @ =gBattle_BG2_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- ldr r1, _080B7F34 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0
- movs r1, 0x90
- movs r2, 0x20
- bl FillPalette
- ldr r0, _080B7F38 @ =0x0400001a
- str r0, [sp]
- movs r7, 0x4
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B7EA8
- ldr r1, _080B7F3C @ =gBattle_BG1_X
-_080B7EA2:
- ldrh r0, [r1]
- adds r0, 0xF0
- strh r0, [r1]
-_080B7EA8:
- ldr r0, _080B7F40 @ =0xa2600001
- str r0, [sp, 0x4]
- mov r2, sp
- movs r1, 0
- movs r0, 0x1
- strb r0, [r2, 0x8]
- mov r0, sp
- strb r1, [r0, 0x9]
- strh r1, [r5, 0x1E]
- movs r0, 0x10
- strh r0, [r5, 0x20]
- strh r1, [r5, 0x8]
- strh r1, [r5, 0xA]
- strh r1, [r5, 0xC]
- movs r0, 0x3
- bl sub_80B856C
- movs r3, 0
- ldr r4, _080B7F44 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r4, r0
-_080B7ED4:
- lsls r1, r3, 1
- adds r2, r1, r4
- ldrh r0, [r5, 0x1C]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r5, 0x1C]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x6F
- bls _080B7ED4
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- movs r0, 0x3F
- eors r7, r0
- movs r1, 0xFC
- lsls r1, 6
- adds r0, r1, 0
- orrs r7, r0
- movs r0, 0x4A
- adds r1, r7, 0
- bl SetGpuReg
- ldr r1, _080B7F48 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r2, _080B7F4C @ =gUnknown_2022984
- ldrh r0, [r5, 0x24]
- lsls r0, 8
- ldrh r1, [r5, 0x26]
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080B7F50 @ =gUnknown_2022986
- movs r0, 0xA0
- strh r0, [r1]
- ldr r0, _080B7F54 @ =sub_80B7F58
- str r0, [r5]
- add sp, 0x1C
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7F30: .4byte gBattle_BG2_Y
-_080B7F34: .4byte 0x00003f44
-_080B7F38: .4byte 0x0400001a
-_080B7F3C: .4byte gBattle_BG1_X
-_080B7F40: .4byte 0xa2600001
-_080B7F44: .4byte gScanlineEffectRegBuffers
-_080B7F48: .4byte 0x00003f3f
-_080B7F4C: .4byte gUnknown_2022984
-_080B7F50: .4byte gUnknown_2022986
-_080B7F54: .4byte sub_80B7F58
- thumb_func_end sub_80B7DA4
-
- thumb_func_start sub_80B7F58
-sub_80B7F58: @ 80B7F58
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B7F7C @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080B7F72
- b _080B806A
-_080B7F72:
- lsls r0, 2
- ldr r1, _080B7F80 @ =_080B7F84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B7F7C: .4byte gTasks
-_080B7F80: .4byte _080B7F84
- .align 2, 0
-_080B7F84:
- .4byte _080B7F98
- .4byte _080B7FFA
- .4byte _080B8014
- .4byte _080B8050
- .4byte _080B8064
-_080B7F98:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B806A
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B7FC8
- ldrh r1, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- cmp r0, 0xC
- beq _080B7FD6
- adds r0, r1, 0x1
- strh r0, [r4, 0x1E]
- b _080B7FD6
-_080B7FC8:
- ldrh r1, [r4, 0x20]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- beq _080B7FD6
- subs r0, r1, 0x1
- strh r0, [r4, 0x20]
-_080B7FD6:
- ldrh r1, [r4, 0x20]
- lsls r1, 8
- ldrh r0, [r4, 0x1E]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0xC
- bne _080B806A
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- bne _080B806A
- b _080B8056
-_080B7FFA:
- ldrh r0, [r4, 0x10]
- subs r0, 0x8
- strh r0, [r4, 0x10]
- adds r0, r4, 0
- bl sub_80B843C
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bge _080B806A
- b _080B8056
-_080B8014:
- ldrh r0, [r4, 0x10]
- subs r0, 0x8
- strh r0, [r4, 0x10]
- adds r0, r4, 0
- bl sub_80B843C
- ldrh r1, [r4, 0x24]
- adds r1, 0x4
- strh r1, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- subs r2, r0, 0x4
- strh r2, [r4, 0x26]
- lsls r1, 16
- lsls r0, r2, 16
- cmp r1, r0
- blt _080B8036
- strh r2, [r4, 0x24]
-_080B8036:
- ldr r3, _080B804C @ =gUnknown_2022984
- ldrh r2, [r4, 0x24]
- lsls r0, r2, 8
- ldrh r1, [r4, 0x26]
- orrs r0, r1
- strh r0, [r3]
- lsls r2, 16
- lsls r1, 16
- cmp r2, r1
- bne _080B806A
- b _080B8056
- .align 2, 0
-_080B804C: .4byte gUnknown_2022984
-_080B8050:
- ldr r1, _080B8060 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B8056:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B806A
- .align 2, 0
-_080B8060: .4byte gScanlineEffect
-_080B8064:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B806A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7F58
-
- thumb_func_start sub_80B8070
-sub_80B8070: @ 80B8070
- push {r4-r7,lr}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080B8098 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _080B808C
- b _080B829E
-_080B808C:
- lsls r0, 2
- ldr r1, _080B809C @ =_080B80A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B8098: .4byte gTasks
-_080B809C: .4byte _080B80A0
- .align 2, 0
-_080B80A0:
- .4byte _080B80B4
- .4byte _080B8138
- .4byte _080B817C
- .4byte _080B81E8
- .4byte _080B8250
-_080B80B4:
- bl IsContest
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B80F0
- ldr r0, _080B80E4 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B80E8 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080B80EC @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- b _080B829E
- .align 2, 0
-_080B80E4: .4byte gUnknown_2022984
-_080B80E8: .4byte gUnknown_2022986
-_080B80EC: .4byte 0x00003f3f
-_080B80F0:
- ldr r0, _080B8110 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xE]
- cmp r0, 0x1
- bne _080B811C
- ldr r1, _080B8114 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080B8118 @ =gBattle_BG2_X
- b _080B8126
- .align 2, 0
-_080B8110: .4byte gBattleAnimTarget
-_080B8114: .4byte 0x00003f42
-_080B8118: .4byte gBattle_BG2_X
-_080B811C:
- ldr r1, _080B8130 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080B8134 @ =gBattle_BG1_X
-_080B8126:
- ldrh r0, [r1]
- adds r0, 0xF0
- strh r0, [r1]
- b _080B823C
- .align 2, 0
-_080B8130: .4byte 0x00003f44
-_080B8134: .4byte gBattle_BG1_X
-_080B8138:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080B8160
- mov r0, sp
- bl sub_80752A0
- ldr r0, _080B815C @ =gBattle_BG1_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- mov r0, sp
- ldrb r1, [r0, 0x8]
- lsls r1, 4
- movs r0, 0
- movs r2, 0x20
- bl FillPalette
- b _080B8170
- .align 2, 0
-_080B815C: .4byte gBattle_BG1_Y
-_080B8160:
- ldr r0, _080B8178 @ =gBattle_BG2_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- movs r0, 0
- movs r1, 0x90
- movs r2, 0x20
- bl FillPalette
-_080B8170:
- movs r0, 0x3
- bl sub_80B856C
- b _080B823C
- .align 2, 0
-_080B8178: .4byte gBattle_BG2_Y
-_080B817C:
- ldr r4, _080B81C8 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1F
- movs r6, 0
- strh r0, [r5, 0x16]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- subs r0, 0x7
- strh r0, [r5, 0x14]
- ldrh r1, [r5, 0x16]
- subs r1, r0
- lsls r1, 8
- strh r1, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- subs r1, r0, 0x4
- strh r1, [r5, 0x24]
- adds r0, 0x4
- strh r0, [r5, 0x26]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B81D0
- ldr r0, _080B81CC @ =0x0000fff4
- b _080B81D2
- .align 2, 0
-_080B81C8: .4byte gBattleAnimTarget
-_080B81CC: .4byte 0x0000fff4
-_080B81D0:
- ldr r0, _080B81E4 @ =0x0000ffc0
-_080B81D2:
- strh r0, [r5, 0x18]
- ldrh r0, [r5, 0x18]
- strh r0, [r5, 0x10]
- strh r0, [r5, 0x12]
- movs r0, 0xC
- strh r0, [r5, 0x1E]
- movs r0, 0x8
- strh r0, [r5, 0x20]
- b _080B823C
- .align 2, 0
-_080B81E4: .4byte 0x0000ffc0
-_080B81E8:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080B81F8
- ldr r0, _080B81F4 @ =0x04000016
- b _080B81FA
- .align 2, 0
-_080B81F4: .4byte 0x04000016
-_080B81F8:
- ldr r0, _080B8244 @ =0x0400001a
-_080B81FA:
- str r0, [sp, 0x10]
- movs r3, 0
- add r4, sp, 0x10
- ldr r6, _080B8248 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r7, r6, r0
-_080B8208:
- lsls r1, r3, 1
- adds r2, r1, r6
- ldrh r0, [r5, 0x1C]
- adds r0, 0x9F
- subs r0, r3
- strh r0, [r2]
- adds r1, r7
- ldrh r0, [r5, 0x1C]
- adds r0, 0x9F
- subs r0, r3
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x6F
- bls _080B8208
- ldr r1, _080B824C @ =0xa2600001
- str r1, [r4, 0x4]
- movs r2, 0
- movs r0, 0x1
- strb r0, [r4, 0x8]
- strb r2, [r4, 0x9]
- ldr r0, [sp, 0x10]
- ldr r2, [r4, 0x8]
- bl ScanlineEffect_SetParams
-_080B823C:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080B829E
- .align 2, 0
-_080B8244: .4byte 0x0400001a
-_080B8248: .4byte gScanlineEffectRegBuffers
-_080B824C: .4byte 0xa2600001
-_080B8250:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080B8268
- ldr r1, _080B8264 @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- b _080B8270
- .align 2, 0
-_080B8264: .4byte 0x00003f3d
-_080B8268:
- ldr r1, _080B82A8 @ =0x00003f3b
- movs r0, 0x4A
- bl SetGpuReg
-_080B8270:
- ldr r1, _080B82AC @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r2, _080B82B0 @ =gUnknown_2022984
- ldrh r0, [r5, 0x24]
- lsls r0, 8
- ldrh r1, [r5, 0x26]
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080B82B4 @ =gUnknown_2022986
- movs r0, 0xA0
- strh r0, [r1]
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r0, [r5, 0xA]
- strh r0, [r5, 0xC]
- ldr r1, _080B82B8 @ =0x0000080c
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _080B82BC @ =sub_80B82C0
- str r0, [r5]
-_080B829E:
- add sp, 0x1C
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B82A8: .4byte 0x00003f3b
-_080B82AC: .4byte 0x00003f3f
-_080B82B0: .4byte gUnknown_2022984
-_080B82B4: .4byte gUnknown_2022986
-_080B82B8: .4byte 0x0000080c
-_080B82BC: .4byte sub_80B82C0
- thumb_func_end sub_80B8070
-
- thumb_func_start sub_80B82C0
-sub_80B82C0: @ 80B82C0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B82E4 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080B82DA
- b _080B842A
-_080B82DA:
- lsls r0, 2
- ldr r1, _080B82E8 @ =_080B82EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B82E4: .4byte gTasks
-_080B82E8: .4byte _080B82EC
- .align 2, 0
-_080B82EC:
- .4byte _080B8300
- .4byte _080B832C
- .4byte _080B8394
- .4byte _080B83F6
- .4byte _080B8408
-_080B8300:
- ldrh r0, [r4, 0x12]
- adds r0, 0x8
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r4, 0x16]
- movs r3, 0x16
- ldrsh r1, [r4, r3]
- cmp r0, r1
- blt _080B8316
- strh r2, [r4, 0x12]
-_080B8316:
- adds r0, r4, 0
- bl sub_80B843C
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r1, r0
- beq _080B832A
- b _080B842A
-_080B832A:
- b _080B83FC
-_080B832C:
- movs r3, 0x26
- ldrsh r0, [r4, r3]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- subs r0, r1
- cmp r0, 0x3F
- bgt _080B8348
- ldrh r0, [r4, 0x24]
- subs r0, 0x4
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- adds r0, 0x4
- strh r0, [r4, 0x26]
- b _080B834C
-_080B8348:
- movs r0, 0x1
- strh r0, [r4, 0xA]
-_080B834C:
- ldr r2, _080B8390 @ =gUnknown_2022984
- ldrh r0, [r4, 0x24]
- lsls r0, 8
- ldrh r1, [r4, 0x26]
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0x10]
- adds r0, 0x8
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r4, 0x14]
- movs r3, 0x14
- ldrsh r1, [r4, r3]
- cmp r0, r1
- blt _080B836E
- strh r2, [r4, 0x10]
-_080B836E:
- adds r0, r4, 0
- bl sub_80B843C
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080B842A
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080B842A
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080B83FC
- .align 2, 0
-_080B8390: .4byte gUnknown_2022984
-_080B8394:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B842A
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B83C4
- ldrh r1, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B83D2
- subs r0, r1, 0x1
- strh r0, [r4, 0x1E]
- b _080B83D2
-_080B83C4:
- ldrh r1, [r4, 0x20]
- movs r3, 0x20
- ldrsh r0, [r4, r3]
- cmp r0, 0xF
- bgt _080B83D2
- adds r0, r1, 0x1
- strh r0, [r4, 0x20]
-_080B83D2:
- ldrh r1, [r4, 0x20]
- lsls r1, 8
- ldrh r0, [r4, 0x1E]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B842A
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x10
- bne _080B842A
- b _080B83FC
-_080B83F6:
- ldr r1, _080B8404 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B83FC:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B842A
- .align 2, 0
-_080B8404: .4byte gScanlineEffect
-_080B8408:
- ldr r0, _080B8430 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B8434 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080B8438 @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B842A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8430: .4byte gUnknown_2022984
-_080B8434: .4byte gUnknown_2022986
-_080B8438: .4byte 0x00003f3f
- thumb_func_end sub_80B82C0
-
- thumb_func_start sub_80B843C
-sub_80B843C: @ 80B843C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldrh r0, [r6, 0x12]
- ldrh r4, [r6, 0x10]
- subs r0, r4
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0
- beq _080B8530
- movs r2, 0x22
- ldrsh r0, [r6, r2]
- bl __divsi3
- mov r8, r0
- movs r3, 0x14
- ldrsh r0, [r6, r3]
- lsls r5, r0, 8
- lsls r0, r4, 16
- movs r4, 0
- cmp r0, 0
- ble _080B849C
- ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, _080B852C @ =gScanlineEffect
-_080B8470:
- lsls r2, r4, 16
- asrs r2, 16
- lsls r3, r2, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r3, r0
- add r3, r12
- adds r1, r2, 0
- subs r1, 0x9F
- ldrh r0, [r6, 0x1C]
- subs r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- lsrs r4, r2, 16
- asrs r2, 16
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- cmp r2, r0
- blt _080B8470
-_080B849C:
- ldrh r4, [r6, 0x10]
- lsls r3, r4, 16
- asrs r1, r3, 16
- movs r2, 0x12
- ldrsh r0, [r6, r2]
- cmp r1, r0
- bgt _080B84E6
- ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, _080B852C @ =gScanlineEffect
-_080B84B0:
- asrs r4, r3, 16
- cmp r4, 0
- blt _080B84D2
- asrs r1, r5, 8
- subs r1, r4
- lsls r3, r4, 1
- ldrb r2, [r7, 0x14]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 7
- adds r3, r0
- add r3, r12
- lsls r1, 16
- asrs r1, 16
- ldrh r2, [r6, 0x1C]
- adds r1, r2
- strh r1, [r3]
-_080B84D2:
- add r5, r8
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r3, r4, 16
- asrs r1, r3, 16
- movs r2, 0x12
- ldrsh r0, [r6, r2]
- cmp r1, r0
- ble _080B84B0
-_080B84E6:
- movs r3, 0x1C
- ldrsh r0, [r6, r3]
- adds r0, 0x9F
- lsls r2, r4, 16
- asrs r1, r2, 16
- subs r5, r0, r1
- movs r3, 0x16
- ldrsh r0, [r6, r3]
- cmp r1, r0
- bge _080B855E
- ldr r7, _080B8528 @ =gScanlineEffectRegBuffers
- ldr r4, _080B852C @ =gScanlineEffect
-_080B84FE:
- asrs r3, r2, 16
- cmp r3, 0
- blt _080B8516
- lsls r2, r3, 1
- ldrb r1, [r4, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- strh r5, [r2]
- subs r5, 0x1
-_080B8516:
- adds r0, r3, 0x1
- lsls r2, r0, 16
- asrs r1, r2, 16
- movs r3, 0x16
- ldrsh r0, [r6, r3]
- cmp r1, r0
- blt _080B84FE
- b _080B855E
- .align 2, 0
-_080B8528: .4byte gScanlineEffectRegBuffers
-_080B852C: .4byte gScanlineEffect
-_080B8530:
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- adds r5, r0, 0
- adds r5, 0x9F
- movs r4, 0
- ldr r3, _080B8568 @ =gScanlineEffectRegBuffers
- movs r2, 0xF0
- lsls r2, 3
- adds r6, r3, r2
-_080B8542:
- lsls r0, r4, 16
- asrs r0, 16
- lsls r2, r0, 1
- adds r1, r2, r3
- strh r5, [r1]
- adds r2, r6
- strh r5, [r2]
- subs r5, 0x1
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x6F
- ble _080B8542
-_080B855E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8568: .4byte gScanlineEffectRegBuffers
- thumb_func_end sub_80B843C
-
- thumb_func_start sub_80B856C
-sub_80B856C: @ 80B856C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0
- ldr r7, _080B85B4 @ =gSprites
- movs r1, 0x3
- ands r0, r1
- lsls r5, r0, 2
- movs r0, 0xD
- negs r0, r0
- adds r6, r0, 0
-_080B8582:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080B85A2
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r0, [r1, 0x5]
- ands r0, r6
- orrs r0, r5
- strb r0, [r1, 0x5]
-_080B85A2:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080B8582
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B85B4: .4byte gSprites
- thumb_func_end sub_80B856C
-
- thumb_func_start sub_80B85B8
-sub_80B85B8: @ 80B85B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r6, _080B8658 @ =gBattleAnimAttacker
- ldrb r0, [r6]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- eors r0, r1
- negs r1, r0
- orrs r1, r0
- lsrs r4, r1, 31
- ldrb r0, [r6]
- adds r1, r4, 0
- bl sub_8072E48
- ldr r0, _080B865C @ =gSprites
- mov r9, r0
- ldr r0, _080B8660 @ =gBattlerSpriteIds
- mov r8, r0
- ldrb r0, [r6]
- add r0, r8
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r7, 0x5
- negs r7, r7
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r6]
- movs r5, 0x2
- eors r0, r5
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B8642
- ldrb r0, [r6]
- eors r0, r5
- movs r1, 0x1
- eors r4, r1
- adds r1, r4, 0
- bl sub_8072E48
- ldrb r0, [r6]
- eors r0, r5
- add r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- adds r0, 0x3E
- ldrb r2, [r0]
- adds r1, r7, 0
- ands r1, r2
- strb r1, [r0]
-_080B8642:
- mov r0, r10
- bl DestroyAnimVisualTask
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8658: .4byte gBattleAnimAttacker
-_080B865C: .4byte gSprites
-_080B8660: .4byte gBattlerSpriteIds
- thumb_func_end sub_80B85B8
-
- thumb_func_start sub_80B8664
-sub_80B8664: @ 80B8664
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _080B86AC @ =gBattleAnimAttacker
- ldrb r0, [r4]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- eors r0, r1
- negs r1, r0
- orrs r1, r0
- lsrs r5, r1, 31
- adds r0, r5, 0
- bl sub_8073128
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B86A0
- movs r0, 0x1
- eors r5, r0
- adds r0, r5, 0
- bl sub_8073128
-_080B86A0:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B86AC: .4byte gBattleAnimAttacker
- thumb_func_end sub_80B8664
-
- thumb_func_start sub_80B86B0
-sub_80B86B0: @ 80B86B0
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080B86E0 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrb r1, [r1, 0x4]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _080B86E4 @ =sub_8074F6C
- str r0, [r4, 0x1C]
- ldr r1, _080B86E8 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B86E0: .4byte gBattleAnimArgs
-_080B86E4: .4byte sub_8074F6C
-_080B86E8: .4byte DestroyAnimSprite
- thumb_func_end sub_80B86B0
-
- thumb_func_start sub_80B86EC
-sub_80B86EC: @ 80B86EC
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- ldr r0, _080B87EC @ =gUnknown_2022984
- strh r6, [r0]
- ldr r0, _080B87F0 @ =gUnknown_2022986
- strh r6, [r0]
- ldr r1, _080B87F4 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080B87F8 @ =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, _080B87FC @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080B8800 @ =0x00000c08
- 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
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B8750
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080B8750:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080B87CA
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B87CA
- ldr r4, _080B8804 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080B8780
- ldrb r0, [r4]
- bl GetBattlerPosition
- lsls r0, 24
- cmp r0, 0
- bne _080B87CA
-_080B8780:
- ldrb r0, [r4]
- movs r5, 0x2
- eors r0, r5
- bl IsBattlerSpriteVisible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B87CA
- ldr r3, _080B8808 @ =gSprites
- ldr r1, _080B880C @ =gBattlerSpriteIds
- ldrb r0, [r4]
- eors r0, r5
- adds r0, r1
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r6, 0x1
-_080B87CA:
- ldr r4, _080B8804 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B8818
- ldr r1, _080B8810 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080B8814 @ =gEnemyParty
- b _080B8828
- .align 2, 0
-_080B87EC: .4byte gUnknown_2022984
-_080B87F0: .4byte gUnknown_2022986
-_080B87F4: .4byte 0x00003f3f
-_080B87F8: .4byte 0x00003f3d
-_080B87FC: .4byte 0x00003f42
-_080B8800: .4byte 0x00000c08
-_080B8804: .4byte gBattleAnimAttacker
-_080B8808: .4byte gSprites
-_080B880C: .4byte gBattlerSpriteIds
-_080B8810: .4byte gBattlerPartyIndexes
-_080B8814: .4byte gEnemyParty
-_080B8818:
- ldr r1, _080B88B8 @ =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080B88BC @ =gPlayerParty
-_080B8828:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B88C0 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_8076E34
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080B88C4 @ =gFile_graphics_battle_anims_masks_metal_shine_tilemap
- bl sub_807543C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080B88C8 @ =gFile_graphics_battle_anims_masks_metal_shine_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080B88CC @ =gFile_graphics_battle_anims_masks_metal_shine_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r2, _080B88D0 @ =gBattle_BG1_X
- ldr r0, _080B88D4 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x20]
- negs r0, r0
- adds r0, 0x60
- strh r0, [r2]
- ldr r2, _080B88D8 @ =gBattle_BG1_Y
- ldrh r0, [r1, 0x22]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r2]
- ldrb r0, [r1, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- adds r1, r0, 0
- ldr r2, _080B88DC @ =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _080B88E0
- adds r0, r1, 0
- movs r1, 0
- bl sub_8075B48
- b _080B88EC
- .align 2, 0
-_080B88B8: .4byte gBattlerPartyIndexes
-_080B88BC: .4byte gPlayerParty
-_080B88C0: .4byte gBattleAnimAttacker
-_080B88C4: .4byte gFile_graphics_battle_anims_masks_metal_shine_tilemap
-_080B88C8: .4byte gFile_graphics_battle_anims_masks_metal_shine_sheet
-_080B88CC: .4byte gFile_graphics_battle_anims_masks_metal_shine_palette
-_080B88D0: .4byte gBattle_BG1_X
-_080B88D4: .4byte gSprites
-_080B88D8: .4byte gBattle_BG1_Y
-_080B88DC: .4byte gBattleAnimArgs
-_080B88E0:
- lsls r0, r1, 4
- ldrh r3, [r2, 0x4]
- movs r1, 0x10
- movs r2, 0xB
- bl BlendPalette
-_080B88EC:
- ldr r1, _080B8914 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- ldr r2, _080B8918 @ =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r0, 0xA]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0xC]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0xE]
- strh r6, [r0, 0x14]
- ldr r1, _080B891C @ =sub_80B8920
- str r1, [r0]
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8914: .4byte gTasks
-_080B8918: .4byte gBattleAnimArgs
-_080B891C: .4byte sub_80B8920
- thumb_func_end sub_80B86EC
-
- thumb_func_start sub_80B8920
-sub_80B8920: @ 80B8920
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080B89E8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x1C]
- adds r0, 0x4
- movs r5, 0
- strh r0, [r4, 0x1C]
- ldr r2, _080B89EC @ =gBattle_BG1_X
- ldrh r3, [r2]
- subs r1, r3, 0x4
- strh r1, [r2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x80
- beq _080B894E
- b _080B8A5E
-_080B894E:
- strh r5, [r4, 0x1C]
- adds r0, r3, 0
- adds r0, 0x7C
- strh r0, [r2]
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080B89FC
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080B89F0 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r0, [r1, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- adds r1, r0, 0
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B8990
- adds r0, r1, 0
- movs r1, 0x1
- bl sub_8075B48
-_080B8990:
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_8075358
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080B8A5E
- ldr r2, _080B89F4 @ =gBattlerSpriteIds
- ldr r0, _080B89F8 @ =gBattleAnimAttacker
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- adds r0, r2
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- b _080B8A5E
- .align 2, 0
-_080B89E8: .4byte gTasks
-_080B89EC: .4byte gBattle_BG1_X
-_080B89F0: .4byte gSprites
-_080B89F4: .4byte gBattlerSpriteIds
-_080B89F8: .4byte gBattleAnimAttacker
-_080B89FC:
- cmp r0, 0x3
- bne _080B8A5E
- ldr r0, _080B8A68 @ =gUnknown_2022984
- strh r5, [r0]
- ldr r0, _080B8A6C @ =gUnknown_2022986
- strh r5, [r0]
- ldr r4, _080B8A70 @ =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 _080B8A2E
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080B8A2E:
- 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
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080B8A5E:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8A68: .4byte gUnknown_2022984
-_080B8A6C: .4byte gUnknown_2022986
-_080B8A70: .4byte 0x00003f3f
- thumb_func_end sub_80B8920
-
- thumb_func_start sub_80B8A74
-sub_80B8A74: @ 80B8A74
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080B8A94 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r2, r0, 0
- cmp r1, 0x7
- bhi _080B8AD8
- lsls r0, r1, 2
- ldr r1, _080B8A98 @ =_080B8A9C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B8A94: .4byte gBattleAnimArgs
-_080B8A98: .4byte _080B8A9C
- .align 2, 0
-_080B8A9C:
- .4byte _080B8ABC
- .4byte _080B8ABC
- .4byte _080B8ABC
- .4byte _080B8ABC
- .4byte _080B8AC8
- .4byte _080B8ACC
- .4byte _080B8AD0
- .4byte _080B8AD4
-_080B8ABC:
- ldrb r0, [r2]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- b _080B8ADA
-_080B8AC8:
- movs r4, 0
- b _080B8AE0
-_080B8ACC:
- movs r4, 0x2
- b _080B8AE0
-_080B8AD0:
- movs r4, 0x1
- b _080B8AE0
-_080B8AD4:
- movs r4, 0x3
- b _080B8AE0
-_080B8AD8:
- movs r2, 0xFF
-_080B8ADA:
- movs r0, 0
- cmp r0, 0
- beq _080B8B06
-_080B8AE0:
- adds r0, r4, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B8B04
- ldr r0, _080B8B00 @ =gBattlerSpriteIds
- adds r0, r4, r0
- ldrb r2, [r0]
- b _080B8B06
- .align 2, 0
-_080B8B00: .4byte gBattlerSpriteIds
-_080B8B04:
- movs r2, 0xFF
-_080B8B06:
- cmp r2, 0xFF
- beq _080B8B22
- ldr r1, _080B8B30 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- ldr r1, _080B8B34 @ =gBattleAnimArgs
- ldrb r1, [r1, 0x2]
- bl sub_8075B48
-_080B8B22:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8B30: .4byte gSprites
-_080B8B34: .4byte gBattleAnimArgs
- thumb_func_end sub_80B8A74
-
- thumb_func_start sub_80B8B38
-sub_80B8B38: @ 80B8B38
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080B8B64 @ =gAnimMoveTurn
- ldrb r0, [r2]
- cmp r0, 0x1
- bhi _080B8B4C
- ldr r1, _080B8B68 @ =gBattleAnimArgs
- movs r0, 0
- strh r0, [r1, 0xE]
-_080B8B4C:
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _080B8B58
- ldr r1, _080B8B68 @ =gBattleAnimArgs
- movs r0, 0x1
- strh r0, [r1, 0xE]
-_080B8B58:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B8B64: .4byte gAnimMoveTurn
-_080B8B68: .4byte gBattleAnimArgs
- thumb_func_end sub_80B8B38
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s
index c9dd68e4b..8b2797dc8 100644
--- a/asm/dodrio_berry_picking.s
+++ b/asm/dodrio_berry_picking.s
@@ -10658,7 +10658,7 @@ _08155AA6:
movs r0, 0
movs r1, 0
bl DrawDialogueFrame
- ldr r2, _08155ACC @ =gUnknown_8419F54
+ ldr r2, _08155ACC @ =gText_SavingDontTurnOffThePower2
str r4, [sp]
movs r0, 0x2
str r0, [sp, 0x4]
@@ -10672,7 +10672,7 @@ _08155AA6:
bl AddTextPrinterParameterized2
b _08155B08
.align 2, 0
-_08155ACC: .4byte gUnknown_8419F54
+_08155ACC: .4byte gText_SavingDontTurnOffThePower2
_08155AD0:
movs r0, 0
movs r1, 0x3
diff --git a/asm/dragon.s b/asm/dragon.s
deleted file mode 100644
index bd01691f1..000000000
--- a/asm/dragon.s
+++ /dev/null
@@ -1,835 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B725C
-sub_80B725C: @ 80B725C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B72A4 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B72AC
- ldr r2, _080B72A8 @ =gBattleAnimArgs
- ldrh r0, [r5, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldrh r0, [r2, 0x6]
- negs r0, r0
- strh r0, [r2, 0x6]
- ldrh r0, [r2, 0x8]
- negs r0, r0
- strh r0, [r2, 0x8]
- adds r1, r2, 0
- b _080B72B6
- .align 2, 0
-_080B72A4: .4byte gBattleAnimAttacker
-_080B72A8: .4byte gBattleAnimArgs
-_080B72AC:
- ldr r1, _080B72EC @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- strh r0, [r5, 0x20]
-_080B72B6:
- ldrh r0, [r1, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r5, 0x38]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080B72F0 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B72F4 @ =sub_8074E70
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B72EC: .4byte gBattleAnimArgs
-_080B72F0: .4byte move_anim_8074EE0
-_080B72F4: .4byte sub_8074E70
- thumb_func_end sub_80B725C
-
- thumb_func_start sub_80B72F8
-sub_80B72F8: @ 80B72F8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_8074FCC
- ldr r4, _080B7350 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080B7354 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B735C
- ldr r2, _080B7358 @ =gBattleAnimArgs
- ldrh r0, [r5, 0x20]
- ldrh r1, [r2, 0x2]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- adds r1, r0
- strh r1, [r5, 0x22]
- ldrh r0, [r5, 0x32]
- ldrh r1, [r2, 0x4]
- subs r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r2, 0x6]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- b _080B7386
- .align 2, 0
-_080B7350: .4byte gBattleAnimTarget
-_080B7354: .4byte gBattleAnimAttacker
-_080B7358: .4byte gBattleAnimArgs
-_080B735C:
- ldr r1, _080B73A0 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- strh r0, [r5, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldrh r0, [r1, 0x4]
- ldrh r2, [r5, 0x32]
- adds r0, r2
- strh r0, [r5, 0x32]
- ldrh r0, [r1, 0x6]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080B7386:
- ldr r0, _080B73A0 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x8]
- strh r0, [r5, 0x2E]
- ldr r0, _080B73A4 @ =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, _080B73A8 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B73A0: .4byte gBattleAnimArgs
-_080B73A4: .4byte StartAnimLinearTranslation
-_080B73A8: .4byte move_anim_8074EE0
- thumb_func_end sub_80B72F8
-
- thumb_func_start sub_80B73AC
-sub_80B73AC: @ 80B73AC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B73C0 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B73C8
- ldr r4, _080B73C4 @ =gBattleAnimAttacker
- b _080B73CA
- .align 2, 0
-_080B73C0: .4byte gBattleAnimArgs
-_080B73C4: .4byte gBattleAnimAttacker
-_080B73C8:
- ldr r4, _080B740C @ =gBattleAnimTarget
-_080B73CA:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, _080B7410 @ =gBattleAnimArgs
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_8074FF8
- ldrh r0, [r4, 0x4]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldr r0, _080B7414 @ =sub_8074F6C
- str r0, [r5, 0x1C]
- ldr r1, _080B7418 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B740C: .4byte gBattleAnimTarget
-_080B7410: .4byte gBattleAnimArgs
-_080B7414: .4byte sub_8074F6C
-_080B7418: .4byte move_anim_8074EE0
- thumb_func_end sub_80B73AC
-
- thumb_func_start sub_80B741C
-sub_80B741C: @ 80B741C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B7444 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B7436
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080B7436:
- adds r0, r4, 0
- bl sub_80B72F8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7444: .4byte gBattleAnimAttacker
- thumb_func_end sub_80B741C
-
- thumb_func_start sub_80B7448
-sub_80B7448: @ 80B7448
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r4, _080B749C @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r6, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x22]
- strh r5, [r6, 0x36]
- movs r0, 0x1
- strh r0, [r6, 0x38]
- ldr r0, _080B74A0 @ =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r6, 0x3A]
- ldr r4, _080B74A4 @ =gBattlerAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8076B2C
- lsls r7, r0, 16
- lsrs r5, r7, 16
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8076B2C
- lsls r1, r0, 16
- lsrs r0, r1, 16
- cmp r5, r0
- bls _080B74A8
- lsrs r0, r7, 17
- b _080B74AA
- .align 2, 0
-_080B749C: .4byte gBattleAnimAttacker
-_080B74A0: .4byte gBattleAnimArgs
-_080B74A4: .4byte gBattlerAttacker
-_080B74A8:
- lsrs r0, r1, 17
-_080B74AA:
- strh r0, [r6, 0x3C]
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r2, 0x3C
- ldrsh r1, [r6, r2]
- bl Cos
- strh r0, [r6, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r2, 0x3C
- ldrsh r1, [r6, r2]
- bl Sin
- strh r0, [r6, 0x26]
- ldr r0, _080B74D4 @ =sub_80B74D8
- str r0, [r6, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B74D4: .4byte sub_80B74D8
- thumb_func_end sub_80B7448
-
- thumb_func_start sub_80B74D8
-sub_80B74D8: @ 80B74D8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0
- beq _080B74EA
- cmp r5, 0x1
- beq _080B7556
- b _080B75DA
-_080B74EA:
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x38]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080B753C
- strh r5, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B753C
- adds r0, r1, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080B753C
- movs r0, 0x10
- strh r0, [r4, 0x38]
-_080B753C:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _080B75DA
- movs r0, 0
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080B75DA
-_080B7556:
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x38]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0x95
- bgt _080B757E
- adds r0, r1, 0
- adds r0, 0x8
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x95
- ble _080B757E
- movs r0, 0x96
- strh r0, [r4, 0x3C]
-_080B757E:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080B75C6
- movs r0, 0
- strh r0, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B75C6
- adds r0, r1, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080B75C6
- movs r0, 0x10
- strh r0, [r4, 0x38]
-_080B75C6:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080B75DA
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B75DA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B74D8
-
- thumb_func_start sub_80B75E0
-sub_80B75E0: @ 80B75E0
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B760C @ =gTasks
- adds r4, r1, r0
- ldr r0, _080B7610 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B761C
- ldr r0, _080B7614 @ =0x04000014
- str r0, [sp]
- ldr r0, _080B7618 @ =gBattle_BG1_X
- b _080B7622
- .align 2, 0
-_080B760C: .4byte gTasks
-_080B7610: .4byte gBattleAnimAttacker
-_080B7614: .4byte 0x04000014
-_080B7618: .4byte gBattle_BG1_X
-_080B761C:
- ldr r0, _080B7698 @ =0x04000018
- str r0, [sp]
- ldr r0, _080B769C @ =gBattle_BG2_X
-_080B7622:
- ldrh r0, [r0]
- strh r0, [r4, 0xC]
- ldr r0, _080B76A0 @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r5, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r5, [r0, 0x9]
- ldr r0, _080B76A4 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r4, 0xE]
- adds r0, 0x20
- strh r0, [r4, 0x10]
- cmp r1, 0
- bge _080B7652
- strh r5, [r4, 0xE]
-_080B7652:
- ldrh r3, [r4, 0xE]
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- bgt _080B7680
- ldr r5, _080B76A8 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080B7664:
- lsls r1, r3, 1
- adds r2, r1, r5
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- ble _080B7664
-_080B7680:
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldr r0, _080B76AC @ =sub_80B76B0
- str r0, [r4]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7698: .4byte 0x04000018
-_080B769C: .4byte gBattle_BG2_X
-_080B76A0: .4byte 0xa2600001
-_080B76A4: .4byte gBattleAnimAttacker
-_080B76A8: .4byte gScanlineEffectRegBuffers
-_080B76AC: .4byte sub_80B76B0
- thumb_func_end sub_80B75E0
-
- thumb_func_start sub_80B76B0
-sub_80B76B0: @ 80B76B0
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080B76D4 @ =gTasks
- adds r2, r0, r1
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0x4
- bhi _080B7766
- lsls r0, 2
- ldr r1, _080B76D8 @ =_080B76DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B76D4: .4byte gTasks
-_080B76D8: .4byte _080B76DC
- .align 2, 0
-_080B76DC:
- .4byte _080B76F0
- .4byte _080B7712
- .4byte _080B7722
- .4byte _080B774E
- .4byte _080B7760
-_080B76F0:
- ldrh r0, [r2, 0x16]
- adds r0, 0x1
- strh r0, [r2, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B7746
- movs r0, 0
- strh r0, [r2, 0x16]
- ldrh r0, [r2, 0x14]
- adds r0, 0x1
- strh r0, [r2, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080B7746
- b _080B7740
-_080B7712:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _080B7746
- b _080B7740
-_080B7722:
- ldrh r0, [r2, 0x16]
- adds r0, 0x1
- strh r0, [r2, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B7746
- movs r0, 0
- strh r0, [r2, 0x16]
- ldrh r0, [r2, 0x14]
- subs r0, 0x1
- strh r0, [r2, 0x14]
- lsls r0, 16
- cmp r0, 0
- bne _080B7746
-_080B7740:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_080B7746:
- adds r0, r2, 0
- bl sub_80B776C
- b _080B7766
-_080B774E:
- ldr r1, _080B775C @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080B7766
- .align 2, 0
-_080B775C: .4byte gScanlineEffect
-_080B7760:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080B7766:
- pop {r0}
- bx r0
- thumb_func_end sub_80B76B0
-
- thumb_func_start sub_80B776C
-sub_80B776C: @ 80B776C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- ldrh r3, [r5, 0x12]
- ldrh r4, [r5, 0xE]
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- cmp r4, r0
- bgt _080B77C2
- ldr r7, _080B77D8 @ =gScanlineEffectRegBuffers
- mov r12, r7
- ldr r0, _080B77DC @ =gSineTable
- mov r8, r0
- ldr r6, _080B77E0 @ =gScanlineEffect
-_080B778A:
- lsls r2, r4, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r12
- lsls r0, r3, 1
- add r0, r8
- movs r7, 0
- ldrsh r1, [r0, r7]
- movs r7, 0x14
- ldrsh r0, [r5, r7]
- muls r0, r1
- asrs r0, 7
- ldrh r1, [r5, 0xC]
- adds r0, r1
- strh r0, [r2]
- adds r3, 0x8
- movs r0, 0xFF
- ands r3, r0
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- movs r7, 0x10
- ldrsh r0, [r5, r7]
- cmp r4, r0
- ble _080B778A
-_080B77C2:
- ldrh r0, [r5, 0x12]
- adds r0, 0x9
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x12]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B77D8: .4byte gScanlineEffectRegBuffers
-_080B77DC: .4byte gSineTable
-_080B77E0: .4byte gScanlineEffect
- thumb_func_end sub_80B776C
-
- thumb_func_start sub_80B77E4
-sub_80B77E4: @ 80B77E4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- ldr r5, _080B7884 @ =gBattleAnimArgs
- movs r0, 0x4
- ldrsh r1, [r5, r0]
- lsls r0, r1, 1
- adds r0, r1
- movs r1, 0x5
- bl __divsi3
- adds r6, r0, 0
- ldr r1, _080B7888 @ =gBattleAnimAttacker
- mov r8, r1
- ldrb r0, [r1]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r3, [r5, 0x8]
- adds r0, r3
- strh r0, [r4, 0x22]
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl Cos
- strh r0, [r4, 0x30]
- movs r3, 0x2
- ldrsh r0, [r5, r3]
- lsls r6, 16
- asrs r6, 16
- adds r1, r6, 0
- bl Sin
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x30]
- ldrh r2, [r5]
- adds r3, r2, 0
- muls r3, r1
- adds r1, r3, 0
- ldrh r3, [r4, 0x20]
- adds r1, r3
- strh r1, [r4, 0x20]
- adds r1, r2, 0
- muls r1, r0
- adds r0, r1, 0
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x34]
- ldr r0, _080B788C @ =sub_80B7894
- str r0, [r4, 0x1C]
- adds r4, 0x2E
- ldr r2, _080B7890 @ =gUnknown_20399A4
- movs r1, 0x6
-_080B786C:
- ldrh r0, [r4]
- strh r0, [r2]
- adds r4, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _080B786C
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7884: .4byte gBattleAnimArgs
-_080B7888: .4byte gBattleAnimAttacker
-_080B788C: .4byte sub_80B7894
-_080B7890: .4byte gUnknown_20399A4
- thumb_func_end sub_80B77E4
-
- thumb_func_start sub_80B7894
-sub_80B7894: @ 80B7894
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- strh r0, [r4, 0x38]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _080B78D8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B78D8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B7894
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/electric.s b/asm/electric.s
index d020459d5..fa92c096a 100644
--- a/asm/electric.s
+++ b/asm/electric.s
@@ -110,7 +110,7 @@ sub_80ADC9C: @ 80ADC9C
cmp r0, 0
beq _080ADCB2
adds r0, r2, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080ADCB2:
pop {r0}
bx r0
@@ -173,18 +173,18 @@ _080ADD1C:
strh r0, [r5, 0x32]
ldrh r0, [r2, 0x8]
strh r0, [r5, 0x34]
- ldr r1, _080ADD44 @ =move_anim_8074EE0
+ ldr r1, _080ADD44 @ =DestroySpriteAndMatrix
adds r0, r5, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080ADD48 @ =sub_8074A80
+ ldr r0, _080ADD48 @ =TranslateSpriteInCircleOverDuration
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080ADD40: .4byte gBattleAnimArgs
-_080ADD44: .4byte move_anim_8074EE0
-_080ADD48: .4byte sub_8074A80
+_080ADD44: .4byte DestroySpriteAndMatrix
+_080ADD48: .4byte TranslateSpriteInCircleOverDuration
thumb_func_end sub_80ADCB8
thumb_func_start sub_80ADD4C
@@ -315,7 +315,7 @@ _080ADE02:
cmp r0, 0
beq _080ADE66
adds r0, r4, 0
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
@@ -370,7 +370,7 @@ sub_80ADEB0: @ 80ADEB0
push {r4-r6,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r5, _080ADF24 @ =gBattleAnimArgs
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
@@ -392,7 +392,7 @@ sub_80ADEB0: @ 80ADEB0
lsrs r0, 24
strh r0, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x38]
ldrh r0, [r5, 0xA]
@@ -432,7 +432,7 @@ _080ADF34: .4byte sub_80ADF38
sub_80ADF38: @ 80ADF38
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _080ADFA2
@@ -743,7 +743,7 @@ sub_80AE1A0: @ 80AE1A0
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldrh r2, [r4, 0x4]
lsls r1, r2, 22
lsrs r1, 22
@@ -788,7 +788,7 @@ _080AE1FA:
ldr r0, _080AE214 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
- ldr r0, _080AE218 @ =sub_8074C44
+ ldr r0, _080AE218 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080AE21C @ =DestroyAnimSprite
adds r0, r4, 0
@@ -798,7 +798,7 @@ _080AE1FA:
bx r0
.align 2, 0
_080AE214: .4byte gBattleAnimArgs
-_080AE218: .4byte sub_8074C44
+_080AE218: .4byte WaitAnimForDuration
_080AE21C: .4byte DestroyAnimSprite
thumb_func_end sub_80AE1A0
@@ -1142,7 +1142,7 @@ sub_80AE470: @ 80AE470
ands r0, r5
orrs r0, r1
strh r0, [r6, 0x4]
- ldr r1, _080AE4EC @ =gUnknown_2037EE2
+ ldr r1, _080AE4EC @ =gAnimVisualTaskCount
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
@@ -1160,7 +1160,7 @@ _080AE4DC: .4byte gUnknown_83E60B8
_080AE4E0: .4byte gSprites
_080AE4E4: .4byte 0x000003ff
_080AE4E8: .4byte 0xfffffc00
-_080AE4EC: .4byte gUnknown_2037EE2
+_080AE4EC: .4byte gAnimVisualTaskCount
_080AE4F0: .4byte sub_80AE4F4
thumb_func_end sub_80AE470
@@ -1344,11 +1344,11 @@ sub_80AE5BC: @ 80AE5BC
strh r0, [r4, 0x36]
strh r6, [r4, 0x38]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldr r1, _080AE6B4 @ =sub_80AE704
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080AE6B8 @ =sub_8074F6C
+ ldr r0, _080AE6B8 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
ldrh r0, [r5, 0x1A]
adds r0, 0x1
@@ -1390,7 +1390,7 @@ _080AE6A8: .4byte gUnknown_83E6120
_080AE6AC: .4byte gSprites
_080AE6B0: .4byte gUnknown_83E60D0
_080AE6B4: .4byte sub_80AE704
-_080AE6B8: .4byte sub_8074F6C
+_080AE6B8: .4byte RunStoredCallbackWhenAnimEnds
_080AE6BC:
movs r1, 0x16
ldrsh r0, [r5, r1]
@@ -1408,7 +1408,7 @@ _080AE6CA:
sub_80AE6D0: @ 80AE6D0
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080AE6F8
@@ -1476,18 +1476,18 @@ _080AE73A:
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r1, _080AE76C @ =move_anim_8074EE0
+ ldr r1, _080AE76C @ =DestroySpriteAndMatrix
adds r0, r5, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080AE770 @ =sub_8074F50
+ ldr r0, _080AE770 @ =RunStoredCallbackWhenAffineAnimEnds
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080AE768: .4byte gBattleAnimTarget
-_080AE76C: .4byte move_anim_8074EE0
-_080AE770: .4byte sub_8074F50
+_080AE76C: .4byte DestroySpriteAndMatrix
+_080AE770: .4byte RunStoredCallbackWhenAffineAnimEnds
thumb_func_end sub_80AE71C
thumb_func_start sub_80AE774
@@ -1527,7 +1527,7 @@ _080AE792:
ldr r1, _080AE7D4 @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080AE7D8 @ =sub_8074F6C
+ ldr r0, _080AE7D8 @ =RunStoredCallbackWhenAnimEnds
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
@@ -1536,7 +1536,7 @@ _080AE792:
_080AE7CC: .4byte gBattleAnimTarget
_080AE7D0: .4byte gBattleAnimArgs
_080AE7D4: .4byte DestroyAnimSprite
-_080AE7D8: .4byte sub_8074F6C
+_080AE7D8: .4byte RunStoredCallbackWhenAnimEnds
thumb_func_end sub_80AE774
thumb_func_start sub_80AE7DC
@@ -1559,7 +1559,7 @@ sub_80AE7DC: @ 80AE7DC
lsrs r0, 24
strh r0, [r5, 0x22]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x3A]
@@ -1632,7 +1632,7 @@ _080AE864:
cmp r0, r1
bls _080AE894
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080AE894:
pop {r4}
pop {r0}
@@ -1672,7 +1672,7 @@ _080AE8D2:
b _080AEA04
_080AE8D4:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r6, 0
@@ -2203,7 +2203,7 @@ _080AECC4:
cmp r0, 0
beq _080AECD8
adds r0, r5, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080AECD8:
pop {r4,r5}
pop {r0}
@@ -2279,12 +2279,12 @@ _080AED20:
movs r0, 0xC
strh r0, [r5, 0x1E]
subs r0, 0x4C
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0x20]
movs r0, 0x3F
- bl sub_8073A44
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0x22]
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 2393df6a6..9919ccc24 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -2014,7 +2014,7 @@ task00_8084310: @ 8084310
ldrsh r6, [r4, r0]
cmp r6, 0
bne _08084350
- bl sub_807AA70
+ bl field_weather_is_fade_finished
lsls r0, 24
cmp r0, 0
beq _08084376
@@ -2287,7 +2287,7 @@ _08084560: .4byte gSprites
sub_8084564: @ 8084564
push {r4,lr}
adds r4, r0, 0
- bl sub_807AA70
+ bl field_weather_is_fade_finished
lsls r0, 24
cmp r0, 0
beq _08084578
@@ -4002,7 +4002,7 @@ sub_8085274: @ 8085274
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
- bl sub_807AA70
+ bl field_weather_is_fade_finished
lsls r0, 24
cmp r0, 0
beq _080852B4
@@ -5025,7 +5025,7 @@ _08085A50: .4byte gTasks
sub_8085A54: @ 8085A54
push {r4,lr}
adds r4, r0, 0
- bl sub_807AA70
+ bl field_weather_is_fade_finished
lsls r0, 24
cmp r0, 0
beq _08085A78
@@ -5492,7 +5492,7 @@ _08085E08: .4byte gTasks
sub_8085E0C: @ 8085E0C
push {r4-r6,lr}
adds r6, r0, 0
- bl sub_807AA70
+ bl field_weather_is_fade_finished
lsls r0, 24
cmp r0, 0
beq _08085E82
diff --git a/asm/field_message_box.s b/asm/field_message_box.s
index a326e0f59..183b5a3fb 100644
--- a/asm/field_message_box.s
+++ b/asm/field_message_box.s
@@ -75,7 +75,7 @@ _080693C4:
lsls r0, 24
cmp r0, 0
bne _080693D4
- bl sub_80F6E9C
+ bl LoadStdWindowFrameGfx
b _080693E2
_080693D4:
bl sub_80F79A4
diff --git a/asm/field_weather.s b/asm/field_weather.s
index 403a365be..b65548171 100644
--- a/asm/field_weather.s
+++ b/asm/field_weather.s
@@ -1889,8 +1889,8 @@ _0807AA68: .4byte 0x000006ca
_0807AA6C: .4byte 0x000006cb
thumb_func_end FieldWeather_StartFadingOutCreditsMap
- thumb_func_start sub_807AA70
-sub_807AA70: @ 807AA70
+ thumb_func_start field_weather_is_fade_finished
+field_weather_is_fade_finished: @ 807AA70
ldr r0, _0807AA84 @ =gUnknown_2037F34
ldr r1, _0807AA88 @ =0x000006c6
adds r0, r1
@@ -1904,7 +1904,7 @@ sub_807AA70: @ 807AA70
.align 2, 0
_0807AA84: .4byte gUnknown_2037F34
_0807AA88: .4byte 0x000006c6
- thumb_func_end sub_807AA70
+ thumb_func_end field_weather_is_fade_finished
thumb_func_start sub_807AA8C
sub_807AA8C: @ 807AA8C
diff --git a/asm/fighting.s b/asm/fighting.s
index 81785b16b..89168ced6 100644
--- a/asm/fighting.s
+++ b/asm/fighting.s
@@ -13,14 +13,14 @@ unc_080B08A0: @ 80B08A0
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
- bl sub_8074FF8
+ bl SetAnimSpriteInitialXOffset
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
movs r0, 0xF
strh r0, [r4, 0x2E]
- ldr r0, _080B08D4 @ =sub_8074C44
+ ldr r0, _080B08D4 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080B08D8 @ =DestroyAnimSprite
adds r0, r4, 0
@@ -30,7 +30,7 @@ unc_080B08A0: @ 80B08A0
bx r0
.align 2, 0
_080B08D0: .4byte gBattleAnimArgs
-_080B08D4: .4byte sub_8074C44
+_080B08D4: .4byte WaitAnimForDuration
_080B08D8: .4byte DestroyAnimSprite
thumb_func_end unc_080B08A0
@@ -110,19 +110,19 @@ sub_80B0954: @ 80B0954
bne _080B0978
adds r0, r5, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
b _080B0980
.align 2, 0
_080B0974: .4byte gBattleAnimArgs
_080B0978:
adds r0, r5, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
_080B0980:
ldr r0, _080B0998 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r5, 0x2E]
- ldr r0, _080B099C @ =sub_8074C44
+ ldr r0, _080B099C @ =WaitAnimForDuration
str r0, [r5, 0x1C]
ldr r1, _080B09A0 @ =DestroyAnimSprite
adds r0, r5, 0
@@ -132,7 +132,7 @@ _080B0980:
bx r0
.align 2, 0
_080B0998: .4byte gBattleAnimArgs
-_080B099C: .4byte sub_8074C44
+_080B099C: .4byte WaitAnimForDuration
_080B09A0: .4byte DestroyAnimSprite
thumb_func_end sub_80B0954
@@ -188,7 +188,7 @@ _080B09E8:
strh r0, [r5, 0x22]
mov r0, r8
movs r1, 0x1
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r0, 16
asrs r1, r0, 16
lsrs r0, 31
@@ -197,7 +197,7 @@ _080B09E8:
lsrs r6, r1, 16
mov r0, r8
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r0, 16
asrs r0, 16
cmp r0, 0
@@ -267,7 +267,7 @@ _080B0A9C:
mov r1, r9
ldrh r0, [r1, 0x2]
strh r0, [r5, 0x2E]
- ldr r0, _080B0B1C @ =gUnknown_83E7C08
+ ldr r0, _080B0B1C @ =gBasicHitSplatSpriteTemplate
movs r2, 0x20
ldrsh r1, [r5, r2]
movs r3, 0x22
@@ -315,7 +315,7 @@ _080B0B00:
_080B0B10: .4byte gBattleAnimTarget
_080B0B14: .4byte gBattlerPositions
_080B0B18: .4byte 0xfff00000
-_080B0B1C: .4byte gUnknown_83E7C08
+_080B0B1C: .4byte gBasicHitSplatSpriteTemplate
_080B0B20: .4byte gSprites
_080B0B24: .4byte SpriteCallbackDummy
_080B0B28: .4byte sub_80B0B2C
@@ -371,7 +371,7 @@ sub_80B0B80: @ 80B0B80
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
movs r0, 0x1E
strh r0, [r4, 0x2E]
ldr r0, _080B0BA0 @ =gBattleAnimArgs
@@ -480,7 +480,7 @@ sub_80B0C28: @ 80B0C28
_080B0C54:
adds r0, r6, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldr r0, _080B0CA4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -505,7 +505,7 @@ _080B0C72:
strh r0, [r6, 0x34]
strh r0, [r6, 0x36]
adds r0, r6, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldrh r0, [r4, 0xA]
strh r0, [r6, 0x38]
ldrh r0, [r4, 0x8]
@@ -527,7 +527,7 @@ _080B0CB0: .4byte sub_80B0CB4
sub_80B0CB4: @ 80B0CB4
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _080B0CE0
@@ -559,14 +559,14 @@ sub_80B0CEC: @ 80B0CEC
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldr r5, _080B0D18 @ =gBattleAnimArgs
ldrb r1, [r5, 0x4]
adds r0, r4, 0
bl StartSpriteAnim
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
- ldr r0, _080B0D1C @ =sub_8074C44
+ ldr r0, _080B0D1C @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080B0D20 @ =sub_80B0D24
adds r0, r4, 0
@@ -576,7 +576,7 @@ sub_80B0CEC: @ 80B0CEC
bx r0
.align 2, 0
_080B0D18: .4byte gBattleAnimArgs
-_080B0D1C: .4byte sub_8074C44
+_080B0D1C: .4byte WaitAnimForDuration
_080B0D20: .4byte sub_80B0D24
thumb_func_end sub_80B0CEC
@@ -594,7 +594,7 @@ sub_80B0D24: @ 80B0D24
strb r0, [r2]
movs r0, 0x14
strh r0, [r4, 0x2E]
- ldr r0, _080B0D50 @ =sub_8074C44
+ ldr r0, _080B0D50 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080B0D54 @ =DestroyAnimSprite
adds r0, r4, 0
@@ -603,7 +603,7 @@ sub_80B0D24: @ 80B0D24
pop {r0}
bx r0
.align 2, 0
-_080B0D50: .4byte sub_8074C44
+_080B0D50: .4byte WaitAnimForDuration
_080B0D54: .4byte DestroyAnimSprite
thumb_func_end sub_80B0D24
@@ -612,7 +612,7 @@ sub_80B0D58: @ 80B0D58
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldr r0, _080B0D74 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
@@ -674,14 +674,14 @@ sub_80B0DD4: @ 80B0DD4
push {lr}
movs r1, 0xF
strh r1, [r0, 0x2E]
- ldr r1, _080B0DE8 @ =sub_8074C44
+ ldr r1, _080B0DE8 @ =WaitAnimForDuration
str r1, [r0, 0x1C]
ldr r1, _080B0DEC @ =DestroyAnimSprite
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
-_080B0DE8: .4byte sub_8074C44
+_080B0DE8: .4byte WaitAnimForDuration
_080B0DEC: .4byte DestroyAnimSprite
thumb_func_end sub_80B0DD4
@@ -695,7 +695,7 @@ sub_80B0DF0: @ 80B0DF0
bne _080B0E1C
adds r0, r4, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldr r1, _080B0E18 @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x30]
@@ -1052,7 +1052,7 @@ sub_80B107C: @ 80B107C
strh r0, [r5, 0x22]
ldr r0, _080B10D0 @ =gBattleAnimAttacker
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -1072,7 +1072,7 @@ _080B10D4: .4byte gBattleAnimTarget
_080B10D8:
ldr r0, _080B1110 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -1140,8 +1140,8 @@ sub_80B111C: @ 80B111C
lsrs r0, 24
strh r0, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r1, _080B1180 @ =move_anim_8074EE0
+ bl InitAnimLinearTranslation
+ ldr r1, _080B1180 @ =DestroySpriteAndMatrix
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, _080B1184 @ =sub_807563C
@@ -1151,7 +1151,7 @@ _080B1178:
pop {r0}
bx r0
.align 2, 0
-_080B1180: .4byte move_anim_8074EE0
+_080B1180: .4byte DestroySpriteAndMatrix
_080B1184: .4byte sub_807563C
thumb_func_end sub_80B111C
@@ -1171,7 +1171,7 @@ sub_80B1188: @ 80B1188
adds r1, r5, 0
adds r1, 0x38
lsls r2, 8
- bl sub_80765C0
+ bl StorePointerInVars
ldrh r0, [r4, 0x2]
strh r0, [r5, 0x3A]
ldrh r2, [r5, 0x4]
@@ -1214,7 +1214,7 @@ sub_80B11E4: @ 80B11E4
ldrsh r0, [r7, r2]
movs r2, 0x38
ldrsh r1, [r7, r2]
- bl sub_80765C8
+ bl LoadPointerFromVars
adds r4, r0, 0
movs r1, 0x3A
ldrsh r0, [r7, r1]
@@ -1224,7 +1224,7 @@ sub_80B11E4: @ 80B11E4
adds r1, r7, 0
adds r1, 0x38
adds r2, r4, 0
- bl sub_80765C0
+ bl StorePointerInVars
asrs r4, 8
strh r4, [r7, 0x22]
lsls r4, 16
@@ -1369,7 +1369,7 @@ _080B132C:
ldr r0, _080B1368 @ =gBattleAnimTarget
_080B1332:
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -1431,7 +1431,7 @@ _080B138C:
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldr r1, _080B13CC @ =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
@@ -1546,14 +1546,14 @@ sub_80B1484: @ 80B1484
bne _080B14A0
adds r0, r4, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
b _080B14A8
.align 2, 0
_080B149C: .4byte gBattleAnimArgs
_080B14A0:
adds r0, r4, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
_080B14A8:
bl IsContest
lsls r0, 24
@@ -1574,7 +1574,7 @@ _080B14BC:
movs r1, 0x1
bl StartSpriteAnim
_080B14D2:
- ldr r0, _080B14E8 @ =sub_8074F6C
+ ldr r0, _080B14E8 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
ldr r1, _080B14EC @ =DestroyAnimSprite
adds r0, r4, 0
@@ -1584,7 +1584,7 @@ _080B14D2:
bx r0
.align 2, 0
_080B14E4: .4byte gBattleAnimAttacker
-_080B14E8: .4byte sub_8074F6C
+_080B14E8: .4byte RunStoredCallbackWhenAnimEnds
_080B14EC: .4byte DestroyAnimSprite
thumb_func_end sub_80B1484
diff --git a/asm/fire.s b/asm/fire.s
index d838039ac..efdfc8315 100644
--- a/asm/fire.s
+++ b/asm/fire.s
@@ -24,7 +24,7 @@ sub_80AC90C: @ 80AC90C
ldr r1, _080AC944 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r1, _080AC948 @ =sub_8074AE0
+ ldr r1, _080AC948 @ =TranslateSpriteInGrowingCircleOverDuration
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
@@ -34,7 +34,7 @@ sub_80AC90C: @ 80AC90C
.align 2, 0
_080AC940: .4byte gBattleAnimArgs
_080AC944: .4byte DestroyAnimSprite
-_080AC948: .4byte sub_8074AE0
+_080AC948: .4byte TranslateSpriteInGrowingCircleOverDuration
thumb_func_end sub_80AC90C
thumb_func_start sub_80AC94C
@@ -45,7 +45,7 @@ sub_80AC94C: @ 80AC94C
movs r0, 0
ldrsh r1, [r5, r0]
adds r0, r4, 0
- bl sub_8074FF8
+ bl SetAnimSpriteInitialXOffset
ldrh r0, [r5, 0x2]
ldrh r1, [r4, 0x22]
adds r0, r1
@@ -56,7 +56,7 @@ sub_80AC94C: @ 80AC94C
strh r0, [r4, 0x30]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x32]
- ldr r0, _080AC988 @ =sub_8074D00
+ ldr r0, _080AC988 @ =TranslateSpriteLinearFixedPoint
str r0, [r4, 0x1C]
ldr r1, _080AC98C @ =DestroyAnimSprite
adds r0, r4, 0
@@ -66,7 +66,7 @@ sub_80AC94C: @ 80AC94C
bx r0
.align 2, 0
_080AC984: .4byte gBattleAnimArgs
-_080AC988: .4byte sub_8074D00
+_080AC988: .4byte TranslateSpriteLinearFixedPoint
_080AC98C: .4byte DestroyAnimSprite
thumb_func_end sub_80AC94C
@@ -74,7 +74,7 @@ _080AC98C: .4byte DestroyAnimSprite
sub_80AC990: @ 80AC990
push {r4,lr}
adds r4, r0, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r0, _080AC9C4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -212,7 +212,7 @@ _080ACA92:
cmp r1, r0
bne _080ACAA4
adds r0, r2, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080ACAA4:
pop {r0}
bx r0
@@ -222,7 +222,7 @@ _080ACAA4:
sub_80ACAA8: @ 80ACAA8
push {r4,lr}
adds r4, r0, 0
- bl sub_8074FCC
+ bl SetSpriteCoordsToAnimAttackerCoords
ldr r0, _080ACACC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -348,7 +348,7 @@ _080ACB9C:
b _080ACBAA
_080ACBA4:
adds r0, r4, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080ACBAA:
pop {r4}
pop {r0}
@@ -449,7 +449,7 @@ sub_80ACC60: @ 80ACC60
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080ACC80 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
movs r1, 0
@@ -497,7 +497,7 @@ sub_80ACC88: @ 80ACC88
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldr r0, _080ACCDC @ =sub_80ACCE0
str r0, [r5, 0x1C]
_080ACCD2:
@@ -513,7 +513,7 @@ _080ACCDC: .4byte sub_80ACCE0
sub_80ACCE0: @ 80ACCE0
push {r4-r6,lr}
adds r6, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080ACD28
@@ -634,7 +634,7 @@ sub_80ACDA8: @ 80ACDA8
ldr r1, _080ACDE0 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080ACDE4 @ =sub_8074CD0
+ ldr r0, _080ACDE4 @ =TranslateSpriteLinear
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
@@ -642,7 +642,7 @@ sub_80ACDA8: @ 80ACDA8
.align 2, 0
_080ACDDC: .4byte gBattleAnimArgs
_080ACDE0: .4byte DestroyAnimSprite
-_080ACDE4: .4byte sub_8074CD0
+_080ACDE4: .4byte TranslateSpriteLinear
thumb_func_end sub_80ACDA8
thumb_func_start sub_80ACDE8
@@ -650,7 +650,7 @@ sub_80ACDE8: @ 80ACDE8
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r1, _080ACE1C @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x30]
@@ -662,7 +662,7 @@ sub_80ACDE8: @ 80ACDE8
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
- ldr r0, _080ACE20 @ =sub_8074C44
+ ldr r0, _080ACE20 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080ACE24 @ =sub_80ACE28
adds r0, r4, 0
@@ -672,7 +672,7 @@ sub_80ACDE8: @ 80ACDE8
bx r0
.align 2, 0
_080ACE1C: .4byte gBattleAnimArgs
-_080ACE20: .4byte sub_8074C44
+_080ACE20: .4byte WaitAnimForDuration
_080ACE24: .4byte sub_80ACE28
thumb_func_end sub_80ACDE8
@@ -753,7 +753,7 @@ sub_80ACEA4: @ 80ACEA4
ldr r0, _080ACF04 @ =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
@@ -923,7 +923,7 @@ _080AD00C:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
- bl sub_8076440
+ bl SetBattlerSpriteYOffsetFromYScale
ldr r2, _080AD030 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
@@ -1635,7 +1635,7 @@ _080AD556:
_080AD55C:
adds r0, r5, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r4, _080AD584 @ =gBattleAnimArgs
ldrb r1, [r4, 0x4]
adds r0, r5, 0
@@ -1659,7 +1659,7 @@ _080AD58E:
strh r0, [r5, 0x36]
ldr r0, _080AD5B0 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -1787,7 +1787,7 @@ _080AD68C: .4byte sub_80AD690
sub_80AD690: @ 80AD690
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _080AD6E8
@@ -1889,7 +1889,7 @@ _080AD70C:
bls _080AD780
ldr r0, _080AD77C @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -1906,7 +1906,7 @@ _080AD77C: .4byte gBattleAnimTarget
_080AD780:
ldr r0, _080AD7A4 @ =gBattleAnimTarget
ldrb r0, [r0]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
@@ -2005,12 +2005,12 @@ _080AD826:
adds r0, 0x1
strh r0, [r4, 0x22]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
movs r0, 0x3
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
diff --git a/asm/flying.s b/asm/flying.s
deleted file mode 100644
index a776b54cb..000000000
--- a/asm/flying.s
+++ /dev/null
@@ -1,2945 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B18A0
-sub_80B18A0: @ 80B18A0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0xB
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x30
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B18DC
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B18DC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B18A0
-
- thumb_func_start sub_80B18E4
-sub_80B18E4: @ 80B18E4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_8075114
- ldrh r0, [r4, 0x22]
- adds r0, 0x14
- strh r0, [r4, 0x22]
- movs r0, 0xBF
- strh r0, [r4, 0x30]
- ldr r1, _080B1908 @ =sub_80B190C
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1908: .4byte sub_80B190C
- thumb_func_end sub_80B18E4
-
- thumb_func_start sub_80B190C
-sub_80B190C: @ 80B190C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x47
- bne _080B1946
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B1946:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B190C
-
- thumb_func_start sub_80B194C
-sub_80B194C: @ 80B194C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B197C @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r1, _080B1980 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x8]
- ldrh r0, [r1]
- strh r0, [r4, 0xA]
- ldr r0, _080B1984 @ =0x00002719
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xC]
- ldr r0, _080B1988 @ =sub_80B198C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B197C: .4byte gTasks
-_080B1980: .4byte gBattleAnimArgs
-_080B1984: .4byte 0x00002719
-_080B1988: .4byte sub_80B198C
- thumb_func_end sub_80B194C
-
- thumb_func_start sub_80B198C
-sub_80B198C: @ 80B198C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, _080B1A0C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r3, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r4, 0xA
- ldrsh r1, [r3, r4]
- adds r7, r2, 0
- cmp r0, r1
- bne _080B19EA
- movs r0, 0
- strh r0, [r3, 0x1C]
- ldrb r0, [r3, 0xC]
- ldr r2, _080B1A10 @ =gPlttBufferFaded
- lsls r0, 4
- movs r3, 0x84
- lsls r3, 1
- adds r1, r0, r3
- lsls r1, 1
- adds r1, r2
- ldrh r6, [r1]
- movs r4, 0x7
- mov r12, r0
- ldr r0, _080B1A14 @ =0x00000107
- add r0, r12
- lsls r0, 1
- adds r3, r0, r2
-_080B19D2:
- ldrh r0, [r3]
- strh r0, [r1]
- subs r3, 0x2
- subs r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bgt _080B19D2
- ldr r0, _080B1A18 @ =0x00000101
- add r0, r12
- lsls r0, 1
- adds r0, r2
- strh r6, [r0]
-_080B19EA:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r7
- ldrh r1, [r0, 0x8]
- subs r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- cmp r1, 0
- bne _080B1A04
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B1A04:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1A0C: .4byte gTasks
-_080B1A10: .4byte gPlttBufferFaded
-_080B1A14: .4byte 0x00000107
-_080B1A18: .4byte 0x00000101
- thumb_func_end sub_80B198C
-
- thumb_func_start sub_80B1A1C
-sub_80B1A1C: @ 80B1A1C
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080B1A88 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B1A3C
- ldr r1, _080B1A8C @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080B1A3C:
- ldr r4, _080B1A8C @ =gBattleAnimArgs
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldrh r0, [r6, 0x20]
- strh r0, [r6, 0x30]
- ldr r5, _080B1A90 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrh r0, [r6, 0x22]
- strh r0, [r6, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r6, 0x36]
- adds r0, r6, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r0, _080B1A94 @ =sub_8074F50
- str r0, [r6, 0x1C]
- ldr r1, _080B1A98 @ =sub_80B1A9C
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1A88: .4byte gBattleAnimAttacker
-_080B1A8C: .4byte gBattleAnimArgs
-_080B1A90: .4byte gBattleAnimTarget
-_080B1A94: .4byte sub_8074F50
-_080B1A98: .4byte sub_80B1A9C
- thumb_func_end sub_80B1A1C
-
- thumb_func_start sub_80B1A9C
-sub_80B1A9C: @ 80B1A9C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080B1AB0
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B1AB0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B1A9C
-
- thumb_func_start sub_80B1AB8
-sub_80B1AB8: @ 80B1AB8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B1B54 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B1AE4
- ldr r1, _080B1B58 @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
-_080B1AE4:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B1AFC
- ldr r0, _080B1B58 @ =gBattleAnimArgs
- ldrh r1, [r0, 0x2]
- negs r1, r1
- strh r1, [r0, 0x2]
- ldrh r1, [r0, 0x6]
- negs r1, r1
- strh r1, [r0, 0x6]
-_080B1AFC:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r2, _080B1B58 @ =gBattleAnimArgs
- ldrh r1, [r2]
- ldrh r3, [r5, 0x20]
- adds r1, r3
- strh r1, [r5, 0x20]
- lsrs r0, 24
- ldrh r1, [r2, 0x2]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrh r0, [r2, 0x8]
- strh r0, [r5, 0x2E]
- movs r3, 0xC
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _080B1B60
- ldr r4, _080B1B5C @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- b _080B1B72
- .align 2, 0
-_080B1B54: .4byte gBattleAnimAttacker
-_080B1B58: .4byte gBattleAnimArgs
-_080B1B5C: .4byte gBattleAnimTarget
-_080B1B60:
- ldr r0, _080B1BA0 @ =gBattleAnimTarget
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl sub_8076D9C
-_080B1B72:
- ldr r4, _080B1BA4 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x4]
- ldrh r1, [r5, 0x32]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x6]
- ldrh r3, [r5, 0x36]
- adds r0, r3
- strh r0, [r5, 0x36]
- ldr r0, _080B1BA8 @ =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, _080B1BAC @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldrb r1, [r4, 0xA]
- adds r0, r5, 0
- bl SeekSpriteAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1BA0: .4byte gBattleAnimTarget
-_080B1BA4: .4byte gBattleAnimArgs
-_080B1BA8: .4byte StartAnimLinearTranslation
-_080B1BAC: .4byte DestroyAnimSprite
- thumb_func_end sub_80B1AB8
-
- thumb_func_start sub_80B1BB0
-sub_80B1BB0: @ 80B1BB0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r1, _080B1BEC @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldr r0, _080B1BF0 @ =sub_80B1BF8
- str r0, [r4, 0x1C]
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B1BF4 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1BEC: .4byte gBattleAnimArgs
-_080B1BF0: .4byte sub_80B1BF8
-_080B1BF4: .4byte gSprites
- thumb_func_end sub_80B1BB0
-
- thumb_func_start sub_80B1BF8
-sub_80B1BF8: @ 80B1BF8
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _080B1C0C
- subs r0, r1, 0x1
- strh r0, [r2, 0x2E]
- b _080B1C1E
-_080B1C0C:
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r2, 0x26]
- subs r1, r0
- strh r1, [r2, 0x26]
-_080B1C1E:
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _080B1C36
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B1C36:
- pop {r0}
- bx r0
- thumb_func_end sub_80B1BF8
-
- thumb_func_start sub_80B1C3C
-sub_80B1C3C: @ 80B1C3C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B1C64 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B1C6C
- movs r0, 0x88
- lsls r0, 1
- strh r0, [r5, 0x20]
- ldr r0, _080B1C68 @ =0x0000ffe0
- strh r0, [r5, 0x22]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _080B1C72
- .align 2, 0
-_080B1C64: .4byte gBattleAnimAttacker
-_080B1C68: .4byte 0x0000ffe0
-_080B1C6C:
- ldr r0, _080B1CB0 @ =0x0000ffe0
- strh r0, [r5, 0x20]
- strh r0, [r5, 0x22]
-_080B1C72:
- ldr r0, _080B1CB4 @ =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, _080B1CB8 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r0, _080B1CBC @ =sub_80B1CC0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1CB0: .4byte 0x0000ffe0
-_080B1CB4: .4byte gBattleAnimArgs
-_080B1CB8: .4byte gBattleAnimTarget
-_080B1CBC: .4byte sub_80B1CC0
- thumb_func_end sub_80B1C3C
-
- thumb_func_start sub_80B1CC0
-sub_80B1CC0: @ 80B1CC0
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl sub_80755E0
- ldrh r1, [r4, 0x34]
- lsrs r0, r1, 8
- cmp r0, 0xC8
- bls _080B1CE8
- ldrh r0, [r4, 0x24]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- movs r0, 0
- strh r0, [r4, 0x24]
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
-_080B1CE8:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- adds r0, 0x20
- movs r1, 0x98
- lsls r1, 1
- cmp r0, r1
- bhi _080B1D0A
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- cmp r0, 0xA0
- ble _080B1D30
-_080B1D0A:
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B1D38 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B1D30:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1D38: .4byte gSprites
- thumb_func_end sub_80B1CC0
-
- thumb_func_start sub_80B1D3C
-sub_80B1D3C: @ 80B1D3C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _080B1D7C
- ldrb r0, [r4, 0x1]
- lsls r0, 30
- lsrs r0, 30
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B1D6E
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x1]
-_080B1D6E:
- adds r0, r4, 0
- bl DestroySprite
- ldr r1, _080B1D84 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080B1D7C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1D84: .4byte gUnknown_2037EE2
- thumb_func_end sub_80B1D3C
-
- thumb_func_start sub_80B1D88
-sub_80B1D88: @ 80B1D88
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r5, r7, 0
- adds r5, 0x2E
- ldr r0, _080B1DA8 @ =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080B1DB0
- ldr r0, _080B1DAC @ =gBattleAnimAttacker
- b _080B1DB2
- .align 2, 0
-_080B1DA8: .4byte gBattleAnimArgs
-_080B1DAC: .4byte gBattleAnimAttacker
-_080B1DB0:
- ldr r0, _080B1E5C @ =gBattleAnimTarget
-_080B1DB2:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B1DC8
- ldr r1, _080B1E60 @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080B1DC8:
- adds r0, r6, 0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, _080B1E60 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r7, 0x20]
- adds r0, r6, 0
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldrh r1, [r4, 0x2]
- lsrs r0, 24
- adds r1, r0, r1
- strh r1, [r7, 0x22]
- lsls r1, 8
- strh r1, [r5, 0x8]
- ldrh r1, [r4, 0xC]
- adds r0, r1
- lsls r0, 1
- ldrh r2, [r5, 0xE]
- movs r1, 0x1
- ands r1, r2
- orrs r1, r0
- strh r1, [r5, 0xE]
- ldrb r0, [r5]
- movs r2, 0x4
- mov r8, r2
- mov r1, r8
- orrs r0, r1
- strb r0, [r5]
- ldrh r0, [r4, 0x4]
- ldrb r1, [r4, 0x4]
- strh r1, [r5, 0x2]
- lsls r0, 16
- lsrs r0, 24
- strh r0, [r5, 0xA]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x4]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x6]
- ldrh r0, [r4, 0xA]
- strh r0, [r5, 0xC]
- subs r1, 0x40
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x7F
- bhi _080B1EBE
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B1E64
- adds r0, r6, 0
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r7, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x5]
- b _080B1E7C
- .align 2, 0
-_080B1E5C: .4byte gBattleAnimTarget
-_080B1E60: .4byte gBattleAnimArgs
-_080B1E64:
- adds r0, r6, 0
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x5]
-_080B1E7C:
- ldrb r1, [r5, 0xE]
- movs r4, 0x2
- negs r4, r4
- adds r0, r4, 0
- ands r0, r1
- strb r0, [r5, 0xE]
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- bne _080B1F1E
- adds r3, r7, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r0, r2, 31
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r7, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- b _080B1F16
-_080B1EBE:
- adds r0, r6, 0
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x5]
- ldrb r0, [r5, 0xE]
- movs r4, 0x1
- orrs r0, r4
- strb r0, [r5, 0xE]
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080B1F1E
- adds r3, r7, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r0, 0x1
- eors r1, r0
- ands r1, r4
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r7, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- mov r2, r8
- orrs r0, r2
-_080B1F16:
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
-_080B1F1E:
- ldrh r1, [r5, 0x2]
- lsrs r1, 6
- lsls r1, 4
- ldrb r2, [r5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r5]
- ldr r3, _080B1F88 @ =gSineTable
- ldrh r0, [r5, 0x2]
- lsls r0, 1
- adds r0, r3
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldrb r0, [r5, 0xC]
- muls r0, r1
- asrs r0, 8
- strh r0, [r7, 0x24]
- ldrb r2, [r7, 0x3]
- lsls r2, 26
- lsrs r2, 27
- movs r1, 0x24
- ldrsh r0, [r7, r1]
- negs r0, r0
- asrs r0, 1
- ldrb r5, [r5, 0xA]
- adds r0, r5
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r3
- ldrh r4, [r1]
- ldr r1, _080B1F8C @ =gOamMatrices
- lsls r2, 3
- adds r2, r1
- adds r0, 0x40
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r2, 0x6]
- strh r0, [r2]
- strh r4, [r2, 0x2]
- lsls r0, r4, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- ldr r0, _080B1F90 @ =sub_80B1F94
- str r0, [r7, 0x1C]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1F88: .4byte gSineTable
-_080B1F8C: .4byte gOamMatrices
-_080B1F90: .4byte sub_80B1F94
- thumb_func_end sub_80B1D88
-
- thumb_func_start sub_80B1F94
-sub_80B1F94: @ 80B1F94
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- movs r6, 0
- adds r4, r5, 0
- adds r4, 0x2E
- ldrb r2, [r4]
- movs r7, 0x1
- movs r0, 0x1
- mov r9, r0
- ands r0, r2
- cmp r0, 0
- beq _080B1FCE
- ldrb r0, [r4, 0x1]
- adds r1, r0, 0
- adds r1, 0xFF
- strb r1, [r4, 0x1]
- lsls r0, 24
- cmp r0, 0
- beq _080B1FC2
- b _080B24AA
-_080B1FC2:
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r4]
- strb r6, [r4, 0x1]
- b _080B24AA
-_080B1FCE:
- ldrh r0, [r4, 0x2]
- lsrs r1, r0, 6
- mov r12, r0
- cmp r1, 0x1
- bne _080B1FDA
- b _080B20FE
-_080B1FDA:
- cmp r1, 0x1
- bgt _080B1FE4
- cmp r1, 0
- beq _080B1FF2
- b _080B23F0
-_080B1FE4:
- cmp r1, 0x2
- bne _080B1FEA
- b _080B21F2
-_080B1FEA:
- cmp r1, 0x3
- bne _080B1FF0
- b _080B22E6
-_080B1FF0:
- b _080B23F0
-_080B1FF2:
- lsls r1, r2, 24
- lsrs r0, r1, 28
- cmp r0, 0x1
- bne _080B2006
- movs r0, 0x8
- orrs r0, r2
- orrs r0, r7
- strb r0, [r4]
- strb r6, [r4, 0x1]
- b _080B20F4
-_080B2006:
- lsrs r0, r1, 28
- cmp r0, 0x3
- bne _080B2028
- lsls r0, r2, 30
- lsrs r0, 31
- movs r1, 0x1
- eors r0, r1
- ands r0, r7
- lsls r0, 1
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- orrs r1, r7
- strb r1, [r4]
- strb r6, [r4, 0x1]
- b _080B20F4
-_080B2028:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _080B20F4
- adds r3, r5, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r6, 0x1
- eors r1, r6
- ands r1, r7
- movs r0, 0x2
- negs r0, r0
- mov r8, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r5, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- ldrb r1, [r4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B20E6
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B20B6
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B209C
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B20D4
-_080B209C:
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B20D4
-_080B20B6:
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B20CA
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0xC
- b _080B20D2
-_080B20CA:
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0xC
-_080B20D2:
- strb r0, [r1]
-_080B20D4:
- ldrb r2, [r4, 0xE]
- lsls r0, r2, 31
- lsrs r0, 31
- eors r0, r6
- ands r0, r7
- mov r1, r8
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xE]
-_080B20E6:
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrh r1, [r4, 0x2]
- mov r12, r1
-_080B20F4:
- ldrb r1, [r4]
- movs r0, 0xF
- ands r0, r1
- strb r0, [r4]
- b _080B23F0
-_080B20FE:
- lsls r1, r2, 24
- lsrs r0, r1, 28
- cmp r0, 0
- bne _080B210C
- movs r0, 0x8
- orrs r0, r2
- b _080B2114
-_080B210C:
- lsrs r0, r1, 28
- cmp r0, 0x2
- bne _080B211C
- adds r0, r2, 0
-_080B2114:
- orrs r0, r7
- strb r0, [r4]
- strb r6, [r4, 0x1]
- b _080B21E8
-_080B211C:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _080B21E8
- adds r3, r5, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r6, 0x1
- eors r1, r6
- ands r1, r7
- movs r0, 0x2
- negs r0, r0
- mov r8, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r5, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- ldrb r1, [r4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B21DA
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B21AA
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B2190
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B21C8
-_080B2190:
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B21C8
-_080B21AA:
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B21BE
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0xC
- b _080B21C6
-_080B21BE:
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0xC
-_080B21C6:
- strb r0, [r1]
-_080B21C8:
- ldrb r2, [r4, 0xE]
- lsls r0, r2, 31
- lsrs r0, 31
- eors r0, r6
- ands r0, r7
- mov r1, r8
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xE]
-_080B21DA:
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrh r1, [r4, 0x2]
- mov r12, r1
-_080B21E8:
- ldrb r0, [r4]
- movs r1, 0xF
- ands r1, r0
- movs r0, 0x10
- b _080B23EC
-_080B21F2:
- lsls r1, r2, 24
- lsrs r0, r1, 28
- cmp r0, 0x3
- bne _080B2200
- movs r0, 0x8
- orrs r0, r2
- b _080B2208
-_080B2200:
- lsrs r0, r1, 28
- cmp r0, 0x1
- bne _080B2210
- adds r0, r2, 0
-_080B2208:
- orrs r0, r7
- strb r0, [r4]
- strb r6, [r4, 0x1]
- b _080B22DC
-_080B2210:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _080B22DC
- adds r3, r5, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r6, 0x1
- eors r1, r6
- ands r1, r7
- movs r0, 0x2
- negs r0, r0
- mov r8, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r5, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- ldrb r1, [r4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B22CE
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B229E
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B2284
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B22BC
-_080B2284:
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B22BC
-_080B229E:
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B22B2
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0xC
- b _080B22BA
-_080B22B2:
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0xC
-_080B22BA:
- strb r0, [r1]
-_080B22BC:
- ldrb r2, [r4, 0xE]
- lsls r0, r2, 31
- lsrs r0, 31
- eors r0, r6
- ands r0, r7
- mov r1, r8
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xE]
-_080B22CE:
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrh r1, [r4, 0x2]
- mov r12, r1
-_080B22DC:
- ldrb r0, [r4]
- movs r1, 0xF
- ands r1, r0
- movs r0, 0x20
- b _080B23EC
-_080B22E6:
- lsls r1, r2, 24
- lsrs r0, r1, 28
- cmp r0, 0x2
- bne _080B22F6
- movs r0, 0x8
- orrs r0, r2
- strb r0, [r4]
- b _080B23E4
-_080B22F6:
- lsrs r0, r1, 28
- cmp r0, 0
- bne _080B2318
- lsls r0, r2, 30
- lsrs r0, 31
- movs r1, 0x1
- eors r0, r1
- ands r0, r7
- lsls r0, 1
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- orrs r1, r7
- strb r1, [r4]
- strb r6, [r4, 0x1]
- b _080B23E4
-_080B2318:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _080B23E4
- adds r3, r5, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r6, 0x1
- eors r1, r6
- ands r1, r7
- movs r0, 0x2
- negs r0, r0
- mov r8, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r5, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- ldrb r1, [r4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B23D6
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B23A6
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B238C
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B23C4
-_080B238C:
- ldrb r2, [r5, 0x5]
- lsls r1, r2, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- b _080B23C4
-_080B23A6:
- ldrb r1, [r4, 0xE]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080B23BA
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0xC
- b _080B23C2
-_080B23BA:
- adds r1, r5, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0xC
-_080B23C2:
- strb r0, [r1]
-_080B23C4:
- ldrb r2, [r4, 0xE]
- lsls r0, r2, 31
- lsrs r0, 31
- eors r0, r6
- ands r0, r7
- mov r1, r8
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xE]
-_080B23D6:
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
- ldrh r1, [r4, 0x2]
- mov r12, r1
-_080B23E4:
- ldrb r0, [r4]
- movs r1, 0xF
- ands r1, r0
- movs r0, 0x30
-_080B23EC:
- orrs r1, r0
- strb r1, [r4]
-_080B23F0:
- ldrb r1, [r4]
- lsls r1, 30
- lsrs r1, 31
- adds r0, r4, 0
- adds r0, 0xC
- adds r0, r1
- ldrb r1, [r0]
- ldr r3, _080B2478 @ =gSineTable
- mov r2, r12
- lsls r0, r2, 1
- adds r0, r3
- movs r2, 0
- ldrsh r0, [r0, r2]
- muls r0, r1
- asrs r0, 8
- strh r0, [r5, 0x24]
- ldrb r2, [r5, 0x3]
- lsls r2, 26
- lsrs r2, 27
- movs r1, 0x24
- ldrsh r0, [r5, r1]
- negs r0, r0
- asrs r0, 1
- ldrb r1, [r4, 0xA]
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r3
- ldrh r6, [r1]
- ldr r1, _080B247C @ =gOamMatrices
- lsls r2, 3
- adds r2, r1
- adds r0, 0x40
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r2, 0x6]
- strh r0, [r2]
- strh r6, [r2, 0x2]
- lsls r0, r6, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- ldrh r0, [r4, 0x6]
- ldrh r2, [r4, 0x8]
- adds r0, r2
- strh r0, [r4, 0x8]
- lsls r0, 16
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080B2480
- ldrh r0, [r4, 0x4]
- subs r1, 0x1
- ands r1, r0
- ldrh r0, [r4, 0x2]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2]
- b _080B2490
- .align 2, 0
-_080B2478: .4byte gSineTable
-_080B247C: .4byte gOamMatrices
-_080B2480:
- ldrh r0, [r4, 0x4]
- ldr r1, _080B24B8 @ =0x00007fff
- ands r1, r0
- ldrh r2, [r4, 0x2]
- adds r1, r2
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r4, 0x2]
-_080B2490:
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- adds r1, r0
- ldrh r0, [r4, 0xE]
- lsrs r0, 1
- cmp r1, r0
- blt _080B24AA
- movs r0, 0
- strh r0, [r5, 0x2E]
- ldr r0, _080B24BC @ =sub_80B1D3C
- str r0, [r5, 0x1C]
-_080B24AA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B24B8: .4byte 0x00007fff
-_080B24BC: .4byte sub_80B1D3C
- thumb_func_end sub_80B1F94
-
- thumb_func_start sub_80B24C0
-sub_80B24C0: @ 80B24C0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, _080B2508 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldr r5, _080B250C @ =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r0, _080B2510 @ =sub_8075DF4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2508: .4byte gBattleAnimTarget
-_080B250C: .4byte gBattleAnimAttacker
-_080B2510: .4byte sub_8075DF4
- thumb_func_end sub_80B24C0
-
- thumb_func_start sub_80B2514
-sub_80B2514: @ 80B2514
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r5, _080B2554 @ =gBattleAnimArgs
- ldrh r0, [r5]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x34]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B25C4
- ldr r0, _080B2558 @ =gBattlerPositions
- ldr r1, _080B255C @ =gBattleAnimTarget
- ldrb r2, [r1]
- adds r0, r2, r0
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B2560
- adds r0, r2, 0
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- b _080B256E
- .align 2, 0
-_080B2554: .4byte gBattleAnimArgs
-_080B2558: .4byte gBattlerPositions
-_080B255C: .4byte gBattleAnimTarget
-_080B2560:
- adds r0, r2, 0
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x28
-_080B256E:
- strh r0, [r4, 0x3C]
- ldr r0, _080B259C @ =gBattleAnimArgs
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080B25A4
- ldr r0, _080B25A0 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
- b _080B25D8
- .align 2, 0
-_080B259C: .4byte gBattleAnimArgs
-_080B25A0: .4byte gBattleAnimTarget
-_080B25A4:
- ldr r0, _080B25C0 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_8076884
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- b _080B25D8
- .align 2, 0
-_080B25C0: .4byte gBattleAnimTarget
-_080B25C4:
- ldr r0, _080B267C @ =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- strh r0, [r4, 0x3C]
-_080B25D8:
- ldr r5, _080B2680 @ =gSineTable
- ldrh r3, [r4, 0x30]
- movs r1, 0xFF
- ands r1, r3
- lsls r0, r1, 1
- adds r0, r5
- ldrh r0, [r0]
- movs r2, 0
- strh r0, [r4, 0x36]
- adds r1, 0x40
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r4, 0x38]
- strh r2, [r4, 0x3A]
- strh r2, [r4, 0x26]
- strh r2, [r4, 0x24]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r6, r0, 27
- lsls r3, 16
- lsrs r3, 24
- strh r3, [r4, 0x30]
- bl Random
- lsls r0, 16
- asrs r7, r0, 16
- movs r0, 0x80
- lsls r0, 8
- ands r0, r7
- cmp r0, 0
- beq _080B2622
- ldrh r1, [r4, 0x30]
- movs r0, 0xFF
- subs r0, r1
- strh r0, [r4, 0x30]
-_080B2622:
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 1
- adds r0, r5
- ldrh r0, [r0]
- ldr r3, _080B2684 @ =gOamMatrices
- lsls r2, r6, 3
- adds r2, r3
- adds r1, 0x40
- lsls r1, 1
- adds r1, r5
- ldrh r1, [r1]
- strh r1, [r2, 0x6]
- strh r1, [r2]
- strh r0, [r2, 0x2]
- lsls r0, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- adds r3, r4, 0
- adds r3, 0x3F
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- movs r0, 0x1
- ands r0, r7
- cmp r0, 0
- beq _080B2672
- adds r2, r4, 0
- adds r2, 0x2A
- movs r1, 0x1
- movs r0, 0x1
- strb r0, [r2]
- ldrb r0, [r3]
- orrs r0, r1
- strb r0, [r3]
-_080B2672:
- ldr r0, _080B2688 @ =sub_80B268C
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B267C: .4byte gBattleAnimTarget
-_080B2680: .4byte gSineTable
-_080B2684: .4byte gOamMatrices
-_080B2688: .4byte sub_80B268C
- thumb_func_end sub_80B2514
-
- thumb_func_start sub_80B268C
-sub_80B268C: @ 80B268C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r4, r0, 0
- adds r5, r4, 0
- adds r5, 0x2E
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- movs r1, 0
- mov r8, r1
- movs r7, 0
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080B2770
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- muls r0, r1
- asrs r6, r0, 8
- strh r6, [r4, 0x24]
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- muls r0, r1
- asrs r3, r0, 8
- strh r3, [r4, 0x26]
- ldrh r2, [r4, 0x34]
- movs r1, 0xFF
- adds r0, r1, 0
- ands r0, r2
- ldrh r2, [r4, 0x3A]
- adds r0, r2
- strh r0, [r4, 0x3A]
- ldrh r2, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- ands r1, r2
- cmp r0, r1
- blt _080B2770
- ldrh r0, [r4, 0x20]
- adds r0, r6
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x22]
- adds r0, r3
- strh r0, [r4, 0x22]
- strh r7, [r4, 0x24]
- strh r7, [r4, 0x26]
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0x10
- bl memcpy
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x10
- bl memset
- ldrh r0, [r4, 0x22]
- lsls r0, 8
- strh r0, [r5, 0x8]
- mov r0, sp
- ldrh r0, [r0, 0x6]
- lsrs r1, r0, 8
- strh r1, [r5, 0x6]
- strh r7, [r5, 0x2]
- mov r0, sp
- ldrh r0, [r0, 0x2]
- strh r0, [r5, 0xA]
- adds r0, r4, 0
- adds r0, 0x2A
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B2740
- movs r0, 0x8
- ands r1, r0
- cmp r1, 0
- beq _080B2738
- ldr r0, _080B2734 @ =0x00008001
- b _080B274E
- .align 2, 0
-_080B2734: .4byte 0x00008001
-_080B2738:
- ldr r0, _080B273C @ =0x00008002
- b _080B274E
- .align 2, 0
-_080B273C: .4byte 0x00008002
-_080B2740:
- movs r0, 0x8
- ands r1, r0
- cmp r1, 0
- beq _080B274C
- movs r0, 0x1
- b _080B274E
-_080B274C:
- movs r0, 0x2
-_080B274E:
- strh r0, [r5, 0x4]
- mov r0, sp
- ldrh r0, [r0, 0x4]
- lsrs r0, 8
- strb r0, [r5, 0xC]
- subs r0, 0x2
- strb r0, [r5, 0xD]
- mov r0, sp
- ldrh r1, [r0, 0xE]
- lsls r1, 1
- ldrh r2, [r5, 0xE]
- movs r0, 0x1
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0xE]
- ldr r0, _080B277C @ =sub_80B1F94
- str r0, [r4, 0x1C]
-_080B2770:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B277C: .4byte sub_80B1F94
- thumb_func_end sub_80B268C
-
- thumb_func_start sub_80B2780
-sub_80B2780: @ 80B2780
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080B2798 @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B279C
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075160
- b _080B27A4
- .align 2, 0
-_080B2798: .4byte gBattleAnimArgs
-_080B279C:
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075114
-_080B27A4:
- ldr r4, _080B280C @ =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B27BC
- ldr r0, _080B2810 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B27D2
-_080B27BC:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080B27D8
- ldr r0, _080B2814 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B27D8
-_080B27D2:
- ldrh r0, [r5, 0x20]
- adds r0, 0x8
- strh r0, [r5, 0x20]
-_080B27D8:
- ldr r4, _080B280C @ =gBattleAnimArgs
- ldrb r1, [r4, 0x8]
- adds r0, r5, 0
- bl SeekSpriteAnim
- ldrh r0, [r5, 0x20]
- subs r0, 0x20
- strh r0, [r5, 0x20]
- ldr r0, _080B2818 @ =0x00000ccc
- strh r0, [r5, 0x30]
- ldrh r1, [r4, 0x8]
- movs r0, 0xC
- adds r2, r0, 0
- muls r2, r1
- adds r0, r2, 0
- ldrh r2, [r5, 0x24]
- adds r0, r2
- strh r0, [r5, 0x24]
- strh r1, [r5, 0x2E]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x3C]
- ldr r0, _080B281C @ =sub_80B2820
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B280C: .4byte gBattleAnimArgs
-_080B2810: .4byte gBattleAnimAttacker
-_080B2814: .4byte gBattleAnimTarget
-_080B2818: .4byte 0x00000ccc
-_080B281C: .4byte sub_80B2820
- thumb_func_end sub_80B2780
-
- thumb_func_start sub_80B2820
-sub_80B2820: @ 80B2820
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x24]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _080B284A
- strh r1, [r4, 0x2E]
- strh r1, [r4, 0x24]
- adds r0, r4, 0
- bl StartSpriteAnim
-_080B284A:
- ldrh r0, [r4, 0x3C]
- subs r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080B2862
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B2862:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B2820
-
- thumb_func_start sub_80B2868
-sub_80B2868: @ 80B2868
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- ldr r1, _080B2900 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r7, r0, r1
- ldrh r0, [r7, 0x8]
- movs r1, 0x1F
- ands r0, r1
- cmp r0, 0
- bne _080B28E2
- ldr r1, _080B2904 @ =gUnknown_2037EE2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- movs r5, 0xD
- negs r5, r5
- adds r1, r5, 0
- bl Sin
- ldr r4, _080B2908 @ =gBattleAnimArgs
- strh r0, [r4]
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- adds r1, r5, 0
- bl Cos
- strh r0, [r4, 0x2]
- movs r0, 0x1
- strh r0, [r4, 0x4]
- movs r0, 0x3
- strh r0, [r4, 0x6]
- ldr r0, _080B290C @ =gUnknown_83E7C98
- mov r8, r0
- ldr r5, _080B2910 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- mov r0, r8
- adds r1, r4, 0
- movs r3, 0x3
- bl CreateSpriteAndAnimate
-_080B28E2:
- ldrh r0, [r7, 0x8]
- adds r0, 0x8
- strh r0, [r7, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080B28F6
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080B28F6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2900: .4byte gTasks
-_080B2904: .4byte gUnknown_2037EE2
-_080B2908: .4byte gBattleAnimArgs
-_080B290C: .4byte gUnknown_83E7C98
-_080B2910: .4byte gBattleAnimTarget
- thumb_func_end sub_80B2868
-
- thumb_func_start sub_80B2914
-sub_80B2914: @ 80B2914
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B2926
- cmp r0, 0x1
- beq _080B2958
- b _080B296C
-_080B2926:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075160
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B2954 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080B296C
- .align 2, 0
-_080B2954: .4byte gSprites
-_080B2958:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B296C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B296C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B2914
-
- thumb_func_start sub_80B2974
-sub_80B2974: @ 80B2974
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B29AC
- cmp r0, 0x1
- bgt _080B298A
- cmp r0, 0
- beq _080B2990
- b _080B29FE
-_080B298A:
- cmp r0, 0x2
- beq _080B29C0
- b _080B29FE
-_080B2990:
- ldr r0, _080B29A8 @ =gBattleAnimTarget
- ldrb r0, [r0]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- negs r0, r0
- subs r0, 0x20
- strh r0, [r4, 0x26]
- b _080B29B8
- .align 2, 0
-_080B29A8: .4byte gBattleAnimTarget
-_080B29AC:
- ldrh r0, [r4, 0x26]
- adds r0, 0xA
- strh r0, [r4, 0x26]
- lsls r0, 16
- cmp r0, 0
- blt _080B29FE
-_080B29B8:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080B29FE
-_080B29C0:
- ldrh r0, [r4, 0x26]
- subs r0, 0xA
- strh r0, [r4, 0x26]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _080B29FE
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B2A04 @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B29FE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2A04: .4byte gSprites
- thumb_func_end sub_80B2974
-
- thumb_func_start sub_80B2A08
-sub_80B2A08: @ 80B2A08
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r1, _080B2A44 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldr r0, _080B2A48 @ =sub_80B2A50
- str r0, [r4, 0x1C]
- movs r0, 0
- bl GetAnimBankSpriteId
- ldr r2, _080B2A4C @ =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2A44: .4byte gBattleAnimArgs
-_080B2A48: .4byte sub_80B2A50
-_080B2A4C: .4byte gSprites
- thumb_func_end sub_80B2A08
-
- thumb_func_start sub_80B2A50
-sub_80B2A50: @ 80B2A50
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _080B2A64
- subs r0, r1, 0x1
- strh r0, [r2, 0x2E]
- b _080B2AA8
-_080B2A64:
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- ble _080B2A8A
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r2, 0x26]
- subs r1, r0
- strh r1, [r2, 0x26]
- b _080B2AA8
-_080B2A8A:
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r2, 0x34]
- adds r1, r0, 0x1
- strh r1, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080B2AA8
- ldr r0, _080B2AAC @ =sub_80B2AB0
- str r0, [r2, 0x1C]
-_080B2AA8:
- pop {r0}
- bx r0
- .align 2, 0
-_080B2AAC: .4byte sub_80B2AB0
- thumb_func_end sub_80B2A50
-
- thumb_func_start sub_80B2AB0
-sub_80B2AB0: @ 80B2AB0
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r2, 0x26]
- adds r0, r1
- strh r0, [r2, 0x26]
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- ble _080B2AE0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
-_080B2AE0:
- movs r1, 0x26
- ldrsh r0, [r2, r1]
- cmp r0, 0
- ble _080B2AEE
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B2AEE:
- pop {r0}
- bx r0
- thumb_func_end sub_80B2AB0
-
- thumb_func_start sub_80B2AF4
-sub_80B2AF4: @ 80B2AF4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _080B2B08
- cmp r0, 0x1
- beq _080B2B60
- b _080B2BCC
-_080B2B08:
- ldr r0, _080B2B18 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _080B2B20
- ldr r4, _080B2B1C @ =gBattleAnimAttacker
- b _080B2B22
- .align 2, 0
-_080B2B18: .4byte gBattleAnimArgs
-_080B2B1C: .4byte gBattleAnimAttacker
-_080B2B20:
- ldr r4, _080B2B5C @ =gBattleAnimTarget
-_080B2B22:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r0, 0
- movs r3, 0x80
- lsls r3, 2
- strh r3, [r5, 0x30]
- movs r2, 0x80
- lsls r2, 1
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0
- bl sub_8075A1C
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080B2BCC
- .align 2, 0
-_080B2B5C: .4byte gBattleAnimTarget
-_080B2B60:
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- cmp r0, 0xB
- bgt _080B2B6E
- ldrh r0, [r5, 0x30]
- subs r0, 0x28
- b _080B2B72
-_080B2B6E:
- ldrh r0, [r5, 0x30]
- adds r0, 0x28
-_080B2B72:
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r5, 0x32]
- movs r2, 0x80
- lsls r2, 1
- movs r0, 0x30
- ldrsh r3, [r5, r0]
- str r1, [sp]
- adds r0, r5, 0
- bl sub_8075A1C
- ldrb r1, [r5, 0x3]
- lsls r1, 26
- lsrs r1, 27
- movs r0, 0xF4
- lsls r0, 6
- ldr r2, _080B2BD4 @ =gOamMatrices
- lsls r1, 3
- adds r1, r2
- movs r2, 0x6
- ldrsh r1, [r1, r2]
- bl __divsi3
- adds r1, r0, 0x1
- cmp r1, 0x80
- ble _080B2BAC
- movs r1, 0x80
-_080B2BAC:
- movs r0, 0x40
- subs r0, r1
- lsrs r1, r0, 31
- adds r0, r1
- asrs r1, r0, 1
- strh r1, [r5, 0x26]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- cmp r0, 0x18
- bne _080B2BCC
- adds r0, r5, 0
- bl sub_8075AD8
- adds r0, r5, 0
- bl DestroyAnimSprite
-_080B2BCC:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2BD4: .4byte gOamMatrices
- thumb_func_end sub_80B2AF4
-
- thumb_func_start sub_80B2BD8
-sub_80B2BD8: @ 80B2BD8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl Random
- ldr r4, _080B2BFC @ =0x000001ff
- ands r4, r0
- bl Random
- movs r1, 0x7F
- ands r1, r0
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _080B2C00
- movs r2, 0xB8
- lsls r2, 2
- adds r0, r4, r2
- b _080B2C08
- .align 2, 0
-_080B2BFC: .4byte 0x000001ff
-_080B2C00:
- movs r2, 0xB8
- lsls r2, 2
- adds r0, r2, 0
- subs r0, r4
-_080B2C08:
- strh r0, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B2C1C
- movs r2, 0xE0
- lsls r2, 2
- adds r0, r2, 0
- adds r0, r1, r0
- b _080B2C24
-_080B2C1C:
- movs r2, 0xE0
- lsls r2, 2
- adds r0, r2, 0
- subs r0, r1
-_080B2C24:
- strh r0, [r5, 0x30]
- ldr r2, _080B2C4C @ =gBattleAnimArgs
- ldrh r0, [r2]
- strh r0, [r5, 0x32]
- lsls r0, 16
- cmp r0, 0
- beq _080B2C40
- ldrb r0, [r5, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r5, 0x3]
-_080B2C40:
- movs r1, 0x2
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _080B2C54
- ldr r4, _080B2C50 @ =gBattleAnimAttacker
- b _080B2C56
- .align 2, 0
-_080B2C4C: .4byte gBattleAnimArgs
-_080B2C50: .4byte gBattleAnimAttacker
-_080B2C54:
- ldr r4, _080B2C80 @ =gBattleAnimTarget
-_080B2C56:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r5, 0x22]
- ldr r0, _080B2C84 @ =sub_80B2C88
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2C80: .4byte gBattleAnimTarget
-_080B2C84: .4byte sub_80B2C88
- thumb_func_end sub_80B2BD8
-
- thumb_func_start sub_80B2C88
-sub_80B2C88: @ 80B2C88
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B2CA0
- ldrh r3, [r4, 0x2E]
- lsls r0, r3, 16
- asrs r0, 24
- ldrh r1, [r4, 0x24]
- adds r0, r1
- b _080B2CAA
-_080B2CA0:
- ldrh r3, [r4, 0x2E]
- lsls r1, r3, 16
- asrs r1, 24
- ldrh r0, [r4, 0x24]
- subs r0, r1
-_080B2CAA:
- strh r0, [r4, 0x24]
- ldrh r2, [r4, 0x30]
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r4, 0x26]
- subs r0, r1
- strh r0, [r4, 0x26]
- strh r3, [r4, 0x2E]
- adds r0, r2, 0
- subs r0, 0x20
- strh r0, [r4, 0x30]
- lsls r0, r3, 16
- cmp r0, 0
- bge _080B2CCA
- movs r0, 0
- strh r0, [r4, 0x2E]
-_080B2CCA:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080B2CDE
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B2CDE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B2C88
-
- thumb_func_start sub_80B2CE4
-sub_80B2CE4: @ 80B2CE4
- movs r1, 0
- strh r1, [r0, 0x3A]
- movs r1, 0x40
- strh r1, [r0, 0x3C]
- ldr r1, _080B2CF4 @ =sub_80B2CF8
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080B2CF4: .4byte sub_80B2CF8
- thumb_func_end sub_80B2CE4
-
- thumb_func_start sub_80B2CF8
-sub_80B2CF8: @ 80B2CF8
- push {lr}
- adds r3, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- cmp r1, 0
- beq _080B2D0A
- cmp r1, 0x1
- beq _080B2D58
- b _080B2D5E
-_080B2D0A:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _080B2D5E
- strh r1, [r3, 0x30]
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r2, [r1]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080B2D5E
- ldrb r1, [r1]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080B2D5E
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- b _080B2D5E
-_080B2D58:
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080B2D5E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B2CF8
-
- thumb_func_start sub_80B2D64
-sub_80B2D64: @ 80B2D64
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r8, r0
- ldrh r4, [r0, 0x20]
- ldrh r5, [r0, 0x22]
- ldr r6, _080B2E18 @ =gBattleAnimAttacker
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- strh r0, [r1, 0x20]
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- mov r2, r8
- strh r6, [r2, 0x22]
- ldrh r0, [r2, 0x20]
- mov r9, r0
- mov r1, r9
- lsls r0, r1, 4
- strh r0, [r2, 0x36]
- lsls r0, r6, 4
- strh r0, [r2, 0x38]
- lsls r4, 16
- asrs r4, 16
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- subs r0, r4, r0
- lsls r0, 4
- movs r1, 0xC
- bl __divsi3
- mov r2, r8
- strh r0, [r2, 0x3A]
- lsls r5, 16
- asrs r5, 16
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- subs r0, r5, r0
- lsls r0, 4
- movs r1, 0xC
- bl __divsi3
- mov r2, r8
- strh r0, [r2, 0x3C]
- mov r0, r9
- subs r4, r0
- lsls r4, 16
- asrs r4, 16
- subs r5, r6
- lsls r5, 16
- asrs r5, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8075B30
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- mov r0, r8
- movs r1, 0x1
- adds r2, r3, 0
- bl sub_8075A1C
- ldr r0, _080B2E1C @ =sub_80B2E20
- mov r2, r8
- str r0, [r2, 0x1C]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2E18: .4byte gBattleAnimAttacker
-_080B2E1C: .4byte sub_80B2E20
- thumb_func_end sub_80B2D64
-
- thumb_func_start sub_80B2E20
-sub_80B2E20: @ 80B2E20
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x3A]
- ldrh r1, [r2, 0x36]
- adds r0, r1
- strh r0, [r2, 0x36]
- ldrh r1, [r2, 0x3C]
- ldrh r3, [r2, 0x38]
- adds r1, r3
- strh r1, [r2, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r3, r1, 20
- strh r3, [r2, 0x22]
- adds r0, 0x2D
- lsls r0, 16
- movs r1, 0xA5
- lsls r1, 17
- cmp r0, r1
- bhi _080B2E5A
- adds r1, r3, 0
- cmp r1, 0x9D
- bgt _080B2E5A
- movs r0, 0x2D
- negs r0, r0
- cmp r1, r0
- bge _080B2E60
-_080B2E5A:
- adds r0, r2, 0
- bl move_anim_8074EE0
-_080B2E60:
- pop {r0}
- bx r0
- thumb_func_end sub_80B2E20
-
- thumb_func_start sub_80B2E64
-sub_80B2E64: @ 80B2E64
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080B2E94 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B2E9C
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B2E98 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- b _080B2EBA
- .align 2, 0
-_080B2E94: .4byte gBattleAnimArgs
-_080B2E98: .4byte gSprites
-_080B2E9C:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B2EC8 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
-_080B2EBA:
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B2EC8: .4byte gSprites
- thumb_func_end sub_80B2E64
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/ghost.s b/asm/ghost.s
deleted file mode 100644
index 194f728fe..000000000
--- a/asm/ghost.s
+++ /dev/null
@@ -1,4054 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B5268
-sub_80B5268: @ 80B5268
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080B52C4 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldr r5, _080B52C8 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_8075678
- ldr r0, _080B52CC @ =sub_80B52D0
- str r0, [r4, 0x1C]
- movs r0, 0x10
- strh r0, [r4, 0x3A]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r4, 0x3A]
- movs r0, 0x52
- bl SetGpuReg
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B52C4: .4byte gBattleAnimArgs
-_080B52C8: .4byte gBattleAnimTarget
-_080B52CC: .4byte sub_80B52D0
- thumb_func_end sub_80B5268
-
- thumb_func_start sub_80B52D0
-sub_80B52D0: @ 80B52D0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80B53C0
- adds r0, r4, 0
- bl sub_80755E0
- lsls r0, 24
- cmp r0, 0
- beq _080B52F0
- ldr r0, _080B52EC @ =sub_80B5344
- str r0, [r4, 0x1C]
- b _080B533A
- .align 2, 0
-_080B52EC: .4byte sub_80B5344
-_080B52F0:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xF
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x38]
- adds r0, r2, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x38]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _080B5328
- cmp r2, 0xC4
- ble _080B533A
-_080B5328:
- lsls r0, 16
- cmp r0, 0
- ble _080B533A
- ldr r0, _080B5340 @ =gUnknown_2037F24
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0xBD
- bl PlaySE12WithPanning
-_080B533A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5340: .4byte gUnknown_2037F24
- thumb_func_end sub_80B52D0
-
- thumb_func_start sub_80B5344
-sub_80B5344: @ 80B5344
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl sub_80755E0
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r1, 0xF
- bl Cos
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r2, [r4, 0x38]
- adds r0, r2, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x38]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _080B538A
- cmp r2, 0xC4
- ble _080B5396
-_080B538A:
- lsls r0, 16
- cmp r0, 0
- ble _080B5396
- movs r0, 0xBD
- bl PlaySE
-_080B5396:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B53B4
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B53B0 @ =sub_8074F88
- str r0, [r4, 0x1C]
- b _080B53BA
- .align 2, 0
-_080B53B0: .4byte sub_8074F88
-_080B53B4:
- adds r0, r4, 0
- bl sub_80B53C0
-_080B53BA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5344
-
- thumb_func_start sub_80B53C0
-sub_80B53C0: @ 80B53C0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x3A]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0xFF
- ble _080B53E4
- adds r0, r2, 0x1
- strh r0, [r4, 0x3A]
- lsls r0, 16
- ldr r1, _080B53E0 @ =0x010d0000
- cmp r0, r1
- bne _080B544A
- movs r0, 0
- b _080B5448
- .align 2, 0
-_080B53E0: .4byte 0x010d0000
-_080B53E4:
- ldrh r1, [r4, 0x3C]
- adds r3, r1, 0x1
- strh r3, [r4, 0x3C]
- movs r0, 0xFF
- ands r0, r1
- cmp r0, 0
- bne _080B544A
- ldr r1, _080B5408 @ =0xffffff00
- ands r1, r3
- strh r1, [r4, 0x3C]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080B540C
- adds r0, r2, 0x1
- b _080B540E
- .align 2, 0
-_080B5408: .4byte 0xffffff00
-_080B540C:
- subs r0, r2, 0x1
-_080B540E:
- strh r0, [r4, 0x3A]
- ldrh r0, [r4, 0x3A]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B5430
- cmp r0, 0x10
- bne _080B543C
-_080B5430:
- ldrh r0, [r4, 0x3C]
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- eors r0, r1
- strh r0, [r4, 0x3C]
-_080B543C:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B544A
- movs r0, 0x80
- lsls r0, 1
-_080B5448:
- strh r0, [r4, 0x3A]
-_080B544A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B53C0
-
- thumb_func_start sub_80B5450
-sub_80B5450: @ 80B5450
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r1, _080B546C @ =sub_80B5470
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B546C: .4byte sub_80B5470
- thumb_func_end sub_80B5450
-
- thumb_func_start sub_80B5470
-sub_80B5470: @ 80B5470
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x41
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x82
- bhi _080B54A4
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x8
- b _080B54AE
-_080B54A4:
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
-_080B54AE:
- orrs r1, r0
- strb r1, [r4, 0x5]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x13
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- adds r0, 0x50
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3D
- bne _080B54E0
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B54E0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5470
-
- thumb_func_start sub_80B54E8
-sub_80B54E8: @ 80B54E8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl PrepareBattlerSpriteForRotScale
- adds r0, r4, 0
- movs r1, 0x80
- movs r2, 0x80
- movs r3, 0
- bl SetSpriteRotScale
- ldr r1, _080B5560 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r1, _080B5564 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0x80
- strh r1, [r0, 0x8]
- ldr r1, _080B5568 @ =gBattleAnimArgs
- ldrh r1, [r1]
- strh r1, [r0, 0xA]
- strh r2, [r0, 0xC]
- movs r1, 0x10
- strh r1, [r0, 0xE]
- ldr r1, _080B556C @ =sub_80B5570
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5560: .4byte gSprites
-_080B5564: .4byte gTasks
-_080B5568: .4byte gBattleAnimArgs
-_080B556C: .4byte sub_80B5570
- thumb_func_end sub_80B54E8
-
- thumb_func_start sub_80B5570
-sub_80B5570: @ 80B5570
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B55C0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080B55B8
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0xC]
- adds r1, 0x1
- strh r1, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x9
- bne _080B55B8
- ldr r0, _080B55C4 @ =sub_80B55C8
- str r0, [r4]
-_080B55B8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B55C0: .4byte gTasks
-_080B55C4: .4byte sub_80B55C8
- thumb_func_end sub_80B5570
-
- thumb_func_start sub_80B55C8
-sub_80B55C8: @ 80B55C8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080B55EC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080B55F0
- subs r0, r1, 0x1
- strh r0, [r4, 0xA]
- b _080B5634
- .align 2, 0
-_080B55EC: .4byte gTasks
-_080B55F0:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r1, r0, 24
- ldrh r0, [r4, 0x8]
- adds r0, 0x8
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- bgt _080B5618
- movs r0, 0x8
- ldrsh r2, [r4, r0]
- adds r0, r1, 0
- adds r1, r2, 0
- movs r3, 0
- bl SetSpriteRotScale
- b _080B5634
-_080B5618:
- adds r0, r1, 0
- bl ResetSpriteRotScale
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
-_080B5634:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B55C8
-
- thumb_func_start sub_80B563C
-sub_80B563C: @ 80B563C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r5, [r4, 0x20]
- ldrh r6, [r4, 0x22]
- ldr r0, _080B56D8 @ =gBattleAnimAttacker
- mov r8, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- mov r9, r1
- strh r0, [r4, 0x20]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- mov r1, r9
- strh r1, [r4, 0x2E]
- ldr r2, _080B56DC @ =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r4, 0x30]
- ldrh r1, [r2, 0x2]
- strh r1, [r4, 0x32]
- ldrh r1, [r2, 0x4]
- strh r1, [r4, 0x34]
- ldrh r1, [r4, 0x20]
- lsls r1, 4
- strh r1, [r4, 0x36]
- lsls r0, 4
- strh r0, [r4, 0x38]
- lsls r5, 16
- asrs r5, 16
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- subs r5, r0
- lsls r5, 4
- movs r0, 0
- ldrsh r1, [r2, r0]
- lsls r1, 1
- adds r0, r5, 0
- str r2, [sp]
- bl __divsi3
- strh r0, [r4, 0x3A]
- lsls r6, 16
- asrs r6, 16
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- subs r6, r0
- lsls r6, 4
- ldr r2, [sp]
- movs r0, 0
- ldrsh r1, [r2, r0]
- lsls r1, 1
- adds r0, r6, 0
- bl __divsi3
- strh r0, [r4, 0x3C]
- ldr r0, _080B56E0 @ =sub_80B56E4
- str r0, [r4, 0x1C]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B56D8: .4byte gBattleAnimAttacker
-_080B56DC: .4byte gBattleAnimArgs
-_080B56E0: .4byte sub_80B56E4
- thumb_func_end sub_80B563C
-
- thumb_func_start sub_80B56E4
-sub_80B56E4: @ 80B56E4
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080B572E
- cmp r0, 0x1
- bgt _080B56FA
- cmp r0, 0
- beq _080B5704
- b _080B57F2
-_080B56FA:
- cmp r0, 0x2
- beq _080B5798
- cmp r0, 0x3
- beq _080B57EC
- b _080B57F2
-_080B5704:
- ldrh r0, [r5, 0x3A]
- ldrh r2, [r5, 0x36]
- adds r0, r2
- strh r0, [r5, 0x36]
- ldrh r1, [r5, 0x3C]
- ldrh r2, [r5, 0x38]
- adds r1, r2
- strh r1, [r5, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r5, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r5, 0x22]
- ldrh r0, [r5, 0x30]
- subs r0, 0x1
- strh r0, [r5, 0x30]
- lsls r0, 16
- cmp r0, 0
- bgt _080B57F2
- b _080B57DE
-_080B572E:
- ldrh r0, [r5, 0x32]
- subs r0, 0x1
- strh r0, [r5, 0x32]
- lsls r0, 16
- cmp r0, 0
- bgt _080B57F2
- ldr r4, _080B5794 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x30]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x20]
- lsls r0, 4
- strh r0, [r5, 0x36]
- ldrh r0, [r5, 0x22]
- lsls r0, 4
- strh r0, [r5, 0x38]
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- subs r0, r1
- lsls r0, 4
- movs r2, 0x34
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r5, 0x3A]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r2, 0x22
- ldrsh r1, [r5, r2]
- subs r0, r1
- lsls r0, 4
- movs r2, 0x34
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r5, 0x3C]
- b _080B57DE
- .align 2, 0
-_080B5794: .4byte gBattleAnimTarget
-_080B5798:
- ldrh r0, [r5, 0x3A]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- ldrh r1, [r5, 0x3C]
- ldrh r2, [r5, 0x38]
- adds r1, r2
- strh r1, [r5, 0x38]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r5, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r5, 0x22]
- ldrh r0, [r5, 0x34]
- subs r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- cmp r0, 0
- bgt _080B57F2
- ldr r4, _080B57E8 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_080B57DE:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080B57F2
- .align 2, 0
-_080B57E8: .4byte gBattleAnimTarget
-_080B57EC:
- adds r0, r5, 0
- bl move_anim_8074EE0
-_080B57F2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B56E4
-
- thumb_func_start sub_80B57F8
-sub_80B57F8: @ 80B57F8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r0, _080B580C @ =sub_80B5810
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B580C: .4byte sub_80B5810
- thumb_func_end sub_80B57F8
-
- thumb_func_start sub_80B5810
-sub_80B5810: @ 80B5810
- push {r4-r6,lr}
- adds r3, r0, 0
- movs r5, 0
- movs r6, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B58A6
- adds r1, r3, 0
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x4
- ands r0, r2
- adds r4, r1, 0
- cmp r0, 0
- bne _080B583A
- movs r0, 0x4
- orrs r0, r2
- strb r0, [r4]
-_080B583A:
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _080B584A
- cmp r0, 0x1
- beq _080B5854
- movs r6, 0x1
- b _080B585E
-_080B584A:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x2
- bne _080B585E
- b _080B5862
-_080B5854:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0x4
- bne _080B585E
- movs r5, 0x1
-_080B585E:
- cmp r5, 0
- beq _080B5894
-_080B5862:
- ldrb r2, [r4]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r3, 0x32]
- strh r1, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080B58A6
- strh r1, [r3, 0x32]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- b _080B58A6
-_080B5894:
- cmp r6, 0
- beq _080B58A0
- adds r0, r3, 0
- bl DestroyAnimSprite
- b _080B58A6
-_080B58A0:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
-_080B58A6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5810
-
- thumb_func_start sub_80B58AC
-sub_80B58AC: @ 80B58AC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B58D8 @ =gTasks
- adds r5, r0, r1
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- movs r6, 0
- movs r1, 0
- strh r0, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bge _080B58DC
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080B59B8
- .align 2, 0
-_080B58D8: .4byte gTasks
-_080B58DC:
- strh r1, [r5, 0xA]
- movs r0, 0xF
- strh r0, [r5, 0xC]
- movs r0, 0x2
- strh r0, [r5, 0xE]
- strh r1, [r5, 0x10]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r5, 0xE]
- lsls r1, 8
- ldrh r0, [r5, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r4, _080B5944 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x50
- strh r1, [r0, 0x2E]
- ldr r0, _080B5948 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B5950
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _080B594C @ =0x0000ff70
- strh r1, [r0, 0x30]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x70
- b _080B596E
- .align 2, 0
-_080B5944: .4byte gSprites
-_080B5948: .4byte gBattleAnimTarget
-_080B594C: .4byte 0x0000ff70
-_080B5950:
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x90
- strh r1, [r0, 0x30]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _080B59C0 @ =0x0000ff90
-_080B596E:
- strh r1, [r0, 0x32]
- ldr r4, _080B59C4 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r2, 0
- strh r2, [r0, 0x34]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x36]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _080B59C8 @ =SpriteCallbackDummy
- bl StoreSpriteCallbackInData6
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, _080B59CC @ =sub_8074D00
- str r1, [r0]
- ldr r0, _080B59D0 @ =sub_80B59D4
- str r0, [r5]
-_080B59B8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B59C0: .4byte 0x0000ff90
-_080B59C4: .4byte gSprites
-_080B59C8: .4byte SpriteCallbackDummy
-_080B59CC: .4byte sub_8074D00
-_080B59D0: .4byte sub_80B59D4
- thumb_func_end sub_80B58AC
-
- thumb_func_start sub_80B59D4
-sub_80B59D4: @ 80B59D4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B59F8 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B5A78
- cmp r0, 0x1
- bgt _080B59FC
- cmp r0, 0
- beq _080B5A02
- b _080B5AA4
- .align 2, 0
-_080B59F8: .4byte gTasks
-_080B59FC:
- cmp r0, 0x2
- beq _080B5A9E
- b _080B5AA4
-_080B5A02:
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x3
- ands r0, r1
- strh r0, [r4, 0x12]
- cmp r0, 0x1
- bne _080B5A20
- ldrh r1, [r4, 0xC]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080B5A20
- subs r0, r1, 0x1
- strh r0, [r4, 0xC]
-_080B5A20:
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- bne _080B5A36
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B5A36
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
-_080B5A36:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, [r4, 0xC]
- movs r0, 0x80
- lsls r0, 13
- cmp r1, r0
- bne _080B5AA4
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- ble _080B5AA4
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B5A74 @ =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
- movs r0, 0x1
- strh r0, [r4, 0x10]
- b _080B5AA4
- .align 2, 0
-_080B5A74: .4byte gSprites
-_080B5A78:
- ldrh r0, [r4, 0x14]
- adds r0, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B5AA4
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- b _080B5AA4
-_080B5A9E:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B5AA4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B59D4
-
- thumb_func_start sub_80B5AAC
-sub_80B5AAC: @ 80B5AAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _080B5ACC @ =gTasks
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x26]
- ldr r2, _080B5AD0 @ =sub_80B5AD4
- str r2, [r1]
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_080B5ACC: .4byte gTasks
-_080B5AD0: .4byte sub_80B5AD4
- thumb_func_end sub_80B5AAC
-
- thumb_func_start sub_80B5AD4
-sub_80B5AD4: @ 80B5AD4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B5B0C @ =gTasks
- adds r5, r0, r1
- ldr r0, _080B5B10 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _080B5B00
- b _080B5D22
-_080B5B00:
- lsls r0, 2
- ldr r1, _080B5B14 @ =_080B5B18
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B5B0C: .4byte gTasks
-_080B5B10: .4byte gBattleAnimTarget
-_080B5B14: .4byte _080B5B18
- .align 2, 0
-_080B5B18:
- .4byte _080B5B2C
- .4byte _080B5C2C
- .4byte _080B5C70
- .4byte _080B5CD8
- .4byte _080B5D04
-_080B5B2C:
- ldr r7, _080B5B64 @ =0x00002771
- adds r0, r7, 0
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- mov r8, r2
- strh r0, [r5, 0x24]
- cmp r0, 0xFF
- beq _080B5B5A
- cmp r0, 0xF
- beq _080B5B5A
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- strh r0, [r5, 0x8]
- lsls r0, 16
- cmp r0, 0
- bge _080B5B68
- adds r0, r7, 0
- bl FreeSpritePaletteByTag
-_080B5B5A:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080B5D28
- .align 2, 0
-_080B5B64: .4byte 0x00002771
-_080B5B68:
- ldr r4, _080B5C14 @ =gSprites
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r2, [r5, 0x24]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r2, 0x8
- ldrsh r0, [r5, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldr r0, _080B5C18 @ =gBattleSpritesDataPtr
- ldr r1, [r0]
- ldr r0, _080B5C1C @ =gBattleAnimTarget
- ldrb r0, [r0]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 31
- 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]
- mov r2, r8
- strh r2, [r5, 0xA]
- strh r2, [r5, 0xC]
- movs r0, 0x10
- strh r0, [r5, 0xE]
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r5, 0x10]
- cmp r6, 0x1
- bne _080B5C20
- movs r1, 0x80
- lsls r1, 2
- b _080B5C24
- .align 2, 0
-_080B5C14: .4byte gSprites
-_080B5C18: .4byte gBattleSpritesDataPtr
-_080B5C1C: .4byte gBattleAnimTarget
-_080B5C20:
- movs r1, 0x80
- lsls r1, 3
-_080B5C24:
- movs r0, 0
- bl ClearGpuRegBits
- b _080B5D22
-_080B5C2C:
- movs r1, 0x24
- ldrsh r0, [r5, r1]
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r5, 0x24]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- lsls r0, 1
- ldr r1, _080B5C60 @ =gPlttBufferUnfaded
- adds r0, r1
- movs r2, 0x24
- ldrsh r1, [r5, r2]
- lsls r1, 1
- ldr r2, _080B5C64 @ =gPlttBufferFaded
- adds r1, r2
- ldr r2, _080B5C68 @ =0x04000008
- bl CpuSet
- ldrh r0, [r5, 0x10]
- ldr r3, _080B5C6C @ =0x00003c0d
- movs r1, 0x10
- movs r2, 0xA
- bl BlendPalette
- b _080B5D22
- .align 2, 0
-_080B5C60: .4byte gPlttBufferUnfaded
-_080B5C64: .4byte gPlttBufferFaded
-_080B5C68: .4byte 0x04000008
-_080B5C6C: .4byte 0x00003c0d
-_080B5C70:
- ldr r2, _080B5CAC @ =gSprites
- movs r0, 0x22
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- subs r1, 0x20
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r1, 0
- bge _080B5C90
- movs r2, 0
-_080B5C90:
- cmp r6, 0x1
- bne _080B5CB0
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x4
- str r2, [sp, 0x4]
- str r6, [sp, 0x8]
- b _080B5CC8
- .align 2, 0
-_080B5CAC: .4byte gSprites
-_080B5CB0:
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x8
- str r2, [sp, 0x4]
- movs r2, 0x1
- str r2, [sp, 0x8]
-_080B5CC8:
- movs r2, 0x2
- movs r3, 0x6
- bl ScanlineEffect_InitWave
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x1C]
- b _080B5D22
-_080B5CD8:
- cmp r6, 0x1
- bne _080B5CEC
- ldr r1, _080B5CE8 @ =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _080B5CF4
- .align 2, 0
-_080B5CE8: .4byte 0x00003f42
-_080B5CEC:
- ldr r1, _080B5D00 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_080B5CF4:
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- b _080B5D22
- .align 2, 0
-_080B5D00: .4byte 0x00003f44
-_080B5D04:
- cmp r6, 0x1
- bne _080B5D14
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _080B5D1E
-_080B5D14:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_080B5D1E:
- ldr r0, _080B5D34 @ =sub_80B5D38
- str r0, [r5]
-_080B5D22:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
-_080B5D28:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5D34: .4byte sub_80B5D38
- thumb_func_end sub_80B5AD4
-
- thumb_func_start sub_80B5D38
-sub_80B5D38: @ 80B5D38
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B5DC0 @ =gTasks
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x1
- ands r0, r1
- strh r0, [r4, 0x12]
- cmp r0, 0
- bne _080B5D70
- ldr r1, _080B5DC4 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- strh r0, [r4, 0xC]
-_080B5D70:
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bne _080B5D92
- ldr r1, _080B5DC4 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- movs r1, 0x10
- subs r1, r0
- strh r1, [r4, 0xE]
-_080B5D92:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0x80
- bne _080B5DBA
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, _080B5DC8 @ =sub_80B5DCC
- str r1, [r4]
- adds r0, r5, 0
- bl _call_via_r1
-_080B5DBA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5DC0: .4byte gTasks
-_080B5DC4: .4byte gSineTable
-_080B5DC8: .4byte sub_80B5DCC
- thumb_func_end sub_80B5D38
-
- thumb_func_start sub_80B5DCC
-sub_80B5DCC: @ 80B5DCC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B5DFC @ =gTasks
- adds r4, r0, r1
- ldr r0, _080B5E00 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B5E38
- cmp r0, 0x1
- bgt _080B5E04
- cmp r0, 0
- beq _080B5E0A
- b _080B5EB4
- .align 2, 0
-_080B5DFC: .4byte gTasks
-_080B5E00: .4byte gBattleAnimTarget
-_080B5E04:
- cmp r0, 0x2
- beq _080B5E4C
- b _080B5EB4
-_080B5E0A:
- ldr r1, _080B5E28 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- cmp r6, 0x1
- bne _080B5E2C
- movs r1, 0x80
- lsls r1, 2
- b _080B5E30
- .align 2, 0
-_080B5E28: .4byte gScanlineEffect
-_080B5E2C:
- movs r1, 0x80
- lsls r1, 3
-_080B5E30:
- movs r0, 0
- bl ClearGpuRegBits
- b _080B5EB4
-_080B5E38:
- ldrh r0, [r4, 0x10]
- ldr r3, _080B5E48 @ =0x00003c0d
- movs r1, 0x10
- movs r2, 0
- bl BlendPalette
- b _080B5EB4
- .align 2, 0
-_080B5E48: .4byte 0x00003c0d
-_080B5E4C:
- ldr r3, _080B5E9C @ =gSprites
- movs r0, 0x24
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- bl obj_delete_but_dont_free_vram
- ldr r0, _080B5EA0 @ =0x00002771
- bl FreeSpritePaletteByTag
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- cmp r6, 0x1
- bne _080B5EA4
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _080B5EAE
- .align 2, 0
-_080B5E9C: .4byte gSprites
-_080B5EA0: .4byte 0x00002771
-_080B5EA4:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_080B5EAE:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B5EB4:
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5DCC
-
- thumb_func_start sub_80B5EC0
-sub_80B5EC0: @ 80B5EC0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- ldr r0, _080B5EFC @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B5F08
- ldr r4, _080B5F00 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r2, 0xE0
- lsls r2, 13
- adds r0, r2
- lsrs r5, r0, 16
- ldr r4, _080B5F04 @ =gBattleAnimTarget
- b _080B5F2C
- .align 2, 0
-_080B5EFC: .4byte gBattleAnimArgs
-_080B5F00: .4byte gBattleAnimAttacker
-_080B5F04: .4byte gBattleAnimTarget
-_080B5F08:
- ldr r4, _080B5FD0 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r2, 0xE0
- lsls r2, 13
- adds r0, r2
- lsrs r5, r0, 16
- ldr r4, _080B5FD4 @ =gBattleAnimAttacker
-_080B5F2C:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0xE0
- lsls r1, 13
- adds r0, r1
- lsrs r0, 16
- mov r9, r0
- mov r8, r5
- mov r2, r9
- subs r4, r2, r5
- lsls r4, 16
- lsrs r4, 16
- lsls r0, r6, 4
- strh r0, [r7, 0x2E]
- lsls r0, r5, 4
- strh r0, [r7, 0x30]
- mov r1, r10
- subs r0, r1, r6
- lsls r0, 4
- ldr r5, _080B5FD8 @ =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r7, 0x32]
- lsls r4, 16
- asrs r4, 12
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl __divsi3
- strh r0, [r7, 0x34]
- ldrh r0, [r5, 0x2]
- strh r0, [r7, 0x36]
- mov r1, r10
- strh r1, [r7, 0x38]
- mov r2, r9
- strh r2, [r7, 0x3A]
- movs r1, 0x36
- ldrsh r0, [r7, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r7, 0x3C]
- ldrb r1, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r7, 0x5]
- strh r6, [r7, 0x20]
- mov r2, r8
- strh r2, [r7, 0x22]
- ldr r0, _080B5FDC @ =sub_80B5FE0
- str r0, [r7, 0x1C]
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5FD0: .4byte gBattleAnimTarget
-_080B5FD4: .4byte gBattleAnimAttacker
-_080B5FD8: .4byte gBattleAnimArgs
-_080B5FDC: .4byte sub_80B5FE0
- thumb_func_end sub_80B5EC0
-
- thumb_func_start sub_80B5FE0
-sub_80B5FE0: @ 80B5FE0
- push {r4,lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x36]
- movs r1, 0x36
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _080B6018
- ldrh r0, [r2, 0x32]
- ldrh r4, [r2, 0x2E]
- adds r0, r4
- strh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x34]
- ldrh r4, [r2, 0x30]
- adds r1, r4
- strh r1, [r2, 0x30]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r2, 0x22]
- subs r0, r3, 0x1
- strh r0, [r2, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _080B6018
- strh r0, [r2, 0x2E]
-_080B6018:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B5FE0
-
- thumb_func_start sub_80B6020
-sub_80B6020: @ 80B6020
- 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
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B6170 @ =gTasks
- adds r1, r0
- str r1, [sp]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0
- ldr r1, [sp]
- strh r0, [r1, 0x12]
- strh r0, [r1, 0x14]
- strh r0, [r1, 0x16]
- strh r0, [r1, 0x18]
- movs r0, 0x10
- strh r0, [r1, 0x1A]
- ldr r2, _080B6174 @ =gBattleAnimArgs
- ldrh r0, [r2]
- strh r0, [r1, 0x1C]
- ldr r4, _080B6178 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8076B2C
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B6090
- b _080B618C
-_080B6090:
- movs r4, 0
-_080B6092:
- lsls r1, r4, 16
- asrs r3, r1, 16
- ldr r0, _080B6178 @ =gBattleAnimAttacker
- ldrb r2, [r0]
- str r1, [sp, 0x10]
- cmp r3, r2
- beq _080B615E
- movs r0, 0x2
- eors r2, r0
- cmp r3, r2
- beq _080B615E
- lsls r0, r4, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B615E
- ldr r6, [sp, 0x4]
- ldr r3, [sp, 0x8]
- lsls r0, r3, 16
- asrs r7, r0, 16
- ldr r0, _080B617C @ =gUnknown_83E7668
- adds r1, r6, 0
- adds r2, r7, 0
- movs r3, 0x37
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x40
- beq _080B615E
- adds r0, r4, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_8076B2C
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- mov r0, r8
- lsls r5, r0, 4
- add r5, r8
- lsls r5, 2
- ldr r1, _080B6180 @ =gSprites
- adds r4, r5, r1
- lsls r0, r6, 4
- strh r0, [r4, 0x2E]
- lsls r0, r7, 4
- strh r0, [r4, 0x30]
- mov r2, r10
- subs r0, r2, r6
- lsls r0, 4
- ldr r3, _080B6174 @ =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r3, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- mov r3, r9
- lsls r0, r3, 16
- asrs r0, 16
- subs r0, r7
- lsls r0, 4
- ldr r2, _080B6174 @ =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- bl __divsi3
- strh r0, [r4, 0x34]
- ldr r1, _080B6174 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x36]
- mov r2, r10
- strh r2, [r4, 0x38]
- mov r3, r9
- strh r3, [r4, 0x3A]
- ldr r0, _080B6184 @ =gSprites + 0x1C
- adds r5, r0
- ldr r0, _080B6188 @ =sub_80B5FE0
- str r0, [r5]
- ldr r2, [sp]
- movs r3, 0x20
- ldrsh r1, [r2, r3]
- adds r1, 0xD
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1
- mov r1, r8
- strh r1, [r0]
- ldrh r0, [r2, 0x20]
- adds r0, 0x1
- strh r0, [r2, 0x20]
-_080B615E:
- ldr r2, [sp, 0x10]
- movs r3, 0x80
- lsls r3, 9
- adds r0, r2, r3
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080B6092
- b _080B6210
- .align 2, 0
-_080B6170: .4byte gTasks
-_080B6174: .4byte gBattleAnimArgs
-_080B6178: .4byte gBattleAnimAttacker
-_080B617C: .4byte gUnknown_83E7668
-_080B6180: .4byte gSprites
-_080B6184: .4byte gSprites + 0x1C
-_080B6188: .4byte sub_80B5FE0
-_080B618C:
- ldr r0, _080B6228 @ =gUnknown_83E7668
- ldr r7, [sp, 0x4]
- ldr r2, [sp, 0x8]
- lsls r1, r2, 16
- asrs r1, 16
- str r1, [sp, 0xC]
- adds r1, r7, 0
- ldr r2, [sp, 0xC]
- movs r3, 0x37
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x40
- beq _080B6210
- movs r3, 0x30
- mov r10, r3
- movs r0, 0x28
- mov r9, r0
- ldr r6, _080B622C @ =gSprites
- mov r1, r8
- lsls r5, r1, 4
- add r5, r8
- lsls r5, 2
- adds r4, r5, r6
- lsls r0, r7, 4
- strh r0, [r4, 0x2E]
- ldr r2, [sp, 0xC]
- lsls r0, r2, 4
- strh r0, [r4, 0x30]
- subs r0, r3, r7
- lsls r0, 4
- ldr r3, _080B6230 @ =gBattleAnimArgs
- movs r2, 0x2
- ldrsh r1, [r3, r2]
- bl __divsi3
- strh r0, [r4, 0x32]
- mov r3, r9
- ldr r1, [sp, 0xC]
- subs r0, r3, r1
- lsls r0, 4
- ldr r2, _080B6230 @ =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- bl __divsi3
- strh r0, [r4, 0x34]
- ldr r1, _080B6230 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x36]
- mov r2, r10
- strh r2, [r4, 0x38]
- mov r3, r9
- strh r3, [r4, 0x3A]
- adds r6, 0x1C
- adds r5, r6
- ldr r0, _080B6234 @ =sub_80B5FE0
- str r0, [r5]
- mov r1, r8
- ldr r0, [sp]
- strh r1, [r0, 0x22]
- movs r0, 0x1
- ldr r2, [sp]
- strh r0, [r2, 0x20]
-_080B6210:
- ldr r0, _080B6238 @ =sub_80B623C
- ldr r3, [sp]
- str r0, [r3]
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6228: .4byte gUnknown_83E7668
-_080B622C: .4byte gSprites
-_080B6230: .4byte gBattleAnimArgs
-_080B6234: .4byte sub_80B5FE0
-_080B6238: .4byte sub_80B623C
- thumb_func_end sub_80B6020
-
- thumb_func_start sub_80B623C
-sub_80B623C: @ 80B623C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B6260 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080B62F2
- cmp r1, 0x1
- bgt _080B6264
- cmp r1, 0
- beq _080B6272
- b _080B63AE
- .align 2, 0
-_080B6260: .4byte gTasks
-_080B6264:
- cmp r1, 0x2
- bne _080B626A
- b _080B6384
-_080B626A:
- cmp r1, 0x3
- bne _080B6270
- b _080B6398
-_080B6270:
- b _080B63AE
-_080B6272:
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B62D8
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B62D8
- strh r1, [r4, 0x12]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B62A8
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B62B6
- adds r0, r1, 0x1
- strh r0, [r4, 0x18]
- b _080B62B6
-_080B62A8:
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B62B6
- subs r0, r1, 0x1
- strh r0, [r4, 0x1A]
-_080B62B6:
- ldrh r1, [r4, 0x1A]
- lsls r1, 8
- ldrh r0, [r4, 0x18]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- cmp r0, 0x17
- ble _080B62D8
- movs r0, 0
- strh r0, [r4, 0x16]
- movs r0, 0x1
- strh r0, [r4, 0x14]
-_080B62D8:
- ldrh r1, [r4, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B62E8
- subs r0, r1, 0x1
- strh r0, [r4, 0x1C]
- b _080B63AE
-_080B62E8:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B63AE
- b _080B6390
-_080B62F2:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B63AE
- movs r0, 0
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
- ands r0, r1
- lsls r0, 16
- cmp r0, 0
- beq _080B6322
- ldrh r1, [r4, 0x18]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B6330
- subs r0, r1, 0x1
- strh r0, [r4, 0x18]
- b _080B6330
-_080B6322:
- ldrh r1, [r4, 0x1A]
- movs r2, 0x1A
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B6330
- adds r0, r1, 0x1
- strh r0, [r4, 0x1A]
-_080B6330:
- ldrh r1, [r4, 0x1A]
- lsls r1, 8
- ldrh r0, [r4, 0x18]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, [r4, 0x18]
- movs r0, 0x80
- lsls r0, 13
- cmp r1, r0
- bne _080B63AE
- movs r5, 0
- b _080B6374
-_080B6350:
- adds r1, r5, 0
- adds r1, 0xD
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x8
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B6380 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080B6374:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- cmp r5, r0
- blt _080B6350
- b _080B6390
- .align 2, 0
-_080B6380: .4byte gSprites
-_080B6384:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- cmp r0, 0
- ble _080B63AE
-_080B6390:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B63AE
-_080B6398:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B63AE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B623C
-
- thumb_func_start sub_80B63B4
-sub_80B63B4: @ 80B63B4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _080B6400 @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B6404 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r1, _080B6408 @ =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, _080B640C @ =0x00003f1f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0xC8
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, _080B6410 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B63FC
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B6414
-_080B63FC:
- movs r6, 0x28
- b _080B6416
- .align 2, 0
-_080B6400: .4byte gUnknown_2022984
-_080B6404: .4byte gUnknown_2022986
-_080B6408: .4byte 0x00003f3f
-_080B640C: .4byte 0x00003f1f
-_080B6410: .4byte gBattleAnimAttacker
-_080B6414:
- movs r6, 0xC8
-_080B6416:
- ldr r1, _080B6454 @ =gUnknown_2022984
- lsls r3, r6, 16
- asrs r2, r3, 16
- lsls r0, r2, 8
- orrs r0, r2
- strh r0, [r1]
- ldr r1, _080B6458 @ =gUnknown_2022986
- movs r5, 0x28
- ldr r0, _080B645C @ =0x00002828
- strh r0, [r1]
- lsrs r3, 16
- movs r1, 0xF0
- subs r1, r2
- movs r4, 0x48
- ldr r2, _080B6460 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r2
- strh r3, [r0, 0xA]
- strh r1, [r0, 0xC]
- strh r5, [r0, 0xE]
- strh r4, [r0, 0x10]
- strh r6, [r0, 0x12]
- strh r5, [r0, 0x14]
- ldr r1, _080B6464 @ =sub_80B6468
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6454: .4byte gUnknown_2022984
-_080B6458: .4byte gUnknown_2022986
-_080B645C: .4byte 0x00002828
-_080B6460: .4byte gTasks
-_080B6464: .4byte sub_80B6468
- thumb_func_end sub_80B63B4
-
- thumb_func_start sub_80B6468
-sub_80B6468: @ 80B6468
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B6588 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0x8]
- adds r0, r1, 0x1
- strh r0, [r4, 0x8]
- ldrh r5, [r4, 0xA]
- ldrh r7, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- mov r10, r0
- ldrh r2, [r4, 0x10]
- str r2, [sp, 0xC]
- ldrh r0, [r4, 0x12]
- ldrh r2, [r4, 0x14]
- mov r8, r2
- lsls r1, 16
- asrs r6, r1, 16
- cmp r6, 0xF
- ble _080B64A4
- b _080B6594
-_080B64A4:
- lsls r0, 16
- asrs r0, 16
- bl __floatsidf
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- lsls r0, r5, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080B658C @ =0x3fb00000
- ldr r3, _080B658C+4 @ =0x00000000
- bl __muldf3
- adds r5, r1, 0
- adds r4, r0, 0
- adds r0, r6, 0
- bl __floatsidf
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- adds r1, r5, 0
- adds r0, r4, 0
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- bl __subdf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- lsls r0, r7, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080B658C @ =0x3fb00000
- ldr r3, _080B658C+4 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- bl __adddf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r7, r0, 16
- mov r1, r8
- lsls r0, r1, 16
- asrs r0, 16
- bl __floatsidf
- adds r5, r1, 0
- adds r4, r0, 0
- mov r2, r10
- lsls r0, r2, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080B658C @ =0x3fb00000
- ldr r3, _080B658C+4 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- adds r1, r5, 0
- adds r0, r4, 0
- bl __subdf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r1, [sp, 0xC]
- lsls r0, r1, 16
- asrs r0, 16
- bl __floatsidf
- ldr r2, _080B658C @ =0x3fb00000
- ldr r3, _080B658C+4 @ =0x00000000
- bl __muldf3
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- bl __muldf3
- adds r3, r1, 0
- adds r2, r0, 0
- adds r1, r5, 0
- adds r0, r4, 0
- bl __adddf3
- bl __fixunsdfsi
- lsls r0, 16
- lsrs r5, r0, 16
- b _080B65C2
- .align 2, 0
-_080B6588: .4byte gTasks
-_080B658C: .double 0.0625
-_080B6594:
- movs r2, 0
- mov r9, r2
- movs r7, 0xF0
- movs r6, 0
- movs r5, 0x70
- str r6, [sp]
- str r6, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0
- bl sub_8075BE8
- lsls r0, 16
- lsrs r0, 16
- str r6, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080B65E4 @ =sub_80B65F0
- str r0, [r4]
-_080B65C2:
- ldr r1, _080B65E8 @ =gUnknown_2022984
- mov r2, r9
- lsls r0, r2, 8
- orrs r7, r0
- strh r7, [r1]
- ldr r1, _080B65EC @ =gUnknown_2022986
- lsls r0, r6, 8
- orrs r5, r0
- strh r5, [r1]
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B65E4: .4byte sub_80B65F0
-_080B65E8: .4byte gUnknown_2022984
-_080B65EC: .4byte gUnknown_2022986
- thumb_func_end sub_80B6468
-
- thumb_func_start sub_80B65F0
-sub_80B65F0: @ 80B65F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080B663C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080B6636
- ldr r0, _080B6640 @ =gUnknown_2022984
- strh r1, [r0]
- ldr r0, _080B6644 @ =gUnknown_2022986
- strh r1, [r0]
- ldr r4, _080B6648 @ =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B6636:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B663C: .4byte gPaletteFade
-_080B6640: .4byte gUnknown_2022984
-_080B6644: .4byte gUnknown_2022986
-_080B6648: .4byte 0x00003f3f
- thumb_func_end sub_80B65F0
-
- thumb_func_start sub_80B664C
-sub_80B664C: @ 80B664C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r0, _080B6678 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B6680
- movs r2, 0x18
- ldr r3, _080B667C @ =0x0000fffe
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r4, 0x3]
- b _080B6684
- .align 2, 0
-_080B6678: .4byte gBattleAnimAttacker
-_080B667C: .4byte 0x0000fffe
-_080B6680:
- ldr r2, _080B66A0 @ =0x0000ffe8
- movs r3, 0x2
-_080B6684:
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- strh r3, [r4, 0x30]
- movs r0, 0x3C
- strh r0, [r4, 0x2E]
- ldr r0, _080B66A4 @ =sub_80B66A8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B66A0: .4byte 0x0000ffe8
-_080B66A4: .4byte sub_80B66A8
- thumb_func_end sub_80B664C
-
- thumb_func_start sub_80B66A8
-sub_80B66A8: @ 80B66A8
- push {r4,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _080B66BA
- subs r0, r1, 0x1
- b _080B671E
-_080B66BA:
- ldrh r0, [r3, 0x30]
- ldrh r4, [r3, 0x24]
- adds r1, r0, r4
- strh r1, [r3, 0x24]
- adds r0, r1, 0x7
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xE
- bls _080B6720
- ldrh r0, [r3, 0x20]
- adds r0, r1
- strh r0, [r3, 0x20]
- movs r0, 0
- strh r0, [r3, 0x24]
- ldrh r2, [r3, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x8
- ldr r4, _080B670C @ =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, _080B6710 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080B671C
- movs r0, 0x1E
- strh r0, [r3, 0x2E]
- ldr r0, _080B6714 @ =sub_8074C44
- str r0, [r3, 0x1C]
- ldr r1, _080B6718 @ =sub_80B6728
- adds r0, r3, 0
- bl StoreSpriteCallbackInData6
- b _080B6720
- .align 2, 0
-_080B670C: .4byte 0x000003ff
-_080B6710: .4byte 0xfffffc00
-_080B6714: .4byte sub_8074C44
-_080B6718: .4byte sub_80B6728
-_080B671C:
- movs r0, 0x28
-_080B671E:
- strh r0, [r3, 0x2E]
-_080B6720:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B66A8
-
- thumb_func_start sub_80B6728
-sub_80B6728: @ 80B6728
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0
- bne _080B6752
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x32]
- b _080B6796
-_080B6752:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bgt _080B6762
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _080B6796
-_080B6762:
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- movs r1, 0x10
- subs r1, r0
- lsls r0, 8
- 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 _080B6796
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B679C @ =sub_80B67A0
- str r0, [r4, 0x1C]
-_080B6796:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B679C: .4byte sub_80B67A0
- thumb_func_end sub_80B6728
-
- thumb_func_start sub_80B67A0
-sub_80B67A0: @ 80B67A0
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- ldr r0, _080B67CC @ =gUnknown_2022984
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B67D0 @ =gUnknown_2022986
- strh r1, [r0]
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B67CC: .4byte gUnknown_2022984
-_080B67D0: .4byte gUnknown_2022986
- thumb_func_end sub_80B67A0
-
- thumb_func_start sub_80B67D4
-sub_80B67D4: @ 80B67D4
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r1, 0xC
- bl Sin
- strh r0, [r5, 0x24]
- ldr r0, _080B683C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B67F8
- ldrh r0, [r5, 0x24]
- negs r0, r0
- strh r0, [r5, 0x24]
-_080B67F8:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x3C]
- adds r0, 0x1
- strh r0, [r5, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080B6844
- ldr r0, _080B6840 @ =0x0000050b
- strh r0, [r5, 0x3A]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r1, [r5, 0x3A]
- movs r0, 0x52
- bl SetGpuReg
- b _080B689C
- .align 2, 0
-_080B683C: .4byte gBattleAnimAttacker
-_080B6840: .4byte 0x0000050b
-_080B6844:
- cmp r0, 0x1E
- ble _080B689C
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r1, [r5, 0x3A]
- lsls r0, r1, 16
- asrs r0, 24
- lsls r0, 16
- movs r6, 0xFF
- ands r6, r1
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r7, r0, 16
- cmp r7, 0x10
- bls _080B6868
- movs r7, 0x10
-_080B6868:
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r0, 0
- bge _080B6874
- movs r6, 0
-_080B6874:
- lsls r4, r7, 8
- orrs r4, r6
- lsls r1, r4, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- strh r4, [r5, 0x3A]
- cmp r7, 0x10
- bne _080B689C
- cmp r6, 0
- bne _080B689C
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B68A4 @ =sub_80B68A8
- str r0, [r5, 0x1C]
-_080B689C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B68A4: .4byte sub_80B68A8
- thumb_func_end sub_80B67D4
-
- thumb_func_start sub_80B68A8
-sub_80B68A8: @ 80B68A8
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyAnimSprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B68A8
-
- thumb_func_start sub_80B68C8
-sub_80B68C8: @ 80B68C8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080B6960 @ =gTasks
- adds r4, r0
- movs r6, 0
- strh r6, [r4, 0x8]
- movs r0, 0x10
- mov r8, r0
- mov r0, r8
- strh r0, [r4, 0xA]
- ldr r5, _080B6964 @ =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1A]
- ldrb r0, [r5]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_8076B2C
- lsls r0, 16
- asrs r1, r0, 16
- lsrs r0, 31
- adds r1, r0
- asrs r1, 1
- adds r1, 0x8
- strh r1, [r4, 0x1E]
- strh r6, [r4, 0x16]
- ldrb r0, [r5]
- bl sub_8076884
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x12]
- ldrb r0, [r5]
- bl GetBattlerSpriteSubpriority
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x2
- strh r0, [r4, 0x14]
- strh r6, [r4, 0xE]
- mov r0, r8
- strh r0, [r4, 0x10]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- strh r6, [r4, 0x18]
- ldr r0, _080B6968 @ =sub_80B696C
- str r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6960: .4byte gTasks
-_080B6964: .4byte gBattleAnimAttacker
-_080B6968: .4byte sub_80B696C
- thumb_func_end sub_80B68C8
-
- thumb_func_start sub_80B696C
-sub_80B696C: @ 80B696C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080B6990 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _080B6986
- b _080B6AF2
-_080B6986:
- lsls r0, 2
- ldr r1, _080B6994 @ =_080B6998
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B6990: .4byte gTasks
-_080B6994: .4byte _080B6998
- .align 2, 0
-_080B6998:
- .4byte _080B69B0
- .4byte _080B6A20
- .4byte _080B6A62
- .4byte _080B6A76
- .4byte _080B6ACC
- .4byte _080B6ADC
-_080B69B0:
- movs r6, 0
-_080B69B2:
- movs r2, 0x1A
- ldrsh r1, [r4, r2]
- movs r0, 0x1C
- ldrsh r2, [r4, r0]
- ldrb r3, [r4, 0x14]
- ldr r0, _080B6A14 @ =gUnknown_83E76E0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080B6A06
- ldr r1, _080B6A18 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r1
- strh r7, [r5, 0x2E]
- ldr r0, _080B6A1C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _080B69E8
- movs r1, 0x1
-_080B69E8:
- strh r1, [r5, 0x30]
- movs r0, 0x2A
- muls r0, r6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x1E]
- strh r0, [r5, 0x34]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 1
- strh r0, [r5, 0x38]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- strh r0, [r4, 0x16]
-_080B6A06:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _080B69B2
- b _080B6AD4
- .align 2, 0
-_080B6A14: .4byte gUnknown_83E76E0
-_080B6A18: .4byte gSprites
-_080B6A1C: .4byte gBattleAnimAttacker
-_080B6A20:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B6A3E
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0xD
- bgt _080B6A4C
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _080B6A4C
-_080B6A3E:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0x4
- ble _080B6A4C
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
-_080B6A4C:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- ldrh r2, [r4, 0xE]
- ldrh r1, [r4, 0x10]
- cmp r0, 0xE
- bne _080B6ABC
- cmp r1, 0x4
- bne _080B6ABC
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080B6AB6
-_080B6A62:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _080B6AF2
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080B6AD4
-_080B6A76:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B6A94
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080B6AA2
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _080B6AA2
-_080B6A94:
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080B6AA2
- adds r0, r1, 0x1
- strh r0, [r4, 0x10]
-_080B6AA2:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- ldrh r2, [r4, 0xE]
- ldrh r1, [r4, 0x10]
- cmp r0, 0
- bne _080B6ABC
- cmp r1, 0x10
- bne _080B6ABC
- movs r0, 0x1
- strh r0, [r4, 0x18]
-_080B6AB6:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080B6ABC:
- lsls r1, 8
- orrs r1, r2
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- b _080B6AF2
-_080B6ACC:
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B6AF2
-_080B6AD4:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B6AF2
-_080B6ADC:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080B6AF2:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B696C
-
- thumb_func_start sub_80B6AF8
-sub_80B6AF8: @ 80B6AF8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B6B0A
- ldrh r0, [r4, 0x32]
- adds r0, 0x2
- b _080B6B0E
-_080B6B0A:
- ldrh r0, [r4, 0x32]
- subs r0, 0x2
-_080B6B0E:
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x32]
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- subs r0, 0x41
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x7E
- bhi _080B6B50
- ldr r2, _080B6B4C @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x12]
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- b _080B6B64
- .align 2, 0
-_080B6B4C: .4byte gTasks
-_080B6B50:
- ldr r2, _080B6BB8 @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x3
- ldrb r1, [r0, 0x12]
- ands r1, r2
-_080B6B64:
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- lsls r0, 3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- movs r1, 0x7
- bl Sin
- strh r0, [r4, 0x26]
- ldr r2, _080B6BB8 @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- movs r2, 0x18
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080B6BB2
- ldrh r0, [r1, 0x16]
- subs r0, 0x1
- strh r0, [r1, 0x16]
- adds r0, r4, 0
- bl DestroySprite
-_080B6BB2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6BB8: .4byte gTasks
- thumb_func_end sub_80B6AF8
-
- thumb_func_start sub_80B6BBC
-sub_80B6BBC: @ 80B6BBC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _080B6BDC @ =gTasks
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x26]
- ldr r2, _080B6BE0 @ =sub_80B6BE4
- str r2, [r1]
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_080B6BDC: .4byte gTasks
-_080B6BE0: .4byte sub_80B6BE4
- thumb_func_end sub_80B6BBC
-
- thumb_func_start sub_80B6BE4
-sub_80B6BE4: @ 80B6BE4
- push {r4-r6,lr}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B6C18 @ =gTasks
- adds r6, r1, r0
- ldr r0, _080B6C1C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r4, r0, 24
- movs r1, 0x26
- ldrsh r0, [r6, r1]
- cmp r0, 0x7
- bls _080B6C0C
- b _080B6F1E
-_080B6C0C:
- lsls r0, 2
- ldr r1, _080B6C20 @ =_080B6C24
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B6C18: .4byte gTasks
-_080B6C1C: .4byte gBattleAnimAttacker
-_080B6C20: .4byte _080B6C24
- .align 2, 0
-_080B6C24:
- .4byte _080B6C44
- .4byte _080B6CCC
- .4byte _080B6D28
- .4byte _080B6D8C
- .4byte _080B6E04
- .4byte _080B6E6C
- .4byte _080B6E82
- .4byte _080B6EEC
-_080B6C44:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x2
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0
- strh r0, [r6, 0xA]
- strh r0, [r6, 0xC]
- movs r0, 0x10
- strh r0, [r6, 0xE]
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x10]
- ldr r3, _080B6CC8 @ =gSprites
- movs r2, 0x10
- ldrsh r1, [r6, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x5]
- lsls r0, 28
- lsrs r0, 30
- strh r0, [r6, 0x12]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- lsls r0, 4
- strh r0, [r6, 0x14]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r2, [r0, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x1]
- movs r0, 0x10
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r0, 0x80
- strh r0, [r6, 0x16]
- b _080B6F1E
- .align 2, 0
-_080B6CC8: .4byte gSprites
-_080B6CCC:
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
- movs r5, 0x1
- ands r5, r0
- cmp r5, 0
- beq _080B6CDC
- b _080B6F24
-_080B6CDC:
- ldrh r0, [r6, 0x14]
- ldrb r2, [r6, 0xC]
- ldr r4, _080B6D08 @ =0x000066e0
- movs r1, 0x10
- adds r3, r4, 0
- bl BlendPalette
- ldrh r0, [r6, 0x16]
- ldrb r2, [r6, 0xC]
- movs r1, 0x10
- adds r3, r4, 0
- bl BlendPalette
- ldrh r1, [r6, 0xC]
- movs r2, 0xC
- ldrsh r0, [r6, r2]
- cmp r0, 0xB
- bgt _080B6D0C
- adds r0, r1, 0x1
- strh r0, [r6, 0xC]
- b _080B6F24
- .align 2, 0
-_080B6D08: .4byte 0x000066e0
-_080B6D0C:
- strh r5, [r6, 0xA]
- strh r5, [r6, 0xC]
- ldr r1, _080B6D24 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- b _080B6F1E
- .align 2, 0
-_080B6D24: .4byte 0x00003f44
-_080B6D28:
- movs r0, 0x2
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- ldr r0, _080B6D7C @ =gBattle_BG2_X
- movs r1, 0
- strh r1, [r0]
- ldr r4, _080B6D80 @ =gBattle_BG2_Y
- strh r1, [r4]
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x1A
- bl SetGpuReg
- add r0, sp, 0xC
- movs r1, 0x2
- bl sub_80752C8
- add r0, sp, 0xC
- ldrb r0, [r0, 0x9]
- ldr r1, _080B6D84 @ =gFile_graphics_battle_anims_backgrounds_scary_face_sheet
- add r2, sp, 0xC
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080B6D88 @ =gFile_graphics_battle_anims_backgrounds_scary_face_palette
- add r1, sp, 0xC
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- b _080B6F1E
- .align 2, 0
-_080B6D7C: .4byte gBattle_BG2_X
-_080B6D80: .4byte gBattle_BG2_Y
-_080B6D84: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet
-_080B6D88: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette
-_080B6D8C:
- add r0, sp, 0xC
- movs r1, 0x2
- bl sub_80752C8
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- adds r1, r0, 0
- ldr r5, _080B6DFC @ =gMonSpritesGfxPtr
- ldr r0, [r5]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- str r1, [r0]
- ldr r0, _080B6E00 @ =gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
- bl LZDecompressWram
- add r0, sp, 0xC
- ldrb r0, [r0, 0x8]
- ldr r1, [r5]
- adds r1, r4
- ldr r1, [r1]
- movs r2, 0x80
- lsls r2, 1
- movs r3, 0
- bl sub_80730C0
- add r0, sp, 0xC
- ldrb r0, [r0, 0x9]
- ldr r1, [r5]
- adds r1, r4
- ldr r1, [r1]
- movs r2, 0x20
- str r2, [sp]
- str r2, [sp, 0x4]
- movs r2, 0x11
- str r2, [sp, 0x8]
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r0, [r5]
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0
- str r1, [r0]
- b _080B6F1E
- .align 2, 0
-_080B6DFC: .4byte gMonSpritesGfxPtr
-_080B6E00: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap
-_080B6E04:
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B6E14
- b _080B6F24
-_080B6E14:
- ldrh r1, [r6, 0xC]
- adds r1, 0x1
- strh r1, [r6, 0xC]
- ldrh r0, [r6, 0xE]
- subs r0, 0x1
- strh r0, [r6, 0xE]
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080B6F24
- strh r0, [r6, 0xA]
- strh r0, [r6, 0xC]
- movs r0, 0x10
- strh r0, [r6, 0xE]
- ldr r1, _080B6E68 @ =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, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x2
- bl SetAnimBgAttribute
- b _080B6F1E
- .align 2, 0
-_080B6E68: .4byte 0x00003f42
-_080B6E6C:
- cmp r4, 0x1
- bne _080B6E76
- movs r1, 0x80
- lsls r1, 2
- b _080B6E7A
-_080B6E76:
- movs r1, 0x80
- lsls r1, 3
-_080B6E7A:
- movs r0, 0
- bl ClearGpuRegBits
- b _080B6F1E
-_080B6E82:
- ldr r2, _080B6EC0 @ =gSprites
- movs r0, 0x10
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- subs r1, 0x20
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r1, 0
- bge _080B6EA2
- movs r2, 0
-_080B6EA2:
- cmp r4, 0x1
- bne _080B6EC4
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x4
- str r2, [sp, 0x4]
- str r4, [sp, 0x8]
- b _080B6EDE
- .align 2, 0
-_080B6EC0: .4byte gSprites
-_080B6EC4:
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r2, 0
- adds r1, 0x40
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- str r2, [sp]
- movs r2, 0x8
- str r2, [sp, 0x4]
- movs r2, 0x1
- str r2, [sp, 0x8]
- movs r2, 0x4
-_080B6EDE:
- movs r3, 0x8
- bl ScanlineEffect_InitWave
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x1C]
- b _080B6F1E
-_080B6EEC:
- ldrh r0, [r6, 0x16]
- ldr r3, _080B6F08 @ =0x000077ff
- movs r1, 0x10
- movs r2, 0xC
- bl BlendPalette
- cmp r4, 0x1
- bne _080B6F0C
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- bl SetGpuRegBits
- b _080B6F16
- .align 2, 0
-_080B6F08: .4byte 0x000077ff
-_080B6F0C:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
-_080B6F16:
- ldr r0, _080B6F2C @ =sub_80B6F30
- str r0, [r6]
- movs r0, 0
- strh r0, [r6, 0x26]
-_080B6F1E:
- ldrh r0, [r6, 0x26]
- adds r0, 0x1
- strh r0, [r6, 0x26]
-_080B6F24:
- add sp, 0x1C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6F2C: .4byte sub_80B6F30
- thumb_func_end sub_80B6BE4
-
- thumb_func_start sub_80B6F30
-sub_80B6F30: @ 80B6F30
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B6FB8 @ =gTasks
- adds r4, r0, r1
- ldrh r1, [r4, 0xA]
- adds r1, 0x1
- strh r1, [r4, 0xA]
- movs r0, 0x1
- ands r0, r1
- strh r0, [r4, 0x18]
- cmp r0, 0
- bne _080B6F68
- ldr r1, _080B6FBC @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- strh r0, [r4, 0xC]
-_080B6F68:
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- bne _080B6F8A
- ldr r1, _080B6FBC @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x12
- bl __divsi3
- movs r1, 0x10
- subs r1, r0
- strh r1, [r4, 0xE]
-_080B6F8A:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0xC]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0x80
- bne _080B6FB2
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, _080B6FC0 @ =sub_80B6FC4
- str r1, [r4]
- adds r0, r5, 0
- bl _call_via_r1
-_080B6FB2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B6FB8: .4byte gTasks
-_080B6FBC: .4byte gSineTable
-_080B6FC0: .4byte sub_80B6FC4
- thumb_func_end sub_80B6F30
-
- thumb_func_start sub_80B6FC4
-sub_80B6FC4: @ 80B6FC4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080B6FE8 @ =gTasks
- adds r6, r0, r1
- movs r1, 0x26
- ldrsh r0, [r6, r1]
- cmp r0, 0x5
- bls _080B6FDE
- b _080B7148
-_080B6FDE:
- lsls r0, 2
- ldr r1, _080B6FEC @ =_080B6FF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B6FE8: .4byte gTasks
-_080B6FEC: .4byte _080B6FF0
- .align 2, 0
-_080B6FF0:
- .4byte _080B7008
- .4byte _080B7024
- .4byte _080B7044
- .4byte _080B707C
- .4byte _080B709C
- .4byte _080B70E8
-_080B7008:
- ldr r1, _080B701C @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- ldrh r0, [r6, 0x16]
- ldr r3, _080B7020 @ =0x000066e0
- movs r1, 0x10
- movs r2, 0xC
- bl BlendPalette
- b _080B7148
- .align 2, 0
-_080B701C: .4byte gScanlineEffect
-_080B7020: .4byte 0x000066e0
-_080B7024:
- ldr r1, _080B7040 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- movs r1, 0
- movs r0, 0x10
- strh r0, [r6, 0xC]
- strh r1, [r6, 0xE]
- b _080B7148
- .align 2, 0
-_080B7040: .4byte 0x00003f44
-_080B7044:
- ldrh r1, [r6, 0xC]
- subs r1, 0x1
- strh r1, [r6, 0xC]
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0xE
- ldrsh r0, [r6, r2]
- cmp r0, 0xF
- ble _080B714E
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x2
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x2
- bl SetAnimBgAttribute
- b _080B7148
-_080B707C:
- movs r0, 0x2
- bl sub_8075358
- movs r0, 0
- movs r1, 0x90
- movs r2, 0x20
- bl FillPalette
- movs r0, 0x2
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0xC
- strh r0, [r6, 0xA]
- b _080B7148
-_080B709C:
- ldrh r0, [r6, 0x14]
- ldrb r2, [r6, 0xA]
- ldr r4, _080B70C8 @ =0x000066e0
- movs r1, 0x10
- adds r3, r4, 0
- bl BlendPalette
- ldrh r0, [r6, 0x16]
- ldrb r2, [r6, 0xA]
- movs r1, 0x10
- adds r3, r4, 0
- bl BlendPalette
- ldrh r0, [r6, 0xA]
- movs r2, 0xA
- ldrsh r1, [r6, r2]
- cmp r1, 0
- beq _080B70CC
- subs r0, 0x1
- strh r0, [r6, 0xA]
- b _080B714E
- .align 2, 0
-_080B70C8: .4byte 0x000066e0
-_080B70CC:
- strh r1, [r6, 0xA]
- ldr r1, _080B70E4 @ =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- b _080B7148
- .align 2, 0
-_080B70E4: .4byte 0x00003f44
-_080B70E8:
- ldr r5, _080B7154 @ =gSprites
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- movs r0, 0x3
- ldrb r2, [r6, 0x12]
- ands r2, r0
- lsls r2, 2
- ldrb r4, [r1, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r0, r4
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r2, 0x10
- ldrsh r1, [r6, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- ands r3, r1
- strb r3, [r0, 0x1]
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080B7148:
- ldrh r0, [r6, 0x26]
- adds r0, 0x1
- strh r0, [r6, 0x26]
-_080B714E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7154: .4byte gSprites
- thumb_func_end sub_80B6FC4
-
- thumb_func_start sub_80B7158
-sub_80B7158: @ 80B7158
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r3]
- ldr r2, _080B719C @ =gBattlerSpriteIds
- ldr r1, _080B71A0 @ =gBattleAnimAttacker
- ldrb r1, [r1]
- adds r1, r2
- ldrb r1, [r1]
- strh r1, [r0, 0x38]
- movs r1, 0x80
- strh r1, [r0, 0x2E]
- movs r1, 0xA
- strh r1, [r0, 0x30]
- ldr r2, _080B71A4 @ =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r0, 0x32]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0x34]
- ldr r1, _080B71A8 @ =sub_80B71B0
- str r1, [r0, 0x1C]
- ldr r2, _080B71AC @ =gSprites
- movs r3, 0x38
- ldrsh r1, [r0, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080B719C: .4byte gBattlerSpriteIds
-_080B71A0: .4byte gBattleAnimAttacker
-_080B71A4: .4byte gBattleAnimArgs
-_080B71A8: .4byte sub_80B71B0
-_080B71AC: .4byte gSprites
- thumb_func_end sub_80B7158
-
- thumb_func_start sub_80B71B0
-sub_80B71B0: @ 80B71B0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x34]
- movs r1, 0x34
- ldrsh r3, [r5, r1]
- cmp r3, 0
- beq _080B7218
- subs r0, 0x1
- strh r0, [r5, 0x34]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- ldr r4, _080B7210 @ =gSprites
- movs r1, 0x38
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Cos
- movs r1, 0x38
- ldrsh r2, [r5, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r0, [r1, 0x26]
- ldrh r0, [r5, 0x32]
- ldrh r2, [r5, 0x2E]
- adds r1, r0, r2
- strh r1, [r5, 0x2E]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080B724C
- ldr r2, _080B7214 @ =0xffffff00
- adds r0, r1, r2
- strh r0, [r5, 0x2E]
- b _080B724C
- .align 2, 0
-_080B7210: .4byte gSprites
-_080B7214: .4byte 0xffffff00
-_080B7218:
- ldr r2, _080B7254 @ =gSprites
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x8
- strh r1, [r0, 0x22]
- ldr r0, _080B7258 @ =move_anim_8074EE0
- str r0, [r5, 0x1C]
-_080B724C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B7254: .4byte gSprites
-_080B7258: .4byte move_anim_8074EE0
- thumb_func_end sub_80B71B0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/ground.s b/asm/ground.s
deleted file mode 100644
index 3df01daf8..000000000
--- a/asm/ground.s
+++ /dev/null
@@ -1,1787 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B8B6C
-sub_80B8B6C: @ 80B8B6C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B8BC4 @ =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- ldr r5, _080B8BC8 @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- ldr r0, _080B8BCC @ =0x0000ffd8
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldr r0, _080B8BD0 @ =sub_80B8BD4
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8BC4: .4byte gBattleAnimAttacker
-_080B8BC8: .4byte gBattleAnimTarget
-_080B8BCC: .4byte 0x0000ffd8
-_080B8BD0: .4byte sub_80B8BD4
- thumb_func_end sub_80B8B6C
-
- thumb_func_start sub_80B8BD4
-sub_80B8BD4: @ 80B8BD4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B8C28
- ldrh r0, [r5, 0x24]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r1, [r5, 0x26]
- strh r1, [r5, 0x24]
- movs r0, 0x14
- strh r0, [r5, 0x2E]
- ldr r4, _080B8C30 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- movs r0, 0x28
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl sub_8075068
- ldr r0, _080B8C34 @ =sub_80B8C38
- str r0, [r5, 0x1C]
-_080B8C28:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8C30: .4byte gBattleAnimAttacker
-_080B8C34: .4byte sub_80B8C38
- thumb_func_end sub_80B8BD4
-
- thumb_func_start sub_80B8C38
-sub_80B8C38: @ 80B8C38
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B8C4C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B8C4C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B8C38
-
- thumb_func_start sub_80B8C54
-sub_80B8C54: @ 80B8C54
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075114
- ldr r0, _080B8CB4 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B8C74
- ldr r1, _080B8CB8 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080B8C74:
- ldr r4, _080B8CB8 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldr r5, _080B8CBC @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r6, 0x36]
- ldr r0, _080B8CC0 @ =StartAnimLinearTranslation
- str r0, [r6, 0x1C]
- ldr r1, _080B8CC4 @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8CB4: .4byte gBattleAnimAttacker
-_080B8CB8: .4byte gBattleAnimArgs
-_080B8CBC: .4byte gBattleAnimTarget
-_080B8CC0: .4byte StartAnimLinearTranslation
-_080B8CC4: .4byte DestroyAnimSprite
- thumb_func_end sub_80B8C54
-
- thumb_func_start sub_80B8CC8
-sub_80B8CC8: @ 80B8CC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_8075160
- ldr r4, _080B8D48 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8074844
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8074844
- lsls r0, 24
- lsrs r7, r0, 24
- bl Random
- movs r4, 0x1F
- adds r5, r4, 0
- ands r5, r0
- bl Random
- ands r4, r0
- adds r1, r5, 0
- cmp r1, 0x10
- ble _080B8D10
- movs r0, 0x10
- subs r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
-_080B8D10:
- lsls r0, r4, 16
- asrs r1, r0, 16
- cmp r1, 0x10
- ble _080B8D20
- movs r0, 0x10
- subs r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
-_080B8D20:
- ldr r0, _080B8D4C @ =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r6, 0x2E]
- mov r1, r8
- adds r0, r1, r5
- strh r0, [r6, 0x32]
- adds r0, r7, r4
- strh r0, [r6, 0x36]
- ldr r0, _080B8D50 @ =StartAnimLinearTranslation
- str r0, [r6, 0x1C]
- ldr r1, _080B8D54 @ =move_anim_8074EE0
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8D48: .4byte gBattleAnimTarget
-_080B8D4C: .4byte gBattleAnimArgs
-_080B8D50: .4byte StartAnimLinearTranslation
-_080B8D54: .4byte move_anim_8074EE0
- thumb_func_end sub_80B8CC8
-
- thumb_func_start sub_80B8D58
-sub_80B8D58: @ 80B8D58
- push {r4-r6,lr}
- adds r5, r0, 0
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x1
- ldr r3, _080B8DB8 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080B8DBC @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r6, _080B8DC0 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080B8DCC
- ldr r4, _080B8DC4 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r6, 0x2]
- adds r0, r2
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r3, [r6, 0x4]
- adds r0, r3
- strh r0, [r5, 0x22]
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- ble _080B8DB2
- movs r1, 0x1
-_080B8DB2:
- strh r1, [r5, 0x2E]
- ldr r0, _080B8DC8 @ =sub_80B8DE8
- b _080B8DDA
- .align 2, 0
-_080B8DB8: .4byte 0x000003ff
-_080B8DBC: .4byte 0xfffffc00
-_080B8DC0: .4byte gBattleAnimArgs
-_080B8DC4: .4byte gBattleAnimAttacker
-_080B8DC8: .4byte sub_80B8DE8
-_080B8DCC:
- ldrh r0, [r6, 0x2]
- strh r0, [r5, 0x20]
- ldrh r0, [r6, 0x4]
- strh r0, [r5, 0x22]
- negs r0, r0
- strh r0, [r5, 0x26]
- ldr r0, _080B8DE4 @ =sub_80B8E24
-_080B8DDA:
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B8DE4: .4byte sub_80B8E24
- thumb_func_end sub_80B8D58
-
- thumb_func_start sub_80B8DE8
-sub_80B8DE8: @ 80B8DE8
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B8E06
- movs r0, 0
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
-_080B8E06:
- ldrh r0, [r2, 0x22]
- subs r0, 0x4
- strh r0, [r2, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x4
- negs r1, r1
- cmp r0, r1
- bge _080B8E1E
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B8E1E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B8DE8
-
- thumb_func_start sub_80B8E24
-sub_80B8E24: @ 80B8E24
- push {lr}
- adds r3, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- cmp r1, 0
- beq _080B8E36
- cmp r1, 0x1
- beq _080B8E4C
- b _080B8E8E
-_080B8E36:
- ldrh r0, [r3, 0x26]
- adds r0, 0x4
- strh r0, [r3, 0x26]
- lsls r0, 16
- cmp r0, 0
- blt _080B8E8E
- strh r1, [r3, 0x26]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- b _080B8E8E
-_080B8E4C:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- cmp r0, 0
- ble _080B8E8E
- movs r0, 0
- strh r0, [r3, 0x30]
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r2, [r1]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _080B8E8E
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080B8E8E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B8E24
-
- thumb_func_start sub_80B8E94
-sub_80B8E94: @ 80B8E94
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B8EB4 @ =gTasks
- adds r1, r0, r1
- ldr r0, _080B8EB8 @ =gBattleAnimArgs
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r0, 0
- bne _080B8EC0
- ldr r0, _080B8EBC @ =sub_80B8ED4
- b _080B8EC2
- .align 2, 0
-_080B8EB4: .4byte gTasks
-_080B8EB8: .4byte gBattleAnimArgs
-_080B8EBC: .4byte sub_80B8ED4
-_080B8EC0:
- ldr r0, _080B8ED0 @ =sub_80B908C
-_080B8EC2:
- str r0, [r1]
- ldr r1, [r1]
- adds r0, r2, 0
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080B8ED0: .4byte sub_80B908C
- thumb_func_end sub_80B8E94
-
- thumb_func_start sub_80B8ED4
-sub_80B8ED4: @ 80B8ED4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B8EF8 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080B8EEE
- b _080B9082
-_080B8EEE:
- lsls r0, 2
- ldr r1, _080B8EFC @ =_080B8F00
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B8EF8: .4byte gTasks
-_080B8EFC: .4byte _080B8F00
- .align 2, 0
-_080B8F00:
- .4byte _080B8F14
- .4byte _080B8F9C
- .4byte _080B8FAC
- .4byte _080B9050
- .4byte _080B9064
-_080B8F14:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldr r0, _080B8F3C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1E]
- cmp r0, 0x1
- bne _080B8F48
- ldr r0, _080B8F40 @ =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r4, 0x20]
- ldr r0, _080B8F44 @ =gBattle_BG1_Y
- b _080B8F50
- .align 2, 0
-_080B8F3C: .4byte gBattleAnimAttacker
-_080B8F40: .4byte gBattle_BG1_X
-_080B8F44: .4byte gBattle_BG1_Y
-_080B8F48:
- ldr r0, _080B8F8C @ =gBattle_BG2_X
- ldrh r0, [r0]
- strh r0, [r4, 0x20]
- ldr r0, _080B8F90 @ =gBattle_BG2_Y
-_080B8F50:
- ldrh r0, [r0]
- strh r0, [r4, 0x22]
- ldr r0, _080B8F94 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r4, 0x24]
- adds r0, 0x20
- strh r0, [r4, 0x26]
- cmp r1, 0
- bge _080B8F72
- movs r0, 0
- strh r0, [r4, 0x24]
-_080B8F72:
- ldr r2, _080B8F98 @ =gSprites
- movs r3, 0x1C
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _080B9056
- .align 2, 0
-_080B8F8C: .4byte gBattle_BG2_X
-_080B8F90: .4byte gBattle_BG2_Y
-_080B8F94: .4byte gBattleAnimAttacker
-_080B8F98: .4byte gSprites
-_080B8F9C:
- ldrb r0, [r4, 0x1E]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- movs r3, 0x26
- ldrsh r2, [r4, r3]
- bl sub_80B92B8
- b _080B9056
-_080B8FAC:
- ldrh r0, [r4, 0xC]
- adds r0, 0x6
- movs r1, 0x7F
- ands r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B8FCE
- movs r0, 0
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
-_080B8FCE:
- ldr r1, _080B8FF0 @ =gSineTable
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- ldrh r3, [r4, 0xE]
- adds r2, r0, r3
- strh r2, [r4, 0x12]
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080B8FF8
- ldr r1, _080B8FF4 @ =gBattle_BG1_Y
- b _080B8FFA
- .align 2, 0
-_080B8FF0: .4byte gSineTable
-_080B8FF4: .4byte gBattle_BG1_Y
-_080B8FF8:
- ldr r1, _080B901C @ =gBattle_BG2_Y
-_080B8FFA:
- ldrh r0, [r4, 0x22]
- subs r0, r2
- strh r0, [r1]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0x3F
- ble _080B9082
- ldrh r0, [r4, 0x24]
- movs r1, 0x78
- subs r2, r1, r0
- strh r2, [r4, 0x12]
- movs r3, 0x1E
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _080B9024
- ldr r1, _080B9020 @ =gBattle_BG1_Y
- b _080B9026
- .align 2, 0
-_080B901C: .4byte gBattle_BG2_Y
-_080B9020: .4byte gBattle_BG1_Y
-_080B9024:
- ldr r1, _080B9048 @ =gBattle_BG2_Y
-_080B9026:
- ldrh r0, [r4, 0x22]
- subs r0, r2
- strh r0, [r1]
- ldr r2, _080B904C @ =gSprites
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r1, 0x20]
- movs r3, 0x88
- lsls r3, 1
- adds r0, r3, 0
- subs r0, r2
- strh r0, [r1, 0x24]
- b _080B9056
- .align 2, 0
-_080B9048: .4byte gBattle_BG2_Y
-_080B904C: .4byte gSprites
-_080B9050:
- ldr r1, _080B9060 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B9056:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B9082
- .align 2, 0
-_080B9060: .4byte gScanlineEffect
-_080B9064:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- ldr r2, _080B9088 @ =gSprites
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080B9082:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9088: .4byte gSprites
- thumb_func_end sub_80B8ED4
-
- thumb_func_start sub_80B908C
-sub_80B908C: @ 80B908C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B90CC @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r3]
- movs r4, 0
- strh r4, [r1, 0x24]
- strh r4, [r1, 0x26]
- ldr r0, _080B90D0 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B90D8
- ldr r0, _080B90D4 @ =gBattle_BG1_Y
- b _080B90DA
- .align 2, 0
-_080B90CC: .4byte gSprites
-_080B90D0: .4byte gBattleAnimAttacker
-_080B90D4: .4byte gBattle_BG1_Y
-_080B90D8:
- ldr r0, _080B90E8 @ =gBattle_BG2_Y
-_080B90DA:
- strh r4, [r0]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B90E8: .4byte gBattle_BG2_Y
- thumb_func_end sub_80B908C
-
- thumb_func_start sub_80B90EC
-sub_80B90EC: @ 80B90EC
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B910C @ =gTasks
- adds r1, r0, r1
- ldr r0, _080B9110 @ =gBattleAnimArgs
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r0, 0
- bne _080B9118
- ldr r0, _080B9114 @ =sub_80B912C
- b _080B911A
- .align 2, 0
-_080B910C: .4byte gTasks
-_080B9110: .4byte gBattleAnimArgs
-_080B9114: .4byte sub_80B912C
-_080B9118:
- ldr r0, _080B9128 @ =sub_80B91B0
-_080B911A:
- str r0, [r1]
- ldr r1, [r1]
- adds r0, r2, 0
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_080B9128: .4byte sub_80B91B0
- thumb_func_end sub_80B90EC
-
- thumb_func_start sub_80B912C
-sub_80B912C: @ 80B912C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B914C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0
- beq _080B9150
- cmp r5, 0x1
- beq _080B91A4
- b _080B91AA
- .align 2, 0
-_080B914C: .4byte gTasks
-_080B9150:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldr r3, _080B91A0 @ =gSprites
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r5, [r0, 0x24]
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r2, [r1, 0x22]
- movs r0, 0xA0
- subs r0, r2
- strh r0, [r1, 0x26]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B91AA
- .align 2, 0
-_080B91A0: .4byte gSprites
-_080B91A4:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B91AA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B912C
-
- thumb_func_start sub_80B91B0
-sub_80B91B0: @ 80B91B0
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B91D4 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bhi _080B92B2
- lsls r0, 2
- ldr r1, _080B91D8 @ =_080B91DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B91D4: .4byte gTasks
-_080B91D8: .4byte _080B91DC
- .align 2, 0
-_080B91DC:
- .4byte _080B91F0
- .4byte _080B9244
- .4byte _080B9252
- .4byte _080B926C
- .4byte _080B92AC
-_080B91F0:
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1C]
- ldr r0, _080B9214 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1E]
- cmp r0, 0x1
- bne _080B921C
- ldr r0, _080B9218 @ =gBattle_BG1_X
- b _080B921E
- .align 2, 0
-_080B9214: .4byte gBattleAnimAttacker
-_080B9218: .4byte gBattle_BG1_X
-_080B921C:
- ldr r0, _080B923C @ =gBattle_BG2_X
-_080B921E:
- ldrh r0, [r0]
- strh r0, [r4, 0x20]
- ldr r0, _080B9240 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r4, 0x24]
- adds r0, 0x20
- strh r0, [r4, 0x26]
- b _080B929A
- .align 2, 0
-_080B923C: .4byte gBattle_BG2_X
-_080B9240: .4byte gBattleAnimAttacker
-_080B9244:
- ldrb r0, [r4, 0x1E]
- movs r1, 0x26
- ldrsh r2, [r4, r1]
- movs r1, 0
- bl sub_80B92B8
- b _080B929A
-_080B9252:
- ldr r2, _080B9268 @ =gSprites
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x60
- strh r1, [r0, 0x26]
- b _080B929A
- .align 2, 0
-_080B9268: .4byte gSprites
-_080B926C:
- ldr r2, _080B92A4 @ =gSprites
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x8
- strh r1, [r0, 0x26]
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x26
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B92B2
- ldr r1, _080B92A8 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B929A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B92B2
- .align 2, 0
-_080B92A4: .4byte gSprites
-_080B92A8: .4byte gScanlineEffect
-_080B92AC:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B92B2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B91B0
-
- thumb_func_start sub_80B92B8
-sub_80B92B8: @ 80B92B8
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r4, r2, 16
- cmp r0, 0x1
- bne _080B92DC
- ldr r0, _080B92D4 @ =gBattle_BG1_X
- ldrh r3, [r0]
- ldr r0, _080B92D8 @ =0x04000014
- b _080B92E2
- .align 2, 0
-_080B92D4: .4byte gBattle_BG1_X
-_080B92D8: .4byte 0x04000014
-_080B92DC:
- ldr r0, _080B9368 @ =gBattle_BG2_X
- ldrh r3, [r0]
- ldr r0, _080B936C @ =0x04000018
-_080B92E2:
- str r0, [sp]
- lsls r0, r1, 16
- cmp r0, 0
- bge _080B92EC
- movs r1, 0
-_080B92EC:
- lsls r2, r1, 16
- lsls r0, r4, 16
- asrs r4, r0, 16
- cmp r2, r0
- bge _080B9318
- ldr r5, _080B9370 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080B92FE:
- asrs r2, 16
- lsls r1, r2, 1
- adds r0, r1, r5
- strh r3, [r0]
- adds r1, r6
- strh r3, [r1]
- adds r2, 0x1
- lsls r2, 16
- lsrs r1, r2, 16
- lsls r2, r1, 16
- asrs r0, r2, 16
- cmp r0, r4
- blt _080B92FE
-_080B9318:
- lsls r1, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- bgt _080B9346
- ldr r4, _080B9370 @ =gScanlineEffectRegBuffers
- lsls r0, r3, 16
- asrs r0, 16
- adds r3, r0, 0
- adds r3, 0xF0
- movs r0, 0xF0
- lsls r0, 3
- adds r5, r4, r0
-_080B9330:
- asrs r2, r1, 16
- lsls r1, r2, 1
- adds r0, r1, r4
- strh r3, [r0]
- adds r1, r5
- strh r3, [r1]
- adds r2, 0x1
- lsls r1, r2, 16
- asrs r0, r1, 16
- cmp r0, 0x9F
- ble _080B9330
-_080B9346:
- ldr r0, _080B9374 @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9368: .4byte gBattle_BG2_X
-_080B936C: .4byte 0x04000018
-_080B9370: .4byte gScanlineEffectRegBuffers
-_080B9374: .4byte 0xa2600001
- thumb_func_end sub_80B92B8
-
- thumb_func_start sub_80B9378
-sub_80B9378: @ 80B9378
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r0, _080B938C @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r7, r0, 0
- cmp r1, 0
- bne _080B9394
- ldr r0, _080B9390 @ =gBattleAnimAttacker
- b _080B9396
- .align 2, 0
-_080B938C: .4byte gBattleAnimArgs
-_080B9390: .4byte gBattleAnimAttacker
-_080B9394:
- ldr r0, _080B93F8 @ =gBattleAnimTarget
-_080B9396:
- ldrb r4, [r0]
- movs r6, 0x18
- adds r1, r7, 0
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- bne _080B93B2
- negs r0, r6
- lsls r0, 16
- lsrs r6, r0, 16
- movs r2, 0x4
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080B93B2:
- adds r0, r4, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r6
- strh r0, [r5, 0x20]
- adds r0, r4, 0
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1E
- strh r0, [r5, 0x22]
- ldrh r1, [r7, 0xA]
- strh r1, [r5, 0x2E]
- ldrh r1, [r7, 0x4]
- ldrh r2, [r5, 0x20]
- adds r1, r2
- strh r1, [r5, 0x32]
- ldrh r1, [r7, 0x6]
- adds r0, r1
- strh r0, [r5, 0x36]
- ldrh r0, [r7, 0x8]
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl sub_8075068
- ldr r0, _080B93FC @ =sub_80B9400
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B93F8: .4byte gBattleAnimTarget
-_080B93FC: .4byte sub_80B9400
- thumb_func_end sub_80B9378
-
- thumb_func_start sub_80B9400
-sub_80B9400: @ 80B9400
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B9414
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B9414:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9400
-
- thumb_func_start sub_80B941C
-sub_80B941C: @ 80B941C
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r0, _080B9430 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B9438
- ldr r0, _080B9434 @ =gBattleAnimAttacker
- b _080B943A
- .align 2, 0
-_080B9430: .4byte gBattleAnimArgs
-_080B9434: .4byte gBattleAnimAttacker
-_080B9438:
- ldr r0, _080B9498 @ =gBattleAnimTarget
-_080B943A:
- ldrb r5, [r0]
- adds r0, r5, 0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B949C @ =0x0000fff0
- adds r0, r2
- ldr r4, _080B94A0 @ =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r1, [r4, r3]
- lsls r1, 5
- adds r0, r1
- strh r0, [r6, 0x20]
- adds r0, r5, 0
- bl sub_807492C
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x20
- strh r0, [r6, 0x22]
- ldrh r2, [r6, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0x2
- ldrsh r0, [r4, r3]
- lsls r0, 3
- adds r1, r0
- ldr r3, _080B94A4 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080B94A8 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r6, 0x4]
- ldr r1, _080B94AC @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x2E]
- ldr r0, _080B94B0 @ =sub_8074C44
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9498: .4byte gBattleAnimTarget
-_080B949C: .4byte 0x0000fff0
-_080B94A0: .4byte gBattleAnimArgs
-_080B94A4: .4byte 0x000003ff
-_080B94A8: .4byte 0xfffffc00
-_080B94AC: .4byte DestroyAnimSprite
-_080B94B0: .4byte sub_8074C44
- thumb_func_end sub_80B941C
-
- thumb_func_start sub_80B94B4
-sub_80B94B4: @ 80B94B4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B94D8 @ =gTasks
- adds r4, r0, r1
- ldr r0, _080B94DC @ =gBattleAnimArgs
- ldrh r2, [r0, 0x2]
- movs r3, 0x2
- ldrsh r1, [r0, r3]
- adds r6, r0, 0
- cmp r1, 0
- beq _080B94E0
- adds r0, r2, 0x3
- b _080B94EC
- .align 2, 0
-_080B94D8: .4byte gTasks
-_080B94DC: .4byte gBattleAnimArgs
-_080B94E0:
- ldr r0, _080B950C @ =gAnimMovePower
- ldrh r0, [r0]
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0x3
-_080B94EC:
- strh r0, [r4, 0x26]
- strh r0, [r4, 0x24]
- adds r1, r6, 0
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0xE]
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _080B9518
- cmp r0, 0x5
- bne _080B9558
- ldr r0, _080B9510 @ =gBattle_BG3_X
- ldrh r0, [r0]
- strh r0, [r4, 0x22]
- ldr r0, _080B9514 @ =sub_80B9584
- b _080B9576
- .align 2, 0
-_080B950C: .4byte gAnimMovePower
-_080B9510: .4byte gBattle_BG3_X
-_080B9514: .4byte sub_80B9584
-_080B9518:
- movs r0, 0
- strh r0, [r4, 0x22]
- movs r5, 0
-_080B951E:
- lsls r0, r5, 24
- lsrs r0, 24
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B9548
- movs r3, 0x22
- ldrsh r0, [r4, r3]
- adds r0, 0x9
- lsls r0, 1
- adds r1, r4, 0
- adds r1, 0x8
- adds r1, r0
- ldr r0, _080B9554 @ =gBattlerSpriteIds
- adds r0, r5, r0
- ldrb r0, [r0]
- strh r0, [r1]
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
-_080B9548:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _080B951E
- b _080B9574
- .align 2, 0
-_080B9554: .4byte gBattlerSpriteIds
-_080B9558:
- ldrb r0, [r6]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x1A]
- cmp r0, 0xFF
- bne _080B9570
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _080B9578
-_080B9570:
- movs r0, 0x1
- strh r0, [r4, 0x22]
-_080B9574:
- ldr r0, _080B9580 @ =sub_80B967C
-_080B9576:
- str r0, [r4]
-_080B9578:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9580: .4byte sub_80B967C
- thumb_func_end sub_80B94B4
-
- thumb_func_start sub_80B9584
-sub_80B9584: @ 80B9584
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B95A8 @ =gTasks
- adds r3, r0, r1
- movs r0, 0x8
- ldrsh r1, [r3, r0]
- cmp r1, 0x1
- beq _080B9608
- cmp r1, 0x1
- bgt _080B95AC
- cmp r1, 0
- beq _080B95B2
- b _080B9674
- .align 2, 0
-_080B95A8: .4byte gTasks
-_080B95AC:
- cmp r1, 0x2
- beq _080B9668
- b _080B9674
-_080B95B2:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B9674
- strh r1, [r3, 0xA]
- ldrh r1, [r3, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080B95DC
- ldr r1, _080B95D8 @ =gBattle_BG3_X
- ldrh r0, [r3, 0x26]
- ldrh r2, [r3, 0x22]
- adds r0, r2
- strh r0, [r1]
- b _080B95E6
- .align 2, 0
-_080B95D8: .4byte gBattle_BG3_X
-_080B95DC:
- ldr r0, _080B9604 @ =gBattle_BG3_X
- ldrh r1, [r3, 0x22]
- ldrh r2, [r3, 0x26]
- subs r1, r2
- strh r1, [r0]
-_080B95E6:
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xE
- ldrsh r1, [r3, r2]
- cmp r0, r1
- bne _080B9674
- movs r0, 0
- strh r0, [r3, 0xC]
- ldrh r0, [r3, 0x24]
- subs r0, 0x1
- strh r0, [r3, 0x24]
- b _080B965C
- .align 2, 0
-_080B9604: .4byte gBattle_BG3_X
-_080B9608:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B9674
- movs r0, 0
- strh r0, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- ands r1, r0
- cmp r1, 0
- bne _080B9634
- ldr r1, _080B9630 @ =gBattle_BG3_X
- ldrh r0, [r3, 0x24]
- ldrh r2, [r3, 0x22]
- adds r0, r2
- strh r0, [r1]
- b _080B963E
- .align 2, 0
-_080B9630: .4byte gBattle_BG3_X
-_080B9634:
- ldr r0, _080B9664 @ =gBattle_BG3_X
- ldrh r1, [r3, 0x22]
- ldrh r2, [r3, 0x24]
- subs r1, r2
- strh r1, [r0]
-_080B963E:
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080B9674
- movs r0, 0
- strh r0, [r3, 0xC]
- ldrh r0, [r3, 0x24]
- subs r0, 0x1
- strh r0, [r3, 0x24]
- lsls r0, 16
- cmp r0, 0
- bne _080B9674
-_080B965C:
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- b _080B9674
- .align 2, 0
-_080B9664: .4byte gBattle_BG3_X
-_080B9668:
- ldr r1, _080B9678 @ =gBattle_BG3_X
- ldrh r0, [r3, 0x22]
- strh r0, [r1]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B9674:
- pop {r0}
- bx r0
- .align 2, 0
-_080B9678: .4byte gBattle_BG3_X
- thumb_func_end sub_80B9584
-
- thumb_func_start sub_80B967C
-sub_80B967C: @ 80B967C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080B96A0 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080B96DC
- cmp r5, 0x1
- bgt _080B96A4
- cmp r5, 0
- beq _080B96AA
- b _080B9756
- .align 2, 0
-_080B96A0: .4byte gTasks
-_080B96A4:
- cmp r5, 0x2
- beq _080B9718
- b _080B9756
-_080B96AA:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B9756
- strh r5, [r4, 0xA]
- adds r0, r4, 0
- bl sub_80B9760
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080B9756
- strh r5, [r4, 0xC]
- ldrh r0, [r4, 0x24]
- subs r0, 0x1
- strh r0, [r4, 0x24]
- b _080B9710
-_080B96DC:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B9756
- strh r5, [r4, 0xA]
- adds r0, r4, 0
- bl sub_80B9760
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080B9756
- strh r5, [r4, 0xC]
- ldrh r0, [r4, 0x24]
- subs r0, 0x1
- strh r0, [r4, 0x24]
- lsls r0, 16
- cmp r0, 0
- bne _080B9756
-_080B9710:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B9756
-_080B9718:
- movs r2, 0
- movs r7, 0x22
- ldrsh r0, [r4, r7]
- cmp r2, r0
- bge _080B9750
- ldr r0, _080B975C @ =gSprites
- mov r12, r0
- adds r5, r4, 0
- adds r5, 0x8
- movs r6, 0
-_080B972C:
- adds r0, r2, 0
- adds r0, 0x9
- lsls r0, 1
- adds r0, r5, r0
- movs r7, 0
- ldrsh r1, [r0, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r12
- strh r6, [r0, 0x24]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- cmp r2, r0
- blt _080B972C
-_080B9750:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080B9756:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B975C: .4byte gSprites
- thumb_func_end sub_80B967C
-
- thumb_func_start sub_80B9760
-sub_80B9760: @ 80B9760
- push {r4-r7,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0xC]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _080B9788
- movs r0, 0x24
- ldrsh r1, [r3, r0]
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- ldrh r2, [r3, 0x24]
- adds r0, r4, 0
- ands r0, r2
- adds r1, r0
- lsls r1, 16
- lsrs r4, r1, 16
- b _080B9798
-_080B9788:
- movs r1, 0x24
- ldrsh r0, [r3, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- negs r0, r0
- lsls r0, 16
- lsrs r4, r0, 16
-_080B9798:
- movs r2, 0
- movs r7, 0x22
- ldrsh r0, [r3, r7]
- cmp r2, r0
- bge _080B97CC
- ldr r6, _080B97D4 @ =gSprites
- adds r5, r3, 0
- adds r5, 0x8
-_080B97A8:
- adds r0, r2, 0
- adds r0, 0x9
- lsls r0, 1
- adds r0, r5, r0
- movs r7, 0
- ldrsh r1, [r0, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r4, [r0, 0x24]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0x22
- ldrsh r0, [r3, r1]
- cmp r2, r0
- blt _080B97A8
-_080B97CC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B97D4: .4byte gSprites
- thumb_func_end sub_80B9760
-
- thumb_func_start sub_80B97D8
-sub_80B97D8: @ 80B97D8
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, _080B97F8 @ =gBattleAnimArgs
- movs r2, 0
- ldr r0, _080B97FC @ =gAnimMovePower
- ldrh r0, [r0]
- cmp r0, 0x63
- bls _080B97EC
- movs r2, 0x1
-_080B97EC:
- strh r2, [r3, 0x1E]
- adds r0, r1, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B97F8: .4byte gBattleAnimArgs
-_080B97FC: .4byte gAnimMovePower
- thumb_func_end sub_80B97D8
-
- thumb_func_start sub_80B9800
-sub_80B9800: @ 80B9800
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _080B9818 @ =gBattleAnimArgs
- ldrh r1, [r2]
- movs r0, 0x1
- ands r0, r1
- adds r6, r2, 0
- cmp r0, 0
- beq _080B9820
- ldr r0, _080B981C @ =gBattleAnimTarget
- b _080B9822
- .align 2, 0
-_080B9818: .4byte gBattleAnimArgs
-_080B981C: .4byte gBattleAnimTarget
-_080B9820:
- ldr r0, _080B9890 @ =gBattleAnimAttacker
-_080B9822:
- ldrb r0, [r0]
- adds r5, r0, 0
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- ble _080B9832
- movs r0, 0x2
- eors r5, r0
-_080B9832:
- ldr r0, _080B9894 @ =sub_80B98A8
- ldrb r1, [r6, 0x2]
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080B9898 @ =gTasks
- adds r4, r0
- adds r0, r5, 0
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x20
- subs r1, r0
- ldr r2, _080B989C @ =0x000001ff
- adds r0, r2, 0
- ands r1, r0
- strh r1, [r4, 0xA]
- adds r0, r5, 0
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x40
- subs r1, r0
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r4, 0xC]
- ldr r2, _080B98A0 @ =gBattle_BG3_X
- ldrh r0, [r4, 0xA]
- strh r0, [r2]
- ldr r0, _080B98A4 @ =gBattle_BG3_Y
- strh r1, [r0]
- ldrh r0, [r6, 0x4]
- strh r0, [r4, 0xE]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9890: .4byte gBattleAnimAttacker
-_080B9894: .4byte sub_80B98A8
-_080B9898: .4byte gTasks
-_080B989C: .4byte 0x000001ff
-_080B98A0: .4byte gBattle_BG3_X
-_080B98A4: .4byte gBattle_BG3_Y
- thumb_func_end sub_80B9800
-
- thumb_func_start sub_80B98A8
-sub_80B98A8: @ 80B98A8
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080B98D8 @ =gTasks
- adds r2, r0, r1
- ldr r0, _080B98DC @ =gBattleAnimArgs
- movs r4, 0xE
- ldrsh r1, [r0, r4]
- movs r4, 0xE
- ldrsh r0, [r2, r4]
- cmp r1, r0
- bne _080B98E8
- ldr r0, _080B98E0 @ =gBattle_BG3_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B98E4 @ =gBattle_BG3_Y
- strh r1, [r0]
- adds r0, r3, 0
- bl DestroyTask
- b _080B98F4
- .align 2, 0
-_080B98D8: .4byte gTasks
-_080B98DC: .4byte gBattleAnimArgs
-_080B98E0: .4byte gBattle_BG3_X
-_080B98E4: .4byte gBattle_BG3_Y
-_080B98E8:
- ldr r1, _080B98FC @ =gBattle_BG3_X
- ldrh r0, [r2, 0xA]
- strh r0, [r1]
- ldr r1, _080B9900 @ =gBattle_BG3_Y
- ldrh r0, [r2, 0xC]
- strh r0, [r1]
-_080B98F4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B98FC: .4byte gBattle_BG3_X
-_080B9900: .4byte gBattle_BG3_Y
- thumb_func_end sub_80B98A8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index fbb7cdc9c..36eacbf17 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -509,7 +509,7 @@ _080F21B2:
movs r0, 0
movs r1, 0
bl DrawDialogueFrame
- ldr r2, _080F2214 @ =gUnknown_8419F54
+ ldr r2, _080F2214 @ =gText_SavingDontTurnOffThePower2
movs r0, 0
str r0, [sp]
movs r0, 0x2
@@ -543,7 +543,7 @@ _080F21B2:
_080F2208: .4byte 0x000001ff
_080F220C: .4byte gDecompressionBuffer
_080F2210: .4byte gUnknown_203AB38
-_080F2214: .4byte gUnknown_8419F54
+_080F2214: .4byte gText_SavingDontTurnOffThePower2
_080F2218: .4byte gTasks
_080F221C: .4byte sub_80F2220
thumb_func_end Task_Hof_InitTeamSaveData
diff --git a/asm/ice.s b/asm/ice.s
index ab26d23e5..a2c8d0472 100644
--- a/asm/ice.s
+++ b/asm/ice.s
@@ -365,7 +365,7 @@ sub_80AF2F0: @ 80AF2F0
ldr r1, _080AF328 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r1, _080AF32C @ =sub_8074AE0
+ ldr r1, _080AF32C @ =TranslateSpriteInGrowingCircleOverDuration
str r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
@@ -375,7 +375,7 @@ sub_80AF2F0: @ 80AF2F0
.align 2, 0
_080AF324: .4byte gBattleAnimArgs
_080AF328: .4byte DestroyAnimSprite
-_080AF32C: .4byte sub_8074AE0
+_080AF32C: .4byte TranslateSpriteInGrowingCircleOverDuration
thumb_func_end sub_80AF2F0
thumb_func_start sub_80AF330
@@ -383,7 +383,7 @@ sub_80AF330: @ 80AF330
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080AF364 @ =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x2
@@ -452,7 +452,7 @@ sub_80AF3B8: @ 80AF3B8
bne _080AF3D4
adds r0, r4, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
b _080AF40A
.align 2, 0
_080AF3D0: .4byte gBattleAnimArgs
@@ -464,7 +464,7 @@ _080AF3D4:
adds r3, r4, 0
adds r3, 0x22
movs r1, 0x1
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldr r0, _080AF420 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -487,7 +487,7 @@ _080AF40A:
ldr r1, _080AF424 @ =sub_80AF42C
adds r0, r4, 0
bl StoreSpriteCallbackInData6
- ldr r0, _080AF428 @ =sub_8074F50
+ ldr r0, _080AF428 @ =RunStoredCallbackWhenAffineAnimEnds
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
@@ -496,7 +496,7 @@ _080AF40A:
_080AF41C: .4byte gBattleAnimTarget
_080AF420: .4byte gBattleAnimAttacker
_080AF424: .4byte sub_80AF42C
-_080AF428: .4byte sub_8074F50
+_080AF428: .4byte RunStoredCallbackWhenAffineAnimEnds
thumb_func_end sub_80AF3B8
thumb_func_start sub_80AF42C
@@ -526,7 +526,7 @@ sub_80AF42C: @ 80AF42C
cmp r0, 0x14
bne _080AF462
adds r0, r3, 0
- bl move_anim_8074EE0
+ bl DestroySpriteAndMatrix
_080AF462:
pop {r0}
bx r0
@@ -538,7 +538,7 @@ sub_80AF468: @ 80AF468
sub sp, 0x10
adds r5, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r6, _080AF4B0 @ =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
@@ -577,7 +577,7 @@ _080AF4B8:
adds r3, r5, 0
adds r3, 0x36
movs r1, 0x1
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
_080AF4CA:
ldr r0, _080AF4E8 @ =gBattleAnimAttacker
ldrb r0, [r0]
@@ -616,7 +616,7 @@ _080AF504:
cmp r4, 0
bge _080AF504
adds r0, r5, 0
- bl sub_8075804
+ bl InitAnimFastLinearTranslationWithSpeed
ldrh r0, [r5, 0x30]
movs r1, 0x1
eors r0, r1
@@ -628,7 +628,7 @@ _080AF526:
movs r0, 0x1
strh r0, [r5, 0x2E]
adds r0, r5, 0
- bl sub_807578C
+ bl AnimFastTranslateLinear
movs r0, 0x20
ldrsh r1, [r5, r0]
movs r2, 0x24
@@ -814,7 +814,7 @@ sub_80AF690: @ 80AF690
movs r0, 0x1
strh r0, [r4, 0x2E]
adds r0, r4, 0
- bl sub_807578C
+ bl AnimFastTranslateLinear
movs r1, 0x20
ldrsh r0, [r4, r1]
movs r2, 0x24
@@ -853,7 +853,7 @@ sub_80AF6D8: @ 80AF6D8
sub sp, 0x10
adds r5, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r1, _080AF71C @ =gBattleAnimArgs
ldrh r0, [r1, 0x8]
strh r0, [r5, 0x2E]
@@ -890,7 +890,7 @@ _080AF724:
adds r3, r5, 0
adds r3, 0x36
movs r1, 0x1
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
_080AF736:
ldr r0, _080AF758 @ =gBattleAnimAttacker
ldrb r0, [r0]
@@ -921,7 +921,7 @@ _080AF76A:
adds r0, r1
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl sub_8075804
+ bl InitAnimFastLinearTranslationWithSpeed
adds r7, r5, 0
adds r7, 0x2E
adds r2, r7, 0
@@ -946,7 +946,7 @@ _080AF79E:
movs r0, 0x1
strh r0, [r5, 0x2E]
adds r0, r5, 0
- bl sub_807578C
+ bl AnimFastTranslateLinear
movs r2, 0x20
ldrsh r1, [r5, r2]
movs r2, 0x24
@@ -1011,7 +1011,7 @@ _080AF818: .4byte sub_80AF81C
sub_80AF81C: @ 80AF81C
push {r4,lr}
adds r4, r0, 0
- bl sub_807578C
+ bl AnimFastTranslateLinear
movs r1, 0x2E
ldrsh r0, [r4, r1]
cmp r0, 0
@@ -1082,7 +1082,7 @@ sub_80AF88C: @ 80AF88C
bne _080AF8B0
adds r0, r4, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
b _080AF8E6
.align 2, 0
_080AF8AC: .4byte gBattleAnimArgs
@@ -1094,7 +1094,7 @@ _080AF8B0:
adds r3, r4, 0
adds r3, 0x22
movs r1, 0
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldr r0, _080AF8F4 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -1152,7 +1152,7 @@ sub_80AF914: @ 80AF914
bne _080AF938
adds r0, r5, 0
movs r1, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
b _080AF976
.align 2, 0
_080AF934: .4byte gBattleAnimArgs
@@ -1164,7 +1164,7 @@ _080AF938:
adds r3, r5, 0
adds r3, 0x22
movs r1, 0
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
@@ -1200,7 +1200,7 @@ _080AF984:
bne _080AF996
adds r0, r5, 0
movs r1, 0
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
b _080AF9D2
_080AF996:
ldr r4, _080AF9BC @ =gBattleAnimTarget
@@ -1210,7 +1210,7 @@ _080AF996:
adds r3, r5, 0
adds r3, 0x22
movs r1, 0
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
@@ -1279,7 +1279,7 @@ _080AFA10:
adds r0, r1
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
movs r0, 0x40
strh r0, [r5, 0x38]
ldr r1, _080AFA48 @ =sub_80AFA4C
@@ -1299,7 +1299,7 @@ _080AFA48: .4byte sub_80AFA4C
sub_80AFA4C: @ 80AFA4C
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
bne _080AFAD6
@@ -1328,7 +1328,7 @@ sub_80AFA4C: @ 80AFA4C
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
movs r1, 0x3
ands r1, r0
lsls r1, 2
@@ -1343,7 +1343,7 @@ _080AFAA8:
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
@@ -1426,7 +1426,7 @@ _080AFB26:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080AFBB0 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
ldr r0, _080AFBB4 @ =gUnknown_83C2CE0
mov r1, sp
ldrb r1, [r1, 0x8]
@@ -1673,14 +1673,14 @@ sub_80AFD4C: @ 80AFD4C
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
- ldr r0, _080AFD7C @ =sub_8075DF4
+ ldr r0, _080AFD7C @ =TranslateAnimSpriteToTargetMonLocation
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080AFD78: .4byte gBattleAnimAttacker
-_080AFD7C: .4byte sub_8075DF4
+_080AFD7C: .4byte TranslateAnimSpriteToTargetMonLocation
thumb_func_end sub_80AFD4C
thumb_func_start sub_80AFD80
@@ -1737,7 +1737,7 @@ _080AFDC2:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080AFE50 @ =gFile_graphics_battle_anims_backgrounds_fog_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
ldr r0, _080AFE54 @ =gUnknown_83C2CE0
mov r1, sp
ldrb r1, [r1, 0x8]
@@ -2015,7 +2015,7 @@ _080B0008:
cmp r0, 0
bne _080B0064
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, _080B00CC @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -2105,7 +2105,7 @@ _080B00F8:
adds r0, r6
strh r0, [r5, 0x36]
ldrb r0, [r4]
- bl sub_8076884
+ bl GetBattlerSpriteBGPriority
lsls r0, 24
lsrs r0, 16
ldrh r1, [r5, 0x3C]
@@ -2123,7 +2123,7 @@ _080B00F8:
strb r0, [r1]
_080B012C:
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldr r0, _080B0144 @ =sub_80B0148
str r0, [r5, 0x1C]
pop {r3}
@@ -2159,7 +2159,7 @@ _080B0168:
b _080B0380
_080B016A:
adds r0, r4, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
ldr r1, _080B0194 @ =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
@@ -2251,13 +2251,13 @@ _080B0202:
ands r0, r1
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
b _080B0380
.align 2, 0
_080B022C: .4byte gSineTable
_080B0230:
adds r0, r4, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
ldr r1, _080B028C @ =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
@@ -2397,7 +2397,7 @@ _080B032A:
_080B0340: .4byte 0x0000fff0
_080B0344:
adds r0, r4, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080B0380
@@ -2420,7 +2420,7 @@ _080B0344:
_080B0372:
adds r0, r4, 0
bl DestroySprite
- ldr r1, _080B0388 @ =gUnknown_2037EE2
+ ldr r1, _080B0388 @ =gAnimVisualTaskCount
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
@@ -2429,7 +2429,7 @@ _080B0380:
pop {r0}
bx r0
.align 2, 0
-_080B0388: .4byte gUnknown_2037EE2
+_080B0388: .4byte gAnimVisualTaskCount
thumb_func_end sub_80B0148
thumb_func_start sub_80B038C
@@ -2610,7 +2610,7 @@ _080B04D0: .4byte gUnknown_83E652C
_080B04D4:
adds r0, r5, 0
movs r1, 0x1
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r0, 16
asrs r0, 16
movs r1, 0x6
@@ -2622,7 +2622,7 @@ _080B04D4:
lsrs r7, r1, 16
adds r0, r5, 0
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r0, 16
asrs r0, 16
movs r1, 0x6
@@ -2634,7 +2634,7 @@ _080B04D4:
_080B050A:
adds r0, r5, 0
movs r1, 0x1
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r0, 16
asrs r0, 16
movs r1, 0x6
@@ -2646,7 +2646,7 @@ _080B050A:
lsrs r7, r1, 16
adds r0, r5, 0
movs r1, 0
- bl sub_8076B2C
+ bl GetBattlerSpriteCoordAttr
lsls r0, 16
asrs r0, 16
movs r1, 0x6
@@ -2904,7 +2904,7 @@ _080B071A:
bl StartSpriteAffineAnim
adds r0, r5, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r6, _080B0780 @ =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
@@ -2938,7 +2938,7 @@ _080B0742:
ldrh r0, [r6, 0xA]
strh r0, [r5, 0x38]
adds r0, r5, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080B078C @ =sub_80B0790
str r0, [r5, 0x1C]
pop {r4-r6}
@@ -2956,14 +2956,14 @@ _080B078C: .4byte sub_80B0790
sub_80B0790: @ 80B0790
push {r4,lr}
adds r4, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080B07B2
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAnim
- ldr r0, _080B07B8 @ =sub_8074F6C
+ ldr r0, _080B07B8 @ =RunStoredCallbackWhenAnimEnds
str r0, [r4, 0x1C]
ldr r1, _080B07BC @ =DestroyAnimSprite
adds r0, r4, 0
@@ -2973,7 +2973,7 @@ _080B07B2:
pop {r0}
bx r0
.align 2, 0
-_080B07B8: .4byte sub_8074F6C
+_080B07B8: .4byte RunStoredCallbackWhenAnimEnds
_080B07BC: .4byte DestroyAnimSprite
thumb_func_end sub_80B0790
@@ -2994,7 +2994,7 @@ sub_80B07C0: @ 80B07C0
strh r0, [r4, 0x4]
adds r0, r4, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
bl Random
movs r5, 0xFF
ands r5, r0
diff --git a/asm/item_menu.s b/asm/item_menu.s
index e58abf87f..9b1ab2492 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -138,18 +138,18 @@ _08107EB0: .4byte gUnknown_203AD10
_08107EB4: .4byte gUnknown_203ACFC
thumb_func_end sub_8107DB4
- thumb_func_start ReturnToBagFromKeyItem
-ReturnToBagFromKeyItem: @ 8107EB8
+ thumb_func_start CB2_BagMenuFromStartMenu
+CB2_BagMenuFromStartMenu: @ 8107EB8
push {lr}
- ldr r2, _08107EC8 @ =sub_80568A8
+ ldr r2, _08107EC8 @ =CB2_ReturnToStartMenu
movs r0, 0
movs r1, 0x3
bl sub_8107DB4
pop {r0}
bx r0
.align 2, 0
-_08107EC8: .4byte sub_80568A8
- thumb_func_end ReturnToBagFromKeyItem
+_08107EC8: .4byte CB2_ReturnToStartMenu
+ thumb_func_end CB2_BagMenuFromStartMenu
thumb_func_start sub_8107ECC
sub_8107ECC: @ 8107ECC
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index 4ddbed23a..94a07fdaf 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -3252,7 +3252,7 @@ _08117384:
lsls r0, 24
lsrs r0, 24
ldr r1, _081173BC @ =CB2_ReturnToField
- bl sub_808B700
+ bl InitLinkPartnerTrainerCard
_081173A2:
bl RunTasks
bl RunTextPrinters
@@ -5840,7 +5840,7 @@ _08118AD4:
bl sub_811BEDC
bl _081198DC
_08118ADE:
- ldr r0, _08118B00 @ =sub_806F1F0
+ ldr r0, _08118B00 @ =Task_StartMenuHandleInput
bl FuncIsActiveTask
lsls r0, 24
cmp r0, 0
@@ -5854,7 +5854,7 @@ _08118AEE:
movs r0, 0x4
bl _081198DA
.align 2, 0
-_08118B00: .4byte sub_806F1F0
+_08118B00: .4byte Task_StartMenuHandleInput
_08118B04:
bl sub_811A0E0
movs r3, 0x2
@@ -6975,7 +6975,7 @@ _081194DC:
movs r0, 0x2F
bl sub_8118664
_081194E4:
- bl sub_80F7998
+ bl DestroyHelpMessageWindow_
b _081198DC
.align 2, 0
_081194EC: .4byte gUnknown_8458B44
@@ -7171,7 +7171,7 @@ _08119670:
_0811967A:
movs r0, 0x1
bl sub_811B258
- bl sub_80F7998
+ bl DestroyHelpMessageWindow_
movs r0, 0x4
b _081198DA
.align 2, 0
@@ -8482,7 +8482,7 @@ _0811A0B0: .4byte gTasks+0x8
sub_811A0B4: @ 811A0B4
push {r4,lr}
adds r4, r0, 0
- bl sub_80F6E9C
+ bl LoadStdWindowFrameGfx
movs r0, 0
movs r1, 0x1
bl DrawDialogueFrame
@@ -8528,7 +8528,7 @@ sub_811A0F8: @ 811A0F8
beq _0811A130
b _0811A142
_0811A10A:
- bl sub_80F6E9C
+ bl LoadStdWindowFrameGfx
movs r0, 0
movs r1, 0x1
bl DrawDialogueFrame
diff --git a/asm/mail.s b/asm/mail.s
index 23aba36f6..e5b265df2 100644
--- a/asm/mail.s
+++ b/asm/mail.s
@@ -204,7 +204,7 @@ _080BED8C:
movs r0, 0
movs r1, 0
bl SetGpuReg
- ldr r0, _080BEDB0 @ =gUnknown_203AAC4
+ ldr r0, _080BEDB0 @ =gPlayerPcMenuManager
ldrb r0, [r0, 0x9]
cmp r0, 0
bne _080BEDB4
@@ -212,7 +212,7 @@ _080BED8C:
bl HelpSystem_SetSomeVariable2
b _080BF0F4
.align 2, 0
-_080BEDB0: .4byte gUnknown_203AAC4
+_080BEDB0: .4byte gPlayerPcMenuManager
_080BEDB4:
movs r0, 0x1E
bl HelpSystem_SetSomeVariable2
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
index 339af1a55..817d215a0 100644
--- a/asm/naming_screen.s
+++ b/asm/naming_screen.s
@@ -491,7 +491,7 @@ sub_809DD60: @ 809DD60
bl CreateTask
ldr r0, _0809DD84 @ =sub_809FB70
bl SetMainCallback2
- bl sub_812B234
+ bl HelpSystem_BackupSomeVariable
movs r0, 0x3
bl HelpSystem_SetSomeVariable2
pop {r0}
@@ -868,7 +868,7 @@ _0809E06C:
ldr r0, [r4]
bl Free
str r5, [r4]
- bl sub_812B248
+ bl HelpSystem_RestoreSomeVariable
_0809E096:
movs r0, 0
pop {r4,r5}
@@ -4490,7 +4490,7 @@ sub_809FC90: @ 809FC90
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FCB4 @ =sub_80568A8
+ ldr r0, _0809FCB4 @ =CB2_ReturnToStartMenu
str r0, [sp, 0x4]
movs r0, 0
movs r3, 0
@@ -4500,7 +4500,7 @@ sub_809FC90: @ 809FC90
bx r0
.align 2, 0
_0809FCB0: .4byte gSaveBlock2Ptr
-_0809FCB4: .4byte sub_80568A8
+_0809FCB4: .4byte CB2_ReturnToStartMenu
thumb_func_end sub_809FC90
thumb_func_start sub_809FCB8
@@ -4512,7 +4512,7 @@ sub_809FCB8: @ 809FCB8
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FCDC @ =sub_80568A8
+ ldr r0, _0809FCDC @ =CB2_ReturnToStartMenu
str r0, [sp, 0x4]
movs r0, 0x1
movs r3, 0
@@ -4522,7 +4522,7 @@ sub_809FCB8: @ 809FCB8
bx r0
.align 2, 0
_0809FCD8: .4byte gSaveBlock2Ptr
-_0809FCDC: .4byte sub_80568A8
+_0809FCDC: .4byte CB2_ReturnToStartMenu
thumb_func_end sub_809FCB8
thumb_func_start sub_809FCE0
@@ -4534,7 +4534,7 @@ sub_809FCE0: @ 809FCE0
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FD04 @ =sub_80568A8
+ ldr r0, _0809FD04 @ =CB2_ReturnToStartMenu
str r0, [sp, 0x4]
movs r0, 0x2
movs r3, 0
@@ -4544,7 +4544,7 @@ sub_809FCE0: @ 809FCE0
bx r0
.align 2, 0
_0809FD00: .4byte gSaveBlock2Ptr
-_0809FD04: .4byte sub_80568A8
+_0809FD04: .4byte CB2_ReturnToStartMenu
thumb_func_end sub_809FCE0
thumb_func_start sub_809FD08
@@ -4556,7 +4556,7 @@ sub_809FD08: @ 809FD08
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FD2C @ =sub_80568A8
+ ldr r0, _0809FD2C @ =CB2_ReturnToStartMenu
str r0, [sp, 0x4]
movs r0, 0x3
movs r3, 0
@@ -4566,7 +4566,7 @@ sub_809FD08: @ 809FD08
bx r0
.align 2, 0
_0809FD28: .4byte gSaveBlock2Ptr
-_0809FD2C: .4byte sub_80568A8
+_0809FD2C: .4byte CB2_ReturnToStartMenu
thumb_func_end sub_809FD08
thumb_func_start sub_809FD30
@@ -4578,7 +4578,7 @@ sub_809FD30: @ 809FD30
ldrb r2, [r1, 0x8]
movs r0, 0
str r0, [sp]
- ldr r0, _0809FD54 @ =sub_80568A8
+ ldr r0, _0809FD54 @ =CB2_ReturnToStartMenu
str r0, [sp, 0x4]
movs r0, 0x4
movs r3, 0
@@ -4588,7 +4588,7 @@ sub_809FD30: @ 809FD30
bx r0
.align 2, 0
_0809FD50: .4byte gSaveBlock2Ptr
-_0809FD54: .4byte sub_80568A8
+_0809FD54: .4byte CB2_ReturnToStartMenu
thumb_func_end sub_809FD30
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/normal.s b/asm/normal.s
deleted file mode 100644
index 75c4dcf6e..000000000
--- a/asm/normal.s
+++ /dev/null
@@ -1,1978 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B9904
-sub_80B9904: @ 80B9904
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B993C @ =gBattleAnimArgs
- ldrh r0, [r5]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldr r0, _080B9940 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080B9944
- ldrh r0, [r5, 0x6]
- negs r0, r0
- strh r0, [r4, 0x30]
- movs r0, 0x1
- strh r0, [r4, 0x36]
- b _080B9952
- .align 2, 0
-_080B993C: .4byte gBattleAnimArgs
-_080B9940: .4byte gBattleAnimAttacker
-_080B9944:
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x30]
- strh r1, [r4, 0x36]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080B9952:
- ldr r0, _080B9968 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x8]
- strh r0, [r4, 0x34]
- ldr r1, _080B996C @ =sub_80B9970
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9968: .4byte gBattleAnimArgs
-_080B996C: .4byte sub_80B9970
- thumb_func_end sub_80B9904
-
- thumb_func_start sub_80B9970
-sub_80B9970: @ 80B9970
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x1E
- bl Cos
- strh r0, [r4, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- cmp r0, 0x7F
- bhi _080B99A2
- ldrb r0, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x5]
- b _080B99AA
-_080B99A2:
- ldrb r0, [r4, 0x5]
- movs r1, 0xC
- orrs r0, r1
- strb r0, [r4, 0x5]
-_080B99AA:
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080B99CE
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B99CE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9970
-
- thumb_func_start sub_80B99D4
-sub_80B99D4: @ 80B99D4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r4, _080B9A0C @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r4, r1]
- bl sub_80B9A14
- movs r1, 0x2
- ldrsb r1, [r4, r1]
- ldrb r2, [r4, 0x4]
- ldrb r3, [r4, 0x6]
- ldrh r4, [r4, 0x8]
- str r4, [sp]
- bl BeginNormalPaletteFade
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B9A10 @ =sub_80B9A5C
- str r0, [r5, 0x1C]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9A0C: .4byte gBattleAnimArgs
-_080B9A10: .4byte sub_80B9A5C
- thumb_func_end sub_80B99D4
-
- thumb_func_start sub_80B9A14
-sub_80B9A14: @ 80B9A14
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- lsls r0, 16
- lsrs r0, 16
- movs r4, 0x1
- mov r8, r0
- mov r1, r8
- ands r1, r4
- mov r8, r1
- lsls r0, 16
- asrs r1, r0, 17
- ands r1, r4
- asrs r2, r0, 18
- ands r2, r4
- asrs r3, r0, 19
- ands r3, r4
- asrs r6, r0, 20
- ands r6, r4
- asrs r5, r0, 21
- ands r5, r4
- asrs r0, 22
- ands r0, r4
- str r6, [sp]
- str r5, [sp, 0x4]
- str r0, [sp, 0x8]
- mov r0, r8
- bl sub_8075BE8
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B9A14
-
- thumb_func_start sub_80B9A5C
-sub_80B9A5C: @ 80B9A5C
- push {lr}
- adds r2, r0, 0
- ldr r0, _080B9A78 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9A72
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B9A72:
- pop {r0}
- bx r0
- .align 2, 0
-_080B9A78: .4byte gPaletteFade
- thumb_func_end sub_80B9A5C
-
- thumb_func_start sub_80B9A7C
-sub_80B9A7C: @ 80B9A7C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B9AC8 @ =gBattleAnimArgs
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x2E]
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x34]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r5, 0x38]
- ldrh r0, [r4, 0xC]
- strh r0, [r5, 0x3A]
- ldrh r0, [r4]
- strh r0, [r5, 0x3C]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- bl sub_80B9A14
- ldrb r1, [r4, 0x8]
- ldrh r2, [r4, 0x6]
- bl BlendPalettes
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B9ACC @ =sub_80B9AD0
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9AC8: .4byte gBattleAnimArgs
-_080B9ACC: .4byte sub_80B9AD0
- thumb_func_end sub_80B9A7C
-
- thumb_func_start sub_80B9AD0
-sub_80B9AD0: @ 80B9AD0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080B9AE4
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- b _080B9B54
-_080B9AE4:
- ldr r0, _080B9B00 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9B54
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B9B08
- ldr r0, _080B9B04 @ =sub_80B9B5C
- str r0, [r4, 0x1C]
- b _080B9B54
- .align 2, 0
-_080B9B00: .4byte gPaletteFade
-_080B9B04: .4byte sub_80B9B5C
-_080B9B08:
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- bl sub_80B9A14
- adds r3, r0, 0
- ldrh r1, [r4, 0x30]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080B9B2E
- ldrh r1, [r4, 0x36]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x34]
- adds r0, r3, 0
- bl BlendPalettes
- b _080B9B3C
-_080B9B2E:
- ldrh r1, [r4, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x38]
- adds r0, r3, 0
- bl BlendPalettes
-_080B9B3C:
- ldrh r0, [r4, 0x30]
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- eors r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x32]
- subs r0, 0x1
- strh r0, [r4, 0x32]
-_080B9B54:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9AD0
-
- thumb_func_start sub_80B9B5C
-sub_80B9B5C: @ 80B9B5C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B9B88 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9B82
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- bl sub_80B9A14
- movs r1, 0
- movs r2, 0
- bl BlendPalettes
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B9B82:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9B88: .4byte gPaletteFade
- thumb_func_end sub_80B9B5C
-
- thumb_func_start sub_80B9B8C
-sub_80B9B8C: @ 80B9B8C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080B9BD0 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- movs r2, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r2, [r4, 0x2E]
- movs r0, 0xA
- strh r0, [r4, 0x30]
- movs r0, 0x8
- strh r0, [r4, 0x32]
- movs r0, 0x28
- strh r0, [r4, 0x34]
- movs r0, 0x70
- strh r0, [r4, 0x36]
- strh r2, [r4, 0x38]
- ldr r1, _080B9BD4 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, _080B9BD8 @ =sub_8074AE0
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9BD0: .4byte gBattleAnimArgs
-_080B9BD4: .4byte move_anim_8074EE0
-_080B9BD8: .4byte sub_8074AE0
- thumb_func_end sub_80B9B8C
-
- thumb_func_start sub_80B9BDC
-sub_80B9BDC: @ 80B9BDC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B9C20 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r3, _080B9C24 @ =gBattleAnimArgs
- ldrh r1, [r3]
- movs r5, 0
- strh r1, [r4, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r4, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r4, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r4, 0xE]
- ldrh r2, [r3, 0x8]
- strh r2, [r4, 0x10]
- ldrh r1, [r3, 0xA]
- strh r1, [r4, 0x12]
- strh r5, [r4, 0x18]
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0
- bl sub_80B9C2C
- ldr r0, _080B9C28 @ =sub_80B9C7C
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9C20: .4byte gTasks
-_080B9C24: .4byte gBattleAnimArgs
-_080B9C28: .4byte sub_80B9C7C
- thumb_func_end sub_80B9BDC
-
- thumb_func_start sub_80B9C2C
-sub_80B9C2C: @ 80B9C2C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r1, _080B9C78 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- bl sub_80B9A14
- movs r1, 0xA
- ldrsb r1, [r4, r1]
- ldrh r2, [r4, 0x12]
- str r2, [sp]
- adds r2, r5, 0
- adds r3, r6, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x18]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x18]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9C78: .4byte gTasks
- thumb_func_end sub_80B9C2C
-
- thumb_func_start sub_80B9C7C
-sub_80B9C7C: @ 80B9C7C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- ldr r0, _080B9CB4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9CDE
- ldr r1, _080B9CB8 @ =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- adds r6, r1, 0
- adds r5, r2, 0
- cmp r0, 0
- ble _080B9CD8
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080B9CBC
- ldrb r1, [r3, 0xE]
- ldrb r2, [r3, 0x10]
- b _080B9CC0
- .align 2, 0
-_080B9CB4: .4byte gPaletteFade
-_080B9CB8: .4byte gTasks
-_080B9CBC:
- ldrb r1, [r3, 0x10]
- ldrb r2, [r3, 0xE]
-_080B9CC0:
- adds r0, r5, r4
- lsls r0, 3
- adds r0, r6
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0x1
- bne _080B9CD0
- movs r2, 0
-_080B9CD0:
- adds r0, r4, 0
- bl sub_80B9C2C
- b _080B9CDE
-_080B9CD8:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080B9CDE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9C7C
-
- thumb_func_start sub_80B9CE4
-sub_80B9CE4: @ 80B9CE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r3, _080B9D88 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r3
- ldr r2, _080B9D8C @ =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r0, 0x8]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0xA]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0xC]
- ldrh r1, [r2, 0x6]
- strh r1, [r0, 0xE]
- ldrh r1, [r2, 0x8]
- strh r1, [r0, 0x10]
- ldrh r1, [r2, 0xA]
- strh r1, [r0, 0x12]
- strh r5, [r0, 0x18]
- movs r4, 0
- ldr r0, _080B9D90 @ =gBattlersCount
- ldrb r1, [r0]
- mov r9, r3
- mov r8, r2
- cmp r5, r1
- bge _080B9D4C
- ldr r0, _080B9D94 @ =gBattleAnimAttacker
- ldrb r3, [r0]
- ldr r7, _080B9D98 @ =gBattleAnimTarget
- movs r0, 0x1
- mov r12, r0
- adds r2, r1, 0
-_080B9D32:
- cmp r4, r3
- beq _080B9D46
- ldrb r1, [r7]
- cmp r4, r1
- beq _080B9D46
- adds r1, r4, 0
- adds r1, 0x10
- mov r0, r12
- lsls r0, r1
- orrs r5, r0
-_080B9D46:
- adds r4, 0x1
- cmp r4, r2
- blt _080B9D32
-_080B9D4C:
- mov r2, r8
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _080B9D5A
- movs r0, 0xE
- orrs r5, r0
-_080B9D5A:
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- add r4, r9
- lsrs r0, r5, 16
- strh r0, [r4, 0x1A]
- movs r0, 0xFF
- ands r5, r0
- strh r5, [r4, 0x1C]
- ldrb r2, [r4, 0x10]
- adds r0, r6, 0
- movs r1, 0
- bl sub_80B9DA0
- ldr r0, _080B9D9C @ =sub_80B9DF0
- str r0, [r4]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9D88: .4byte gTasks
-_080B9D8C: .4byte gBattleAnimArgs
-_080B9D90: .4byte gBattlersCount
-_080B9D94: .4byte gBattleAnimAttacker
-_080B9D98: .4byte gBattleAnimTarget
-_080B9D9C: .4byte sub_80B9DF0
- thumb_func_end sub_80B9CE4
-
- thumb_func_start sub_80B9DA0
-sub_80B9DA0: @ 80B9DA0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r3, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r1, _080B9DEC @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrh r0, [r4, 0x1A]
- lsls r0, 16
- ldrh r1, [r4, 0x1C]
- orrs r0, r1
- movs r1, 0xA
- ldrsb r1, [r4, r1]
- ldrh r2, [r4, 0x12]
- str r2, [sp]
- adds r2, r5, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x18]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x18]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9DEC: .4byte gTasks
- thumb_func_end sub_80B9DA0
-
- thumb_func_start sub_80B9DF0
-sub_80B9DF0: @ 80B9DF0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- ldr r0, _080B9E28 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9E52
- ldr r1, _080B9E2C @ =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- adds r6, r1, 0
- adds r5, r2, 0
- cmp r0, 0
- ble _080B9E4C
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080B9E30
- ldrb r1, [r3, 0xE]
- ldrb r2, [r3, 0x10]
- b _080B9E34
- .align 2, 0
-_080B9E28: .4byte gPaletteFade
-_080B9E2C: .4byte gTasks
-_080B9E30:
- ldrb r1, [r3, 0x10]
- ldrb r2, [r3, 0xE]
-_080B9E34:
- adds r0, r5, r4
- lsls r0, 3
- adds r0, r6
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0x1
- bne _080B9E44
- movs r2, 0
-_080B9E44:
- adds r0, r4, 0
- bl sub_80B9DA0
- b _080B9E52
-_080B9E4C:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080B9E52:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9DF0
-
- thumb_func_start sub_80B9E58
-sub_80B9E58: @ 80B9E58
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B9E9C @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r3, _080B9EA0 @ =gBattleAnimArgs
- ldrh r1, [r3]
- movs r5, 0
- strh r1, [r4, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r4, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r4, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r4, 0xE]
- ldrh r2, [r3, 0x8]
- strh r2, [r4, 0x10]
- ldrh r1, [r3, 0xA]
- strh r1, [r4, 0x12]
- strh r5, [r4, 0x18]
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0
- bl sub_80B9EA8
- ldr r0, _080B9EA4 @ =sub_80B9F04
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9E9C: .4byte gTasks
-_080B9EA0: .4byte gBattleAnimArgs
-_080B9EA4: .4byte sub_80B9F04
- thumb_func_end sub_80B9E58
-
- thumb_func_start sub_80B9EA8
-sub_80B9EA8: @ 80B9EA8
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r1, _080B9F00 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrh r0, [r4, 0x8]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r2, 0x1
- lsls r2, r0
- movs r1, 0xA
- ldrsb r1, [r4, r1]
- ldrh r0, [r4, 0x12]
- str r0, [sp]
- adds r0, r2, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0xC]
- subs r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x18]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x18]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9F00: .4byte gTasks
- thumb_func_end sub_80B9EA8
-
- thumb_func_start sub_80B9F04
-sub_80B9F04: @ 80B9F04
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- ldr r0, _080B9F3C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B9F66
- ldr r1, _080B9F40 @ =gTasks
- lsls r2, r3, 2
- adds r0, r2, r3
- lsls r0, 3
- adds r3, r0, r1
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- adds r6, r1, 0
- adds r5, r2, 0
- cmp r0, 0
- ble _080B9F60
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080B9F44
- ldrb r1, [r3, 0xE]
- ldrb r2, [r3, 0x10]
- b _080B9F48
- .align 2, 0
-_080B9F3C: .4byte gPaletteFade
-_080B9F40: .4byte gTasks
-_080B9F44:
- ldrb r1, [r3, 0x10]
- ldrb r2, [r3, 0xE]
-_080B9F48:
- adds r0, r5, r4
- lsls r0, 3
- adds r0, r6
- movs r3, 0xC
- ldrsh r0, [r0, r3]
- cmp r0, 0x1
- bne _080B9F58
- movs r2, 0
-_080B9F58:
- adds r0, r4, 0
- bl sub_80B9EA8
- b _080B9F66
-_080B9F60:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080B9F66:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B9F04
-
- thumb_func_start sub_80B9F6C
-sub_80B9F6C: @ 80B9F6C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080B9FCC @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r5, _080B9FD0 @ =gBattleAnimArgs
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x8]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0xA]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0xC]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0xE]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x10]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x12]
- ldrh r0, [r5, 0xC]
- strh r0, [r4, 0x14]
- ldrh r0, [r5]
- strh r0, [r4, 0x16]
- ldrh r0, [r5]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- ldrb r3, [r5, 0x8]
- ldrh r0, [r5, 0x6]
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0
- adds r2, r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080B9FD4 @ =sub_80B9FD8
- str r0, [r4]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9FCC: .4byte gTasks
-_080B9FD0: .4byte gBattleAnimArgs
-_080B9FD4: .4byte sub_80B9FD8
- thumb_func_end sub_80B9F6C
-
- thumb_func_start sub_80B9FD8
-sub_80B9FD8: @ 80B9FD8
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B9FFC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x8]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080BA000
- subs r0, r1, 0x1
- strh r0, [r4, 0x8]
- b _080BA084
- .align 2, 0
-_080B9FFC: .4byte gTasks
-_080BA000:
- ldr r0, _080BA01C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BA084
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080BA024
- ldr r0, _080BA020 @ =sub_80BA090
- str r0, [r4]
- b _080BA084
- .align 2, 0
-_080BA01C: .4byte gPaletteFade
-_080BA020: .4byte sub_80BA090
-_080BA024:
- ldrh r0, [r4, 0x16]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r2, 0x1
- lsls r2, r0
- ldrh r1, [r4, 0xA]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080BA052
- ldrb r3, [r4, 0x10]
- ldrh r0, [r4, 0xE]
- str r0, [sp]
- adds r0, r2, 0
- movs r1, 0
- adds r2, r3, 0
- bl BeginNormalPaletteFade
- b _080BA062
-_080BA052:
- ldrb r3, [r4, 0x14]
- ldrh r0, [r4, 0x12]
- str r0, [sp]
- adds r0, r2, 0
- movs r1, 0
- adds r2, r3, 0
- bl BeginNormalPaletteFade
-_080BA062:
- ldr r0, _080BA08C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xA]
- movs r3, 0x80
- lsls r3, 1
- adds r2, r3, 0
- eors r0, r2
- strh r0, [r1, 0xA]
- movs r2, 0xFF
- ands r0, r2
- strh r0, [r1, 0x8]
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
-_080BA084:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA08C: .4byte gTasks
- thumb_func_end sub_80B9FD8
-
- thumb_func_start sub_80BA090
-sub_80BA090: @ 80BA090
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BA0E0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080BA0D6
- ldr r1, _080BA0E4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x16]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- str r5, [sp]
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl BeginNormalPaletteFade
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080BA0D6:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA0E0: .4byte gPaletteFade
-_080BA0E4: .4byte gTasks
- thumb_func_end sub_80BA090
-
- thumb_func_start sub_80BA0E8
-sub_80BA0E8: @ 80BA0E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r2, 0
- ldr r0, _080BA160 @ =gBattleAnimAttacker
- ldrb r6, [r0]
- ldr r0, _080BA164 @ =gBattleAnimTarget
- ldrb r7, [r0]
- ldr r4, _080BA168 @ =gBattleAnimArgs
- ldrh r1, [r4]
- movs r5, 0x80
- lsls r5, 1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA122
- str r2, [sp]
- str r2, [sp, 0x4]
- str r2, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0
- bl sub_8075BE8
- adds r2, r0, 0
-_080BA122:
- ldrh r1, [r4, 0x2]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA134
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r6
- orrs r2, r0
-_080BA134:
- ldrh r1, [r4, 0x4]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA146
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r7
- orrs r2, r0
-_080BA146:
- adds r0, r2, 0
- bl InvertPlttBuffer
- mov r0, r8
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA160: .4byte gBattleAnimAttacker
-_080BA164: .4byte gBattleAnimTarget
-_080BA168: .4byte gBattleAnimArgs
- thumb_func_end sub_80BA0E8
-
- thumb_func_start sub_80BA16C
-sub_80BA16C: @ 80BA16C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r5, 0
- ldr r1, _080BA260 @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BA1AE
- ldr r1, _080BA264 @ =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0xC]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0xE]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x10]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0xA]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x12]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x14]
- ldrh r0, [r1, 0xC]
- strh r0, [r4, 0x16]
-_080BA1AE:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldr r0, _080BA268 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- mov r9, r0
- ldr r0, _080BA26C @ =gBattleAnimTarget
- ldrb r0, [r0]
- mov r10, r0
- ldrh r1, [r4, 0xC]
- movs r7, 0x80
- lsls r7, 1
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA1D0
- ldr r5, _080BA270 @ =0x0000ffff
-_080BA1D0:
- movs r6, 0x1
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA200
- ldr r2, _080BA274 @ =gSprites
- ldr r0, _080BA278 @ =gHealthboxSpriteIds
- add r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x14
- adds r0, r2
- ldr r0, [r0]
- ldrh r0, [r0, 0x2]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r1, r6, 0
- lsls r1, r0
- lsls r1, 16
- orrs r5, r1
-_080BA200:
- ldrh r1, [r4, 0xE]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA214
- adds r0, r6, 0
- mov r2, r9
- lsls r0, r2
- lsls r0, 16
- orrs r5, r0
-_080BA214:
- ldrh r1, [r4, 0x10]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080BA228
- adds r0, r6, 0
- mov r1, r10
- lsls r0, r1
- lsls r0, 16
- orrs r5, r0
-_080BA228:
- movs r1, 0x12
- ldrsb r1, [r4, r1]
- movs r2, 0x14
- ldrsb r2, [r4, r2]
- movs r3, 0x16
- ldrsb r3, [r4, r3]
- adds r0, r5, 0
- bl TintPlttBuffer
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080BA252
- adds r0, r5, 0
- bl UnfadePlttBuffer
- mov r0, r8
- bl DestroyAnimVisualTask
-_080BA252:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA260: .4byte gTasks
-_080BA264: .4byte gBattleAnimArgs
-_080BA268: .4byte gBattleAnimAttacker
-_080BA26C: .4byte gBattleAnimTarget
-_080BA270: .4byte 0x0000ffff
-_080BA274: .4byte gSprites
-_080BA278: .4byte gHealthboxSpriteIds
- thumb_func_end sub_80BA16C
-
- thumb_func_start sub_80BA27C
-sub_80BA27C: @ 80BA27C
- push {r4,lr}
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080BA2B0 @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x34]
- movs r2, 0x6
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- beq _080BA2C4
- cmp r0, 0x1
- bgt _080BA2B4
- cmp r0, 0
- beq _080BA2BA
- b _080BA2DC
- .align 2, 0
-_080BA2B0: .4byte gBattleAnimArgs
-_080BA2B4:
- cmp r0, 0x2
- beq _080BA2CC
- b _080BA2DC
-_080BA2BA:
- ldr r1, _080BA2C0 @ =gBattle_BG3_X
- b _080BA2CE
- .align 2, 0
-_080BA2C0: .4byte gBattle_BG3_X
-_080BA2C4:
- ldr r1, _080BA2C8 @ =gBattle_BG3_Y
- b _080BA2CE
- .align 2, 0
-_080BA2C8: .4byte gBattle_BG3_Y
-_080BA2CC:
- ldr r1, _080BA2D8 @ =gSpriteCoordOffsetX
-_080BA2CE:
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- b _080BA2E4
- .align 2, 0
-_080BA2D8: .4byte gSpriteCoordOffsetX
-_080BA2DC:
- ldr r1, _080BA314 @ =gSpriteCoordOffsetY
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
-_080BA2E4:
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- lsls r0, 16
- orrs r1, r0
- ldrh r0, [r1]
- strh r0, [r4, 0x36]
- ldr r0, _080BA318 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x6]
- strh r0, [r4, 0x38]
- subs r0, 0x2
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080BA308
- bl sub_80BA3CC
-_080BA308:
- ldr r0, _080BA31C @ =sub_80BA320
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA314: .4byte gSpriteCoordOffsetY
-_080BA318: .4byte gBattleAnimArgs
-_080BA31C: .4byte sub_80BA320
- thumb_func_end sub_80BA27C
-
- thumb_func_start sub_80BA320
-sub_80BA320: @ 80BA320
- push {r4-r7,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x34]
- movs r2, 0x34
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _080BA362
- subs r0, r1, 0x1
- strh r0, [r3, 0x34]
- ldrh r1, [r3, 0x30]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _080BA342
- subs r0, r1, 0x1
- strh r0, [r3, 0x30]
- b _080BA3BA
-_080BA342:
- ldrh r0, [r3, 0x32]
- strh r0, [r3, 0x30]
- movs r0, 0x3A
- ldrsh r1, [r3, r0]
- movs r2, 0x3C
- ldrsh r0, [r3, r2]
- lsls r0, 16
- orrs r1, r0
- ldrh r0, [r3, 0x2E]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- ldrh r0, [r3, 0x2E]
- negs r0, r0
- strh r0, [r3, 0x2E]
- b _080BA3BA
-_080BA362:
- movs r0, 0x3A
- ldrsh r1, [r3, r0]
- movs r2, 0x3C
- ldrsh r0, [r3, r2]
- lsls r0, 16
- orrs r1, r0
- ldrh r0, [r3, 0x36]
- strh r0, [r1]
- ldrh r0, [r3, 0x38]
- subs r0, 0x2
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080BA3B4
- movs r4, 0
- ldr r5, _080BA3C0 @ =gBattlersCount
- ldrb r0, [r5]
- cmp r4, r0
- bcs _080BA3B4
- ldr r2, _080BA3C4 @ =gSprites
- mov r12, r2
- ldr r6, _080BA3C8 @ =gBattlerSpriteIds
- movs r7, 0x3
- negs r7, r7
-_080BA392:
- adds r0, r4, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r5]
- cmp r4, r0
- bcc _080BA392
-_080BA3B4:
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080BA3BA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA3C0: .4byte gBattlersCount
-_080BA3C4: .4byte gSprites
-_080BA3C8: .4byte gBattlerSpriteIds
- thumb_func_end sub_80BA320
-
- thumb_func_start sub_80BA3CC
-sub_80BA3CC: @ 80BA3CC
- push {r4-r6,lr}
- ldr r6, _080BA440 @ =gSprites
- ldr r4, _080BA444 @ =gBattlerSpriteIds
- ldr r5, _080BA448 @ =gBattleAnimAttacker
- ldrb r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x3
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r3, _080BA44C @ =gBattleAnimTarget
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- ldr r0, _080BA450 @ =gBattleAnimArgs
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x2
- bne _080BA454
- ldrb r0, [r5]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- b _080BA470
- .align 2, 0
-_080BA440: .4byte gSprites
-_080BA444: .4byte gBattlerSpriteIds
-_080BA448: .4byte gBattleAnimAttacker
-_080BA44C: .4byte gBattleAnimTarget
-_080BA450: .4byte gBattleAnimArgs
-_080BA454:
- cmp r0, 0
- bne _080BA45C
- ldrb r0, [r5]
- b _080BA45E
-_080BA45C:
- ldrb r0, [r3]
-_080BA45E:
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x2
-_080BA470:
- orrs r1, r2
- strb r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BA3CC
-
- thumb_func_start sub_80BA47C
-sub_80BA47C: @ 80BA47C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080BA4BC @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r1
- ldr r3, _080BA4C0 @ =gBattleAnimArgs
- ldrh r1, [r3]
- strh r1, [r2, 0x8]
- ldrh r1, [r3, 0x2]
- strh r1, [r2, 0xA]
- ldrh r1, [r3, 0x4]
- strh r1, [r2, 0xC]
- ldrh r1, [r3, 0x6]
- strh r1, [r2, 0xE]
- ldrh r1, [r3, 0x6]
- strh r1, [r2, 0x18]
- ldr r4, _080BA4C4 @ =gBattle_BG3_X
- ldrh r1, [r3]
- strh r1, [r4]
- ldr r4, _080BA4C8 @ =gBattle_BG3_Y
- ldrh r1, [r3, 0x2]
- strh r1, [r4]
- ldr r1, _080BA4CC @ =sub_80BA4D0
- str r1, [r2]
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA4BC: .4byte gTasks
-_080BA4C0: .4byte gBattleAnimArgs
-_080BA4C4: .4byte gBattle_BG3_X
-_080BA4C8: .4byte gBattle_BG3_Y
-_080BA4CC: .4byte sub_80BA4D0
- thumb_func_end sub_80BA47C
-
- thumb_func_start sub_80BA4D0
-sub_80BA4D0: @ 80BA4D0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080BA500 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r1
- ldrh r2, [r3, 0xE]
- movs r4, 0xE
- ldrsh r0, [r3, r4]
- mov r12, r1
- cmp r0, 0
- bne _080BA556
- ldr r0, _080BA504 @ =gBattle_BG3_X
- ldrh r2, [r0]
- movs r7, 0x8
- ldrsh r1, [r3, r7]
- adds r6, r0, 0
- cmp r2, r1
- bne _080BA508
- ldrh r0, [r3, 0x8]
- negs r0, r0
- b _080BA50A
- .align 2, 0
-_080BA500: .4byte gTasks
-_080BA504: .4byte gBattle_BG3_X
-_080BA508:
- ldrh r0, [r3, 0x8]
-_080BA50A:
- strh r0, [r6]
- ldr r2, _080BA528 @ =gBattle_BG3_Y
- ldrh r3, [r2]
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- mov r7, r12
- adds r4, r0, r7
- movs r7, 0xA
- ldrsh r0, [r4, r7]
- cmn r3, r0
- bne _080BA52C
- movs r0, 0
- b _080BA530
- .align 2, 0
-_080BA528: .4byte gBattle_BG3_Y
-_080BA52C:
- ldrh r0, [r4, 0xA]
- negs r0, r0
-_080BA530:
- strh r0, [r2]
- adds r0, r1, r5
- lsls r0, 3
- add r0, r12
- ldrh r1, [r0, 0x18]
- strh r1, [r0, 0xE]
- ldrh r1, [r0, 0xC]
- subs r1, 0x1
- strh r1, [r0, 0xC]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0
- bne _080BA55A
- strh r1, [r6]
- strh r1, [r2]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _080BA55A
-_080BA556:
- subs r0, r2, 0x1
- strh r0, [r3, 0xE]
-_080BA55A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BA4D0
-
- thumb_func_start sub_80BA560
-sub_80BA560: @ 80BA560
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080BA580 @ =gBattleAnimArgs
- ldrb r1, [r4, 0x6]
- bl StartSpriteAffineAnim
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BA584
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- b _080BA58C
- .align 2, 0
-_080BA580: .4byte gBattleAnimArgs
-_080BA584:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075114
-_080BA58C:
- ldr r0, _080BA5A0 @ =sub_8074F50
- str r0, [r5, 0x1C]
- ldr r1, _080BA5A4 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA5A0: .4byte sub_8074F50
-_080BA5A4: .4byte DestroyAnimSprite
- thumb_func_end sub_80BA560
-
- thumb_func_start sub_80BA5A8
-sub_80BA5A8: @ 80BA5A8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080BA5C8 @ =gBattleAnimArgs
- ldrb r1, [r4, 0x6]
- bl StartSpriteAffineAnim
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BA5CC
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- b _080BA5D4
- .align 2, 0
-_080BA5C8: .4byte gBattleAnimArgs
-_080BA5CC:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075114
-_080BA5D4:
- ldr r0, _080BA5EC @ =gBattleAnimArgs
- ldrh r0, [r0, 0x8]
- strh r0, [r5, 0x2E]
- ldr r0, _080BA5F0 @ =sub_8074F50
- str r0, [r5, 0x1C]
- ldr r1, _080BA5F4 @ =sub_80B1D3C
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA5EC: .4byte gBattleAnimArgs
-_080BA5F0: .4byte sub_8074F50
-_080BA5F4: .4byte sub_80B1D3C
- thumb_func_end sub_80BA5A8
-
- thumb_func_start sub_80BA5F8
-sub_80BA5F8: @ 80BA5F8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080BA628 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080BA61C
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080BA61C
- ldr r1, _080BA62C @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
-_080BA61C:
- adds r0, r4, 0
- bl sub_80BA560
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA628: .4byte gBattleAnimAttacker
-_080BA62C: .4byte gBattleAnimArgs
- thumb_func_end sub_80BA5F8
-
- thumb_func_start sub_80BA630
-sub_80BA630: @ 80BA630
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080BA668 @ =gBattleAnimArgs
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080BA64C
- bl Random
- movs r1, 0x3
- ands r1, r0
- strh r1, [r5, 0x2]
-_080BA64C:
- ldrb r1, [r5, 0x2]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080BA66C
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
- b _080BA674
- .align 2, 0
-_080BA668: .4byte gBattleAnimArgs
-_080BA66C:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075114
-_080BA674:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x30
- bl __umodsi3
- ldr r1, _080BA6B8 @ =0x0000ffe8
- adds r0, r1
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x18
- bl __umodsi3
- ldr r1, _080BA6BC @ =0x0000fff4
- adds r0, r1
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldr r1, _080BA6C0 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080BA6C4 @ =sub_8074F50
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA6B8: .4byte 0x0000ffe8
-_080BA6BC: .4byte 0x0000fff4
-_080BA6C0: .4byte move_anim_8074EE0
-_080BA6C4: .4byte sub_8074F50
- thumb_func_end sub_80BA630
-
- thumb_func_start sub_80BA6C8
-sub_80BA6C8: @ 80BA6C8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080BA728 @ =gBattleAnimArgs
- ldrb r0, [r5]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x2E]
- ldr r2, _080BA72C @ =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- ldrh r0, [r0, 0x20]
- adds r1, r0
- strh r1, [r4, 0x20]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- strh r1, [r4, 0x22]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x24]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x26]
- ldrb r1, [r5, 0x6]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- ldr r1, _080BA730 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080BA734 @ =sub_8074F50
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA728: .4byte gBattleAnimArgs
-_080BA72C: .4byte gSprites
-_080BA730: .4byte move_anim_8074EE0
-_080BA734: .4byte sub_8074F50
- thumb_func_end sub_80BA6C8
-
- thumb_func_start sub_80BA738
-sub_80BA738: @ 80BA738
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080BA750 @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080BA754
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075160
- b _080BA75C
- .align 2, 0
-_080BA750: .4byte gBattleAnimArgs
-_080BA754:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8075114
-_080BA75C:
- ldr r0, _080BA774 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x6]
- strh r0, [r4, 0x2E]
- ldr r1, _080BA778 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080BA77C @ =sub_8074C44
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA774: .4byte gBattleAnimArgs
-_080BA778: .4byte DestroyAnimSprite
-_080BA77C: .4byte sub_8074C44
- thumb_func_end sub_80BA738
-
- thumb_func_start sub_80BA780
-sub_80BA780: @ 80BA780
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080BA7A0 @ =gBattleAnimArgs
- ldrb r1, [r4, 0x6]
- bl StartSpriteAffineAnim
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080BA7A4
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075160
- b _080BA7AC
- .align 2, 0
-_080BA7A0: .4byte gBattleAnimArgs
-_080BA7A4:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8075114
-_080BA7AC:
- ldr r0, _080BA7B8 @ =sub_80BA7BC
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA7B8: .4byte sub_80BA7BC
- thumb_func_end sub_80BA780
-
- thumb_func_start sub_80BA7BC
-sub_80BA7BC: @ 80BA7BC
- push {lr}
- adds r3, r0, 0
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x2E]
- adds r1, r0, 0x1
- strh r1, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _080BA7F2
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080BA7F2:
- pop {r0}
- bx r0
- thumb_func_end sub_80BA7BC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/option_menu.s b/asm/option_menu.s
index bb370f0ba..3b08810c5 100644
--- a/asm/option_menu.s
+++ b/asm/option_menu.s
@@ -26,14 +26,14 @@ sub_8088374: @ 8088374
bx r0
thumb_func_end sub_8088374
- thumb_func_start sub_8088388
-sub_8088388: @ 8088388
+ thumb_func_start CB2_OptionsMenuFromStartMenu
+CB2_OptionsMenuFromStartMenu: @ 8088388
push {r4-r6,lr}
ldr r1, _08088418 @ =gMain
ldr r0, [r1, 0x8]
cmp r0, 0
bne _08088396
- ldr r0, _0808841C @ =sub_80568A8
+ ldr r0, _0808841C @ =CB2_ReturnToStartMenu
str r0, [r1, 0x8]
_08088396:
ldr r4, _08088420 @ =gUnknown_2039620
@@ -101,12 +101,12 @@ _080883FA:
bx r0
.align 2, 0
_08088418: .4byte gMain
-_0808841C: .4byte sub_80568A8
+_0808841C: .4byte CB2_ReturnToStartMenu
_08088420: .4byte gUnknown_2039620
_08088424: .4byte gSaveBlock2Ptr
_08088428: .4byte gUnknown_83CC304
_0808842C: .4byte sub_8088454
- thumb_func_end sub_8088388
+ thumb_func_end CB2_OptionsMenuFromStartMenu
thumb_func_start sub_8088430
sub_8088430: @ 8088430
diff --git a/asm/overworld.s b/asm/overworld.s
index c3ff5e3c8..9bcd95eab 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -3754,20 +3754,20 @@ _080568A0: .4byte gFieldCallback
_080568A4: .4byte sub_807DDD0
thumb_func_end c2_8056854
- thumb_func_start sub_80568A8
-sub_80568A8: @ 80568A8
+ thumb_func_start CB2_ReturnToStartMenu
+CB2_ReturnToStartMenu: @ 80568A8
push {lr}
bl sub_80569BC
ldr r1, _080568BC @ =gFieldCallback2
- ldr r0, _080568C0 @ =sub_807E3BC
+ ldr r0, _080568C0 @ =FieldCB2_ReturnToStartMenuInit
str r0, [r1]
bl CB2_ReturnToField
pop {r0}
bx r0
.align 2, 0
_080568BC: .4byte gFieldCallback2
-_080568C0: .4byte sub_807E3BC
- thumb_func_end sub_80568A8
+_080568C0: .4byte FieldCB2_ReturnToStartMenuInit
+ thumb_func_end CB2_ReturnToStartMenu
thumb_func_start sub_80568C4
sub_80568C4: @ 80568C4
diff --git a/asm/party_menu.s b/asm/party_menu.s
index be2b27e91..df016c018 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -3616,10 +3616,10 @@ sub_8120658: @ 8120658
beq _08120678
cmp r0, 0x5
beq _0812067E
- ldr r1, _08120674 @ =gUnknown_8416285
+ ldr r1, _08120674 @ =gStartMenuText_Bag
b _08120686
.align 2, 0
-_08120674: .4byte gUnknown_8416285
+_08120674: .4byte gStartMenuText_Bag
_08120678:
movs r0, 0xB6
lsls r0, 1
@@ -11978,7 +11978,7 @@ task_launch_hm_phase_2: @ 81248C8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_807AA70
+ bl field_weather_is_fade_finished
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -12231,7 +12231,7 @@ sub_8124AB0: @ 8124AB0
str r0, [sp]
ldr r0, _08124AD4 @ =sub_811FB28
str r0, [sp, 0x4]
- ldr r0, _08124AD8 @ =sub_80568A8
+ ldr r0, _08124AD8 @ =CB2_ReturnToStartMenu
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
@@ -12243,7 +12243,7 @@ sub_8124AB0: @ 8124AB0
bx r0
.align 2, 0
_08124AD4: .4byte sub_811FB28
-_08124AD8: .4byte sub_80568A8
+_08124AD8: .4byte CB2_ReturnToStartMenu
thumb_func_end sub_8124AB0
thumb_func_start hm2_waterfall
@@ -16634,7 +16634,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0
str r0, [sp]
ldr r0, _08126ED4 @ =sub_811FB28
str r0, [sp, 0x4]
- ldr r0, _08126ED8 @ =sub_80568A8
+ ldr r0, _08126ED8 @ =CB2_ReturnToStartMenu
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
@@ -16646,7 +16646,7 @@ CB2_PartyMenuFromStartMenu: @ 8126EB0
bx r0
.align 2, 0
_08126ED4: .4byte sub_811FB28
-_08126ED8: .4byte sub_80568A8
+_08126ED8: .4byte CB2_ReturnToStartMenu
thumb_func_end CB2_PartyMenuFromStartMenu
thumb_func_start sub_8126EDC
@@ -17272,15 +17272,15 @@ _081273D0:
bx r1
thumb_func_end sub_81273AC
- thumb_func_start sub_81273D8
-sub_81273D8: @ 81273D8
+ thumb_func_start PartyMenuInit_FromPlayerPc
+PartyMenuInit_FromPlayerPc: @ 81273D8
push {lr}
sub sp, 0xC
movs r0, 0x6
str r0, [sp]
ldr r0, _081273FC @ =sub_811FB28
str r0, [sp, 0x4]
- ldr r0, _08127400 @ =sub_80EC500
+ ldr r0, _08127400 @ =CB2_PlayerPC_ReturnFromPartyMenu
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
@@ -17292,8 +17292,8 @@ sub_81273D8: @ 81273D8
bx r0
.align 2, 0
_081273FC: .4byte sub_811FB28
-_08127400: .4byte sub_80EC500
- thumb_func_end sub_81273D8
+_08127400: .4byte CB2_PlayerPC_ReturnFromPartyMenu
+ thumb_func_end PartyMenuInit_FromPlayerPc
thumb_func_start sub_8127404
sub_8127404: @ 8127404
@@ -17311,7 +17311,7 @@ sub_8127404: @ 8127404
movs r0, 0
strb r0, [r1]
ldr r2, _0812745C @ =gSaveBlock1Ptr
- ldr r0, _08127460 @ =gUnknown_203AAC4
+ ldr r0, _08127460 @ =gPlayerPcMenuManager
ldrh r1, [r0]
adds r1, 0x6
ldrh r0, [r0, 0x2]
@@ -17337,7 +17337,7 @@ _08127450: .4byte gUnknown_203B0A0
_08127454: .4byte gPlayerParty
_08127458: .4byte gUnknown_203B0C0
_0812745C: .4byte gSaveBlock1Ptr
-_08127460: .4byte gUnknown_203AAC4
+_08127460: .4byte gPlayerPcMenuManager
_08127464: .4byte 0x00002cd0
_08127468: .4byte gUnknown_8416D17
_0812746C:
@@ -19373,7 +19373,7 @@ task_hm_without_phase_2: @ 81283FC
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_807AA70
+ bl field_weather_is_fade_finished
lsls r0, 24
cmp r0, 0
beq _0812841A
diff --git a/asm/player_pc.s b/asm/player_pc.s
deleted file mode 100644
index fa528abb9..000000000
--- a/asm/player_pc.s
+++ /dev/null
@@ -1,1919 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start NewGameInitPCItems
-NewGameInitPCItems: @ 80EB658
- push {r4-r6,lr}
- movs r4, 0
- bl ClearPCItemSlots
- ldr r1, _080EB6A8 @ =gUnknown_8402220
- ldrh r0, [r1]
- cmp r0, 0
- beq _080EB6A0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- beq _080EB6A0
- adds r5, r1, 0
- adds r6, r5, 0x2
-_080EB672:
- lsls r1, r4, 2
- adds r0, r1, r5
- ldrh r0, [r0]
- adds r1, r6
- ldrh r1, [r1]
- bl AddPCItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EB6A0
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, r4, 2
- adds r0, r1, r5
- ldrh r0, [r0]
- cmp r0, 0
- beq _080EB6A0
- adds r0, r1, r6
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EB672
-_080EB6A0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EB6A8: .4byte gUnknown_8402220
- thumb_func_end NewGameInitPCItems
-
- thumb_func_start sub_80EB6AC
-sub_80EB6AC: @ 80EB6AC
- push {lr}
- ldr r1, _080EB6E0 @ =gUnknown_203AAC4
- movs r0, 0
- strb r0, [r1, 0x9]
- bl sub_812B234
- ldr r1, _080EB6E4 @ =gUnknown_203AABC
- ldr r0, _080EB6E8 @ =gUnknown_8402200
- str r0, [r1]
- ldr r1, _080EB6EC @ =gUnknown_203AAC0
- movs r0, 0x3
- strb r0, [r1]
- ldr r0, _080EB6F0 @ =TaskDummy
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080EB6F4 @ =gUnknown_8416262
- ldr r3, _080EB6F8 @ =sub_80EB74C
- movs r1, 0x2
- bl DisplayItemMessageOnField
- pop {r0}
- bx r0
- .align 2, 0
-_080EB6E0: .4byte gUnknown_203AAC4
-_080EB6E4: .4byte gUnknown_203AABC
-_080EB6E8: .4byte gUnknown_8402200
-_080EB6EC: .4byte gUnknown_203AAC0
-_080EB6F0: .4byte TaskDummy
-_080EB6F4: .4byte gUnknown_8416262
-_080EB6F8: .4byte sub_80EB74C
- thumb_func_end sub_80EB6AC
-
- thumb_func_start sub_80EB6FC
-sub_80EB6FC: @ 80EB6FC
- push {lr}
- ldr r1, _080EB730 @ =gUnknown_203AAC4
- movs r0, 0x1
- strb r0, [r1, 0x9]
- bl sub_812B234
- ldr r1, _080EB734 @ =gUnknown_203AABC
- ldr r0, _080EB738 @ =gUnknown_8402203
- str r0, [r1]
- ldr r1, _080EB73C @ =gUnknown_203AAC0
- movs r0, 0x3
- strb r0, [r1]
- ldr r0, _080EB740 @ =TaskDummy
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080EB744 @ =gUnknown_8416262
- ldr r3, _080EB748 @ =sub_80EB74C
- movs r1, 0x2
- bl DisplayItemMessageOnField
- pop {r0}
- bx r0
- .align 2, 0
-_080EB730: .4byte gUnknown_203AAC4
-_080EB734: .4byte gUnknown_203AABC
-_080EB738: .4byte gUnknown_8402203
-_080EB73C: .4byte gUnknown_203AAC0
-_080EB740: .4byte TaskDummy
-_080EB744: .4byte gUnknown_8416262
-_080EB748: .4byte sub_80EB74C
- thumb_func_end sub_80EB6FC
-
- thumb_func_start sub_80EB74C
-sub_80EB74C: @ 80EB74C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _080EB770 @ =gTasks+0x8
- adds r7, r0, r1
- ldr r0, _080EB774 @ =gUnknown_203AAC0
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _080EB77C
- ldr r0, _080EB778 @ =gUnknown_8402248
- b _080EB77E
- .align 2, 0
-_080EB770: .4byte gTasks+0x8
-_080EB774: .4byte gUnknown_203AAC0
-_080EB778: .4byte gUnknown_8402248
-_080EB77C:
- ldr r0, _080EB804 @ =gUnknown_8402250
-_080EB77E:
- bl AddWindow
- strh r0, [r7, 0x14]
- ldrb r0, [r7, 0x14]
- movs r1, 0
- bl SetStdWindowBorderStyle
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x2
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r7, 0x14]
- str r0, [sp]
- movs r6, 0x10
- str r6, [sp, 0x4]
- ldr r5, _080EB808 @ =gUnknown_203AAC0
- ldrb r0, [r5]
- str r0, [sp, 0x8]
- ldr r0, _080EB80C @ =gUnknown_84021E8
- str r0, [sp, 0xC]
- ldr r0, _080EB810 @ =gUnknown_203AABC
- ldr r0, [r0]
- str r0, [sp, 0x10]
- adds r0, r1, 0
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0x2
- bl AddItemMenuActionTextPrinters
- ldrb r0, [r7, 0x14]
- str r6, [sp]
- ldrb r1, [r5]
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl Menu_InitCursor
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _080EB814 @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, _080EB818 @ =sub_80EB81C
- str r1, [r0]
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EB804: .4byte gUnknown_8402250
-_080EB808: .4byte gUnknown_203AAC0
-_080EB80C: .4byte gUnknown_84021E8
-_080EB810: .4byte gUnknown_203AABC
-_080EB814: .4byte gTasks
-_080EB818: .4byte sub_80EB81C
- thumb_func_end sub_80EB74C
-
- thumb_func_start sub_80EB81C
-sub_80EB81C: @ 80EB81C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, _080EB870 @ =gTasks+0x8
- adds r4, r6, r7
- bl Menu_ProcessInputNoWrapAround
- lsls r0, 24
- asrs r5, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _080EB8AC
- adds r0, 0x1
- cmp r5, r0
- bne _080EB878
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x14]
- movs r1, 0
- bl ClearStdWindowAndFrameToTransparent
- ldrb r0, [r4, 0x14]
- bl ClearWindowTilemap
- ldrb r0, [r4, 0x14]
- bl RemoveWindow
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _080EB874 @ =sub_80EB9B8
- str r1, [r0]
- b _080EB8AC
- .align 2, 0
-_080EB870: .4byte gTasks+0x8
-_080EB874: .4byte sub_80EB9B8
-_080EB878:
- ldrb r0, [r4, 0x14]
- movs r1, 0
- bl ClearStdWindowAndFrameToTransparent
- ldrb r0, [r4, 0x14]
- bl ClearWindowTilemap
- ldrb r0, [r4, 0x14]
- bl RemoveWindow
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- adds r2, r7, 0
- subs r2, 0x8
- adds r2, r6, r2
- ldr r1, _080EB8B4 @ =gUnknown_84021E8
- ldr r0, _080EB8B8 @ =gUnknown_203AABC
- ldr r0, [r0]
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
-_080EB8AC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EB8B4: .4byte gUnknown_84021E8
-_080EB8B8: .4byte gUnknown_203AABC
- thumb_func_end sub_80EB81C
-
- thumb_func_start sub_80EB8BC
-sub_80EB8BC: @ 80EB8BC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_812B248
- ldr r2, _080EB8DC @ =gUnknown_8416262
- ldr r3, _080EB8E0 @ =sub_80EB74C
- adds r0, r4, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EB8DC: .4byte gUnknown_8416262
-_080EB8E0: .4byte sub_80EB74C
- thumb_func_end sub_80EB8BC
-
- thumb_func_start sub_80EB8E4
-sub_80EB8E4: @ 80EB8E4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl sub_80EB9E8
- ldr r1, _080EB908 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080EB90C @ =sub_80EBAB8
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EB908: .4byte gTasks
-_080EB90C: .4byte sub_80EBAB8
- thumb_func_end sub_80EB8E4
-
- thumb_func_start sub_80EB910
-sub_80EB910: @ 80EB910
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_80EBDC8
- ldr r4, _080EB934 @ =gUnknown_203AAC4
- movs r1, 0
- strb r0, [r4, 0x5]
- lsls r0, 24
- cmp r0, 0
- bne _080EB940
- ldr r2, _080EB938 @ =gUnknown_84177EE
- ldr r3, _080EB93C @ =sub_80EB8BC
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
- b _080EB9A8
- .align 2, 0
-_080EB934: .4byte gUnknown_203AAC4
-_080EB938: .4byte gUnknown_84177EE
-_080EB93C: .4byte sub_80EB8BC
-_080EB940:
- strh r1, [r4]
- strh r1, [r4, 0x2]
- bl sub_80EBE04
- adds r0, r5, 0
- bl sub_80EBD88
- ldrb r0, [r4, 0x9]
- cmp r0, 0
- bne _080EB95C
- movs r0, 0x22
- bl HelpSystem_SetSomeVariable2
- b _080EB962
-_080EB95C:
- movs r0, 0x1E
- bl HelpSystem_SetSomeVariable2
-_080EB962:
- ldr r0, _080EB990 @ =gUnknown_203AAC4
- ldrb r0, [r0, 0x5]
- bl MailboxPC_InitBuffers
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EB99C
- movs r0, 0
- movs r1, 0
- bl ClearDialogWindowAndFrame
- adds r0, r5, 0
- bl sub_80EBEB0
- ldr r0, _080EB994 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080EB998 @ =sub_80EBF40
- str r0, [r1]
- b _080EB9A8
- .align 2, 0
-_080EB990: .4byte gUnknown_203AAC4
-_080EB994: .4byte gTasks
-_080EB998: .4byte sub_80EBF40
-_080EB99C:
- ldr r2, _080EB9B0 @ =gUnknown_84177EE
- ldr r3, _080EB9B4 @ =sub_80EB8BC
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
-_080EB9A8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EB9B0: .4byte gUnknown_84177EE
-_080EB9B4: .4byte sub_80EB8BC
- thumb_func_end sub_80EB910
-
- thumb_func_start sub_80EB9B8
-sub_80EB9B8: @ 80EB9B8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080EB9D0 @ =gUnknown_203AAC4
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _080EB9D8
- ldr r0, _080EB9D4 @ =gUnknown_8168D17
- bl ScriptContext1_SetupScript
- b _080EB9DC
- .align 2, 0
-_080EB9D0: .4byte gUnknown_203AAC4
-_080EB9D4: .4byte gUnknown_8168D17
-_080EB9D8:
- bl EnableBothScriptContexts
-_080EB9DC:
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EB9B8
-
- thumb_func_start sub_80EB9E8
-sub_80EB9E8: @ 80EB9E8
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080EBA10 @ =gTasks+0x8
- adds r6, r1, r0
- ldr r0, _080EBA14 @ =gUnknown_203AAC4
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _080EBA18
- movs r0, 0x21
- bl HelpSystem_SetSomeVariable2
- b _080EBA1E
- .align 2, 0
-_080EBA10: .4byte gTasks+0x8
-_080EBA14: .4byte gUnknown_203AAC4
-_080EBA18:
- movs r0, 0x1D
- bl HelpSystem_SetSomeVariable2
-_080EBA1E:
- ldr r0, _080EBA80 @ =gUnknown_8402258
- bl AddWindow
- strh r0, [r6, 0x14]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl SetStdWindowBorderStyle
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldrb r0, [r6, 0x14]
- movs r5, 0x10
- str r5, [sp]
- movs r4, 0x3
- str r4, [sp, 0x4]
- ldr r1, _080EBA84 @ =gUnknown_8402208
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0x2
- bl PrintTextArray
- ldrb r0, [r6, 0x14]
- str r5, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl Menu_InitCursor
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _080EBA88 @ =gUnknown_84021DC
- lsls r0, r7, 2
- adds r0, r1
- ldr r0, [r0]
- bl sub_80EBA8C
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBA80: .4byte gUnknown_8402258
-_080EBA84: .4byte gUnknown_8402208
-_080EBA88: .4byte gUnknown_84021DC
- thumb_func_end sub_80EB9E8
-
- thumb_func_start sub_80EBA8C
-sub_80EBA8C: @ 80EBA8C
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r0, 0
- movs r1, 0
- bl DrawDialogueFrame
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EBA8C
-
- thumb_func_start sub_80EBAB8
-sub_80EBAB8: @ 80EBAB8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, r5, 0
- ldr r2, _080EBAE4 @ =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080EBAE8
- bl Menu_GetCursorPos
- lsls r0, 24
- cmp r0, 0
- beq _080EBB64
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _080EBB04
- .align 2, 0
-_080EBAE4: .4byte gMain
-_080EBAE8:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080EBB20
- bl Menu_GetCursorPos
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080EBB64
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_080EBB04:
- bl Menu_MoveCursor
- ldr r4, _080EBB1C @ =gUnknown_84021DC
- bl Menu_GetCursorPos
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r0, [r0]
- bl sub_80EBA8C
- b _080EBB64
- .align 2, 0
-_080EBB1C: .4byte gUnknown_84021DC
-_080EBB20:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080EBB4C
- movs r0, 0x5
- bl PlaySE
- ldr r4, _080EBB48 @ =gUnknown_8402208
- bl Menu_GetCursorPos
- lsls r0, 24
- lsrs r0, 21
- adds r4, 0x4
- adds r0, r4
- ldr r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
- b _080EBB64
- .align 2, 0
-_080EBB48: .4byte gUnknown_8402208
-_080EBB4C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080EBB64
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080EBB6C @ =gUnknown_8402208
- ldr r1, [r0, 0x14]
- adds r0, r4, 0
- bl _call_via_r1
-_080EBB64:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBB6C: .4byte gUnknown_8402208
- thumb_func_end sub_80EBAB8
-
- thumb_func_start sub_80EBB70
-sub_80EBB70: @ 80EBB70
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080EBBA4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080EBB9C
- bl CleanupOverworldWindowsAndTilemaps
- ldr r2, _080EBBA8 @ =CB2_ReturnToField
- movs r0, 0x3
- movs r1, 0
- bl sub_8107DB4
- ldr r1, _080EBBAC @ =gFieldCallback
- ldr r0, _080EBBB0 @ =sub_80EBC0C
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_080EBB9C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBBA4: .4byte gPaletteFade
-_080EBBA8: .4byte CB2_ReturnToField
-_080EBBAC: .4byte gFieldCallback
-_080EBBB0: .4byte sub_80EBC0C
- thumb_func_end sub_80EBB70
-
- thumb_func_start sub_80EBBB4
-sub_80EBBB4: @ 80EBBB4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080EBBD4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080EBBD8 @ =sub_80EBB70
- str r0, [r1]
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- pop {r0}
- bx r0
- .align 2, 0
-_080EBBD4: .4byte gTasks
-_080EBBD8: .4byte sub_80EBB70
- thumb_func_end sub_80EBBB4
-
- thumb_func_start sub_80EBBDC
-sub_80EBBDC: @ 80EBBDC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_807AA70
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EBBFC
- ldr r0, _080EBC04 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080EBC08 @ =sub_80EBAB8
- str r0, [r1]
-_080EBBFC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBC04: .4byte gTasks
-_080EBC08: .4byte sub_80EBAB8
- thumb_func_end sub_80EBBDC
-
- thumb_func_start sub_80EBC0C
-sub_80EBC0C: @ 80EBC0C
- push {lr}
- bl sub_80F6E9C
- movs r0, 0
- movs r1, 0x1
- bl DrawDialogueFrame
- ldr r0, _080EBC34 @ =sub_80EBBDC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_80EB9E8
- bl sub_807DC00
- pop {r0}
- bx r0
- .align 2, 0
-_080EBC34: .4byte sub_80EBBDC
- thumb_func_end sub_80EBC0C
-
- thumb_func_start sub_80EBC38
-sub_80EBC38: @ 80EBC38
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r7, _080EBC6C @ =gTasks+0x8
- adds r4, r6, r7
- bl CountItemsInPC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x4]
- cmp r0, 0
- beq _080EBC7C
- movs r0, 0
- strh r0, [r4, 0xC]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _080EBC70 @ =sub_80EBD18
- str r1, [r0]
- ldr r1, _080EBC74 @ =gFieldCallback
- ldr r0, _080EBC78 @ =sub_80EBCAC
- str r0, [r1]
- b _080EBC9C
- .align 2, 0
-_080EBC6C: .4byte gTasks+0x8
-_080EBC70: .4byte sub_80EBD18
-_080EBC74: .4byte gFieldCallback
-_080EBC78: .4byte sub_80EBCAC
-_080EBC7C:
- ldrb r0, [r4, 0x14]
- movs r1, 0
- bl ClearStdWindowAndFrameToTransparent
- ldrb r0, [r4, 0x14]
- bl ClearWindowTilemap
- ldrb r0, [r4, 0x14]
- bl RemoveWindow
- ldr r2, _080EBCA4 @ =gUnknown_8417774
- ldr r3, _080EBCA8 @ =sub_80EB8E4
- adds r0, r5, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
-_080EBC9C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBCA4: .4byte gUnknown_8417774
-_080EBCA8: .4byte sub_80EB8E4
- thumb_func_end sub_80EBC38
-
- thumb_func_start sub_80EBCAC
-sub_80EBCAC: @ 80EBCAC
- push {lr}
- bl sub_80F6E9C
- movs r0, 0
- movs r1, 0x1
- bl DrawDialogueFrame
- ldr r0, _080EBCD4 @ =sub_80EBBDC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80EB9E8
- bl sub_807DC00
- pop {r0}
- bx r0
- .align 2, 0
-_080EBCD4: .4byte sub_80EBBDC
- thumb_func_end sub_80EBCAC
-
- thumb_func_start sub_80EBCD8
-sub_80EBCD8: @ 80EBCD8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080EBD0C @ =gTasks+0x8
- adds r5, r0, r1
- ldr r0, _080EBD10 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080EBD06
- bl CleanupOverworldWindowsAndTilemaps
- ldrb r0, [r5, 0xC]
- ldr r1, _080EBD14 @ =CB2_ReturnToField
- bl ItemPc_Init
- adds r0, r4, 0
- bl DestroyTask
-_080EBD06:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBD0C: .4byte gTasks+0x8
-_080EBD10: .4byte gPaletteFade
-_080EBD14: .4byte CB2_ReturnToField
- thumb_func_end sub_80EBCD8
-
- thumb_func_start sub_80EBD18
-sub_80EBD18: @ 80EBD18
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080EBD40 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080EBD44 @ =sub_80EBCD8
- str r0, [r1]
- movs r0, 0
- bl ItemPc_SetInitializedFlag
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- pop {r0}
- bx r0
- .align 2, 0
-_080EBD40: .4byte gTasks
-_080EBD44: .4byte sub_80EBCD8
- thumb_func_end sub_80EBD18
-
- thumb_func_start sub_80EBD48
-sub_80EBD48: @ 80EBD48
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _080EBD84 @ =gTasks+0x8
- adds r4, r0
- ldrb r0, [r4, 0x14]
- movs r1, 0
- bl ClearStdWindowAndFrameToTransparent
- ldrb r0, [r4, 0x14]
- bl ClearWindowTilemap
- ldrb r0, [r4, 0x14]
- movs r1, 0x1
- bl CopyWindowToVram
- ldrb r0, [r4, 0x14]
- bl RemoveWindow
- adds r0, r5, 0
- bl sub_80EB8BC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBD84: .4byte gTasks+0x8
- thumb_func_end sub_80EBD48
-
- thumb_func_start sub_80EBD88
-sub_80EBD88: @ 80EBD88
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080EBDA8 @ =gTasks+0x8
- adds r1, r0
- ldrh r2, [r1, 0x4]
- movs r3, 0x4
- ldrsh r0, [r1, r3]
- cmp r0, 0x7
- ble _080EBDAC
- movs r0, 0x8
- b _080EBDAE
- .align 2, 0
-_080EBDA8: .4byte gTasks+0x8
-_080EBDAC:
- adds r0, r2, 0x1
-_080EBDAE:
- strh r0, [r1, 0x8]
- ldr r1, _080EBDBC @ =gUnknown_203AAC4
- ldrb r0, [r1, 0x5]
- cmp r0, 0x7
- bls _080EBDC0
- movs r0, 0x8
- b _080EBDC2
- .align 2, 0
-_080EBDBC: .4byte gUnknown_203AAC4
-_080EBDC0:
- adds r0, 0x1
-_080EBDC2:
- strb r0, [r1, 0x4]
- pop {r0}
- bx r0
- thumb_func_end sub_80EBD88
-
- thumb_func_start sub_80EBDC8
-sub_80EBDC8: @ 80EBDC8
- push {r4,lr}
- movs r2, 0
- movs r1, 0x6
- ldr r0, _080EBDFC @ =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r4, _080EBE00 @ =0x00002cf0
-_080EBDD4:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0
- beq _080EBDEA
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080EBDEA:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080EBDD4
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080EBDFC: .4byte gSaveBlock1Ptr
-_080EBE00: .4byte 0x00002cf0
- thumb_func_end sub_80EBDC8
-
- thumb_func_start sub_80EBE04
-sub_80EBE04: @ 80EBE04
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- movs r2, 0x6
-_080EBE12:
- adds r1, r2, 0x1
- lsls r0, r1, 24
- lsrs r4, r0, 24
- mov r8, r1
- cmp r4, 0xF
- bhi _080EBE8A
- ldr r0, _080EBEA4 @ =gSaveBlock1Ptr
- mov r10, r0
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- mov r12, r0
- ldr r6, _080EBEA8 @ =0x00002cd0
-_080EBE2C:
- mov r1, r10
- ldr r1, [r1]
- mov r9, r1
- mov r2, r9
- add r2, r12
- ldr r3, _080EBEAC @ =0x00002cf0
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EBE80
- adds r2, r6
- mov r1, sp
- adds r0, r2, 0
- ldm r0!, {r3,r5,r7}
- stm r1!, {r3,r5,r7}
- ldm r0!, {r3,r5,r7}
- stm r1!, {r3,r5,r7}
- ldm r0!, {r3,r5,r7}
- stm r1!, {r3,r5,r7}
- lsls r3, r4, 3
- adds r3, r4
- lsls r3, 2
- mov r5, r9
- adds r0, r5, r3
- adds r0, r6
- ldm r0!, {r1,r5,r7}
- stm r2!, {r1,r5,r7}
- ldm r0!, {r1,r5,r7}
- stm r2!, {r1,r5,r7}
- ldm r0!, {r1,r5,r7}
- stm r2!, {r1,r5,r7}
- mov r7, r10
- ldr r1, [r7]
- adds r1, r3
- adds r1, r6
- mov r0, sp
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r5,r7}
- stm r1!, {r2,r5,r7}
-_080EBE80:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080EBE2C
-_080EBE8A:
- mov r3, r8
- lsls r0, r3, 24
- lsrs r2, r0, 24
- cmp r2, 0xE
- bls _080EBE12
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBEA4: .4byte gSaveBlock1Ptr
-_080EBEA8: .4byte 0x00002cd0
-_080EBEAC: .4byte 0x00002cf0
- thumb_func_end sub_80EBE04
-
- thumb_func_start sub_80EBEB0
-sub_80EBEB0: @ 80EBEB0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0
- bl MailboxPC_GetAddWindow
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080EBF34 @ =gUnknown_84176FE
- mov r8, r0
- movs r0, 0x2
- mov r1, r8
- movs r2, 0
- bl GetStringWidth
- adds r5, r0, 0
- movs r0, 0x1
- bl MailboxPC_GetAddWindow
- movs r3, 0x50
- subs r3, r5
- lsrs r0, r3, 31
- adds r3, r0
- asrs r3, 1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x2
- mov r2, r8
- bl AddTextPrinterParameterized
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r4, _080EBF38 @ =gUnknown_203AAC4
- adds r0, r4, 0
- bl MailboxPC_InitListMenu
- ldr r2, _080EBF3C @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x1E]
- adds r0, r4, 0
- bl MailboxPC_AddScrollIndicatorArrows
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBF34: .4byte gUnknown_84176FE
-_080EBF38: .4byte gUnknown_203AAC4
-_080EBF3C: .4byte gTasks
- thumb_func_end sub_80EBEB0
-
- thumb_func_start sub_80EBF40
-sub_80EBF40: @ 80EBF40
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- mov r9, r0
- ldr r0, _080EBF94 @ =gTasks+0x8
- mov r10, r0
- mov r4, r9
- add r4, r10
- ldr r0, _080EBF98 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080EBFEA
- ldrb r0, [r4, 0x16]
- bl ListMenu_ProcessInput
- adds r6, r0, 0
- ldrb r0, [r4, 0x16]
- ldr r7, _080EBF9C @ =gUnknown_203AAC6
- subs r1, r7, 0x2
- mov r8, r1
- adds r1, r7, 0
- mov r2, r8
- bl ListMenuGetScrollAndRow
- movs r0, 0x2
- negs r0, r0
- cmp r6, r0
- beq _080EBFA0
- adds r0, 0x1
- cmp r6, r0
- bne _080EBFB6
- b _080EBFEA
- .align 2, 0
-_080EBF94: .4byte gTasks+0x8
-_080EBF98: .4byte gPaletteFade
-_080EBF9C: .4byte gUnknown_203AAC6
-_080EBFA0:
- movs r0, 0x5
- bl PlaySE
- mov r1, r8
- ldrb r0, [r1, 0xA]
- bl RemoveScrollIndicatorArrowPair
- adds r0, r5, 0
- bl sub_80EC094
- b _080EBFEA
-_080EBFB6:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl MailboxPC_RemoveWindow
- movs r0, 0x1
- bl MailboxPC_RemoveWindow
- ldrb r0, [r4, 0x16]
- adds r1, r7, 0
- mov r2, r8
- bl DestroyListMenuTask
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- mov r1, r8
- ldrb r0, [r1, 0xA]
- bl RemoveScrollIndicatorArrowPair
- mov r0, r10
- subs r0, 0x8
- add r0, r9
- ldr r1, _080EBFF8 @ =sub_80EBFFC
- str r1, [r0]
-_080EBFEA:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080EBFF8: .4byte sub_80EBFFC
- thumb_func_end sub_80EBF40
-
- thumb_func_start sub_80EBFFC
-sub_80EBFFC: @ 80EBFFC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080EC054 @ =gStringVar1
- ldr r2, _080EC058 @ =gSaveBlock1Ptr
- ldr r1, _080EC05C @ =gUnknown_203AAC4
- ldrh r0, [r1]
- adds r0, 0x6
- ldrh r1, [r1, 0x2]
- adds r0, r1
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, [r2]
- adds r1, r0
- ldr r0, _080EC060 @ =0x00002ce2
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x5
- ble _080EC064
- subs r0, r4, 0x1
- adds r1, r0
- cmp r1, r4
- bcc _080EC06C
- ldrb r0, [r1]
- cmp r0, 0
- bne _080EC06C
- movs r3, 0xFF
- adds r2, r4, 0
-_080EC044:
- strb r3, [r1]
- subs r1, 0x1
- cmp r1, r2
- bcc _080EC06C
- ldrb r0, [r1]
- cmp r0, 0
- beq _080EC044
- b _080EC06C
- .align 2, 0
-_080EC054: .4byte gStringVar1
-_080EC058: .4byte gSaveBlock1Ptr
-_080EC05C: .4byte gUnknown_203AAC4
-_080EC060: .4byte 0x00002ce2
-_080EC064:
- adds r0, r4, 0
- movs r1, 0x1
- bl ConvertInternationalString
-_080EC06C:
- ldr r4, _080EC088 @ =gStringVar4
- ldr r1, _080EC08C @ =gUnknown_8417806
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r3, _080EC090 @ =sub_80EC0D8
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl DisplayItemMessageOnField
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC088: .4byte gStringVar4
-_080EC08C: .4byte gUnknown_8417806
-_080EC090: .4byte sub_80EC0D8
- thumb_func_end sub_80EBFFC
-
- thumb_func_start sub_80EC094
-sub_80EC094: @ 80EC094
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, _080EC0D4 @ =gTasks+0x8
- adds r4, r0
- movs r0, 0
- bl MailboxPC_RemoveWindow
- movs r0, 0x1
- bl MailboxPC_RemoveWindow
- ldrb r0, [r4, 0x16]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- bl MailboxPC_DestroyListMenuBuffer
- adds r0, r5, 0
- bl sub_80EB8BC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC0D4: .4byte gTasks+0x8
- thumb_func_end sub_80EC094
-
- thumb_func_start sub_80EC0D8
-sub_80EC0D8: @ 80EC0D8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x2
- bl MailboxPC_GetAddWindow
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x10
- mov r8, r0
- str r0, [sp]
- movs r6, 0x4
- str r6, [sp, 0x4]
- ldr r0, _080EC150 @ =gUnknown_8402228
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x2
- movs r3, 0x2
- bl PrintTextArray
- mov r0, r8
- str r0, [sp]
- str r6, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl Menu_InitCursor
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _080EC154 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080EC158 @ =sub_80EC15C
- str r1, [r0]
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC150: .4byte gUnknown_8402228
-_080EC154: .4byte gTasks
-_080EC158: .4byte sub_80EC15C
- thumb_func_end sub_80EC0D8
-
- thumb_func_start sub_80EC15C
-sub_80EC15C: @ 80EC15C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- bl Menu_ProcessInput_other
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _080EC19E
- adds r0, 0x1
- cmp r4, r0
- bne _080EC188
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_80EC574
- b _080EC19E
-_080EC188:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080EC1A4 @ =gUnknown_8402228
- lsls r1, r4, 3
- adds r0, 0x4
- adds r1, r0
- ldr r1, [r1]
- adds r0, r6, 0
- bl _call_via_r1
-_080EC19E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC1A4: .4byte gUnknown_8402228
- thumb_func_end sub_80EC15C
-
- thumb_func_start sub_80EC1A8
-sub_80EC1A8: @ 80EC1A8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r1, _080EC1CC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080EC1D0 @ =sub_80EC1D4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC1CC: .4byte gTasks
-_080EC1D0: .4byte sub_80EC1D4
- thumb_func_end sub_80EC1A8
-
- thumb_func_start sub_80EC1D4
-sub_80EC1D4: @ 80EC1D4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080EC21C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080EC216
- bl MailboxPC_DestroyListMenuBuffer
- bl CleanupOverworldWindowsAndTilemaps
- ldr r2, _080EC220 @ =gSaveBlock1Ptr
- ldr r1, _080EC224 @ =gUnknown_203AAC4
- ldrh r0, [r1]
- adds r0, 0x6
- ldrh r1, [r1, 0x2]
- adds r0, r1
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _080EC228 @ =0x00002cd0
- adds r1, r0
- ldr r0, [r2]
- adds r0, r1
- ldr r1, _080EC22C @ =sub_80EC2C0
- movs r2, 0x1
- bl sub_80BEBEC
- adds r0, r4, 0
- bl DestroyTask
-_080EC216:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC21C: .4byte gPaletteFade
-_080EC220: .4byte gSaveBlock1Ptr
-_080EC224: .4byte gUnknown_203AAC4
-_080EC228: .4byte 0x00002cd0
-_080EC22C: .4byte sub_80EC2C0
- thumb_func_end sub_80EC1D4
-
- thumb_func_start sub_80EC230
-sub_80EC230: @ 80EC230
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_807AA70
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EC250
- ldr r0, _080EC258 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080EC25C @ =sub_80EBF40
- str r0, [r1]
-_080EC250:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC258: .4byte gTasks
-_080EC25C: .4byte sub_80EBF40
- thumb_func_end sub_80EC230
-
- thumb_func_start sub_80EC260
-sub_80EC260: @ 80EC260
- push {r4,lr}
- ldr r0, _080EC274 @ =gUnknown_203AAC4
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _080EC278
- movs r0, 0x22
- bl HelpSystem_SetSomeVariable2
- b _080EC27E
- .align 2, 0
-_080EC274: .4byte gUnknown_203AAC4
-_080EC278:
- movs r0, 0x1E
- bl HelpSystem_SetSomeVariable2
-_080EC27E:
- bl sub_80F6E9C
- ldr r0, _080EC2A8 @ =sub_80EC230
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080EC2AC @ =gUnknown_203AAC4
- ldrb r0, [r0, 0x5]
- bl MailboxPC_InitBuffers
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EC2B0
- adds r0, r4, 0
- bl sub_80EBEB0
- b _080EC2B6
- .align 2, 0
-_080EC2A8: .4byte sub_80EC230
-_080EC2AC: .4byte gUnknown_203AAC4
-_080EC2B0:
- adds r0, r4, 0
- bl DestroyTask
-_080EC2B6:
- bl sub_807DC00
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EC260
-
- thumb_func_start sub_80EC2C0
-sub_80EC2C0: @ 80EC2C0
- push {lr}
- ldr r0, _080EC2D4 @ =gFieldCallback
- ldr r1, _080EC2D8 @ =sub_80EC260
- str r1, [r0]
- ldr r0, _080EC2DC @ =CB2_ReturnToField
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080EC2D4: .4byte gFieldCallback
-_080EC2D8: .4byte sub_80EC260
-_080EC2DC: .4byte CB2_ReturnToField
- thumb_func_end sub_80EC2C0
-
- thumb_func_start sub_80EC2E0
-sub_80EC2E0: @ 80EC2E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080EC2F4 @ =gUnknown_8417830
- ldr r3, _080EC2F8 @ =sub_80EC2FC
- movs r1, 0x2
- bl DisplayItemMessageOnField
- pop {r0}
- bx r0
- .align 2, 0
-_080EC2F4: .4byte gUnknown_8417830
-_080EC2F8: .4byte sub_80EC2FC
- thumb_func_end sub_80EC2E0
-
- thumb_func_start sub_80EC2FC
-sub_80EC2FC: @ 80EC2FC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl DisplayYesNoMenuDefaultYes
- ldr r1, _080EC31C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080EC320 @ =sub_80EC324
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC31C: .4byte gTasks
-_080EC320: .4byte sub_80EC324
- thumb_func_end sub_80EC2FC
-
- thumb_func_start sub_80EC324
-sub_80EC324: @ 80EC324
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EC350
- cmp r0, r1
- ble _080EC35C
- cmp r0, 0
- beq _080EC348
- cmp r0, 0x1
- beq _080EC356
- b _080EC35C
-_080EC348:
- adds r0, r4, 0
- bl sub_80EC364
- b _080EC35C
-_080EC350:
- movs r0, 0x5
- bl PlaySE
-_080EC356:
- adds r0, r4, 0
- bl sub_80EC3F8
-_080EC35C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EC324
-
- thumb_func_start sub_80EC364
-sub_80EC364: @ 80EC364
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, _080EC3A0 @ =gSaveBlock1Ptr
- ldr r4, _080EC3A4 @ =gUnknown_203AAC4
- ldrh r1, [r4]
- adds r1, 0x6
- ldrh r0, [r4, 0x2]
- adds r1, r0
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080EC3A8 @ =0x00002cd0
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldrh r0, [r5, 0x20]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- bne _080EC3B4
- ldr r2, _080EC3AC @ =gUnknown_8417858
- ldr r3, _080EC3B0 @ =sub_80EC574
- adds r0, r6, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
- b _080EC3EA
- .align 2, 0
-_080EC3A0: .4byte gSaveBlock1Ptr
-_080EC3A4: .4byte gUnknown_203AAC4
-_080EC3A8: .4byte 0x00002cd0
-_080EC3AC: .4byte gUnknown_8417858
-_080EC3B0: .4byte sub_80EC574
-_080EC3B4:
- ldr r2, _080EC3F0 @ =gUnknown_841786B
- ldr r3, _080EC3F4 @ =sub_80EC574
- adds r0, r6, 0
- movs r1, 0x2
- bl DisplayItemMessageOnField
- adds r0, r5, 0
- bl ClearMailStruct
- bl sub_80EBE04
- ldrb r0, [r4, 0x5]
- subs r0, 0x1
- strb r0, [r4, 0x5]
- ldrb r1, [r4, 0x5]
- ldrb r0, [r4, 0x4]
- ldrh r2, [r4, 0x2]
- adds r0, r2
- cmp r1, r0
- bge _080EC3E4
- cmp r2, 0
- beq _080EC3E4
- subs r0, r2, 0x1
- strh r0, [r4, 0x2]
-_080EC3E4:
- adds r0, r6, 0
- bl sub_80EBD88
-_080EC3EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC3F0: .4byte gUnknown_841786B
-_080EC3F4: .4byte sub_80EC574
- thumb_func_end sub_80EC364
-
- thumb_func_start sub_80EC3F8
-sub_80EC3F8: @ 80EC3F8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80EC574
- pop {r0}
- bx r0
- thumb_func_end sub_80EC3F8
-
- thumb_func_start sub_80EC408
-sub_80EC408: @ 80EC408
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl CalculatePlayerPartyCount
- lsls r0, 24
- cmp r0, 0
- bne _080EC420
- adds r0, r4, 0
- bl sub_80EC520
- b _080EC436
-_080EC420:
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080EC43C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080EC440 @ =sub_80EC444
- str r0, [r1]
-_080EC436:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC43C: .4byte gTasks
-_080EC440: .4byte sub_80EC444
- thumb_func_end sub_80EC408
-
- thumb_func_start sub_80EC444
-sub_80EC444: @ 80EC444
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080EC470 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080EC468
- bl MailboxPC_DestroyListMenuBuffer
- bl CleanupOverworldWindowsAndTilemaps
- bl sub_81273D8
- adds r0, r4, 0
- bl DestroyTask
-_080EC468:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC470: .4byte gPaletteFade
- thumb_func_end sub_80EC444
-
- thumb_func_start sub_80EC474
-sub_80EC474: @ 80EC474
- push {r4-r6,lr}
- ldr r0, _080EC488 @ =gUnknown_203AAC4
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _080EC48C
- movs r0, 0x22
- bl HelpSystem_SetSomeVariable2
- b _080EC492
- .align 2, 0
-_080EC488: .4byte gUnknown_203AAC4
-_080EC48C:
- movs r0, 0x1E
- bl HelpSystem_SetSomeVariable2
-_080EC492:
- ldr r0, _080EC4E8 @ =sub_80EC230
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, _080EC4EC @ =gUnknown_203AAC4
- ldrb r4, [r5, 0x5]
- bl sub_80EBDC8
- strb r0, [r5, 0x5]
- bl sub_80EBE04
- ldrb r0, [r5, 0x5]
- cmp r4, r0
- beq _080EC4C6
- ldrb r1, [r5, 0x5]
- ldrb r0, [r5, 0x4]
- ldrh r2, [r5, 0x2]
- adds r0, r2
- cmp r1, r0
- bge _080EC4C6
- cmp r2, 0
- beq _080EC4C6
- subs r0, r2, 0x1
- strh r0, [r5, 0x2]
-_080EC4C6:
- adds r0, r6, 0
- bl sub_80EBD88
- bl sub_80F6E9C
- ldr r0, _080EC4EC @ =gUnknown_203AAC4
- ldrb r0, [r0, 0x5]
- bl MailboxPC_InitBuffers
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EC4F0
- adds r0, r6, 0
- bl sub_80EBEB0
- b _080EC4F6
- .align 2, 0
-_080EC4E8: .4byte sub_80EC230
-_080EC4EC: .4byte gUnknown_203AAC4
-_080EC4F0:
- adds r0, r6, 0
- bl DestroyTask
-_080EC4F6:
- bl sub_807DC00
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80EC474
-
- thumb_func_start sub_80EC500
-sub_80EC500: @ 80EC500
- push {lr}
- ldr r0, _080EC514 @ =gFieldCallback
- ldr r1, _080EC518 @ =sub_80EC474
- str r1, [r0]
- ldr r0, _080EC51C @ =CB2_ReturnToField
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080EC514: .4byte gFieldCallback
-_080EC518: .4byte sub_80EC474
-_080EC51C: .4byte CB2_ReturnToField
- thumb_func_end sub_80EC500
-
- thumb_func_start sub_80EC520
-sub_80EC520: @ 80EC520
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080EC534 @ =gText_ThereIsNoPokemon
- ldr r3, _080EC538 @ =sub_80EC574
- movs r1, 0x2
- bl DisplayItemMessageOnField
- pop {r0}
- bx r0
- .align 2, 0
-_080EC534: .4byte gText_ThereIsNoPokemon
-_080EC538: .4byte sub_80EC574
- thumb_func_end sub_80EC520
-
- thumb_func_start sub_80EC53C
-sub_80EC53C: @ 80EC53C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- bl ClearDialogWindowAndFrame
- adds r0, r4, 0
- bl sub_80EBEB0
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _080EC56C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080EC570 @ =sub_80EBF40
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC56C: .4byte gTasks
-_080EC570: .4byte sub_80EBF40
- thumb_func_end sub_80EC53C
-
- thumb_func_start sub_80EC574
-sub_80EC574: @ 80EC574
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- bl MailboxPC_RemoveWindow
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- ldr r1, _080EC59C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080EC5A0 @ =sub_80EC53C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EC59C: .4byte gTasks
-_080EC5A0: .4byte sub_80EC53C
- thumb_func_end sub_80EC574
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/poison.s b/asm/poison.s
index 770941be8..0028cf7d8 100644
--- a/asm/poison.s
+++ b/asm/poison.s
@@ -20,7 +20,7 @@ sub_80B1620: @ 80B1620
_080B1636:
adds r0, r5, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2E]
ldr r4, _080B1678 @ =gBattleAnimTarget
@@ -39,7 +39,7 @@ _080B1636:
ldr r0, _080B167C @ =0x0000ffe2
strh r0, [r5, 0x38]
adds r0, r5, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080B1680 @ =sub_80B1684
str r0, [r5, 0x1C]
pop {r4,r5}
@@ -56,7 +56,7 @@ _080B1680: .4byte sub_80B1684
sub_80B1684: @ 80B1684
push {r4,lr}
adds r4, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080B1698
@@ -84,7 +84,7 @@ sub_80B16A0: @ 80B16A0
_080B16B8:
adds r0, r4, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080B1718 @ =gBattleAnimTarget
ldrb r0, [r0]
mov r6, sp
@@ -92,7 +92,7 @@ _080B16B8:
movs r1, 0x1
mov r2, sp
adds r3, r6, 0
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldr r0, _080B171C @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -117,7 +117,7 @@ _080B16E6:
ldr r0, _080B1720 @ =0x0000ffe2
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080B1724 @ =sub_80B1728
str r0, [r4, 0x1C]
add sp, 0x4
@@ -136,7 +136,7 @@ _080B1724: .4byte sub_80B1728
sub_80B1728: @ 80B1728
push {r4,lr}
adds r4, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080B173C
@@ -193,7 +193,7 @@ _080B1794: .4byte sub_80B1798
sub_80B1798: @ 80B1798
push {r4,lr}
adds r4, r0, 0
- bl sub_8074D00
+ bl TranslateSpriteLinearFixedPoint
ldrh r0, [r4, 0x30]
ldrh r1, [r4, 0x38]
subs r0, r1
@@ -225,7 +225,7 @@ sub_80B17C4: @ 80B17C4
adds r3, r4, 0
adds r3, 0x22
movs r1, 0x1
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldr r0, _080B1828 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -280,7 +280,7 @@ sub_80B1838: @ 80B1838
bne _080B1854
adds r0, r4, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
b _080B188A
.align 2, 0
_080B1850: .4byte gBattleAnimArgs
@@ -292,7 +292,7 @@ _080B1854:
adds r3, r4, 0
adds r3, 0x22
movs r1, 0x1
- bl sub_8076D9C
+ bl SetAverageBattlerPositions
ldr r0, _080B1898 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -323,4 +323,40 @@ _080B1898: .4byte gBattleAnimAttacker
_080B189C: .4byte sub_80B18A0
thumb_func_end sub_80B1838
+ thumb_func_start sub_80B18A0
+sub_80B18A0: @ 80B18A0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0xB
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ movs r1, 0x4
+ bl Sin
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x30
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080B18DC
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080B18DC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80B18A0
+
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokeball.s b/asm/pokeball.s
index 1d01b5c7e..fa1f4eee0 100644
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -290,7 +290,7 @@ _0804AB6C:
ldr r0, _0804ABC8 @ =0x0000ffd8
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
mov r0, sp
ldrh r0, [r0]
strh r0, [r4, 0x6]
@@ -328,7 +328,7 @@ SpriteCB_TestBallThrow: @ 804ABD4
push {r7}
sub sp, 0x4
adds r7, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _0804AC74
@@ -1692,7 +1692,7 @@ SpriteCB_PlayerMonSendOut_1: @ 804B684
ldrh r0, [r4, 0x3A]
strh r0, [r4, 0x6]
adds r0, r4, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _0804B6D0 @ =SpriteCB_PlayerMonSendOut_2
str r0, [r4, 0x1C]
pop {r4}
@@ -1754,7 +1754,7 @@ SpriteCB_PlayerMonSendOut_2: @ 804B6D4
_0804B736:
ldrh r4, [r5, 0x2E]
adds r0, r5, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
movs r1, 0x3A
ldrsh r0, [r5, r1]
movs r1, 0x3
@@ -1825,7 +1825,7 @@ _0804B78E:
b _0804B834
_0804B7C8:
adds r0, r5, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _0804B834
@@ -2580,13 +2580,13 @@ _0804BD80:
_0804BD84: .4byte SpriteCallbackDummy
thumb_func_end sub_804BD6C
- thumb_func_start DestroySpriteAndFreeResources_
-DestroySpriteAndFreeResources_: @ 804BD88
+ thumb_func_start DestroySpriteAndFreeResources2
+DestroySpriteAndFreeResources2: @ 804BD88
push {lr}
bl DestroySpriteAndFreeResources
pop {r0}
bx r0
- thumb_func_end DestroySpriteAndFreeResources_
+ thumb_func_end DestroySpriteAndFreeResources2
thumb_func_start sub_804BD94
sub_804BD94: @ 804BD94
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index b0b53da55..8320c5809 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -289,8 +289,8 @@ _081026D0:
_08102758: .4byte gUnknown_84404C8
thumb_func_end sub_810250C
- thumb_func_start sub_810275C
-sub_810275C: @ 810275C
+ thumb_func_start CB2_OpenPokedexFromStartMenu
+CB2_OpenPokedexFromStartMenu: @ 810275C
push {lr}
bl sub_810250C
movs r1, 0xC0
@@ -314,7 +314,7 @@ sub_810275C: @ 810275C
bx r0
.align 2, 0
_08102794: .4byte sub_81024D4
- thumb_func_end sub_810275C
+ thumb_func_end CB2_OpenPokedexFromStartMenu
thumb_func_start sub_8102798
sub_8102798: @ 8102798
@@ -428,13 +428,13 @@ sub_8102858: @ 8102858
lsls r1, 7
movs r0, 0
bl SetGpuRegBits
- ldr r0, _08102878 @ =sub_80568A8
+ ldr r0, _08102878 @ =CB2_ReturnToStartMenu
bl SetMainCallback2
_08102874:
pop {r0}
bx r0
.align 2, 0
-_08102878: .4byte sub_80568A8
+_08102878: .4byte CB2_ReturnToStartMenu
thumb_func_end sub_8102858
thumb_func_start sub_810287C
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
index 66bb3dc52..44598a330 100644
--- a/asm/pokemon_jump_2.s
+++ b/asm/pokemon_jump_2.s
@@ -6157,7 +6157,7 @@ sub_814A8B8: @ 814A8B8
movs r6, 0
cmp r6, r10
bge _0814A922
- ldr r0, _0814A938 @ =gUnknown_82349CC
+ ldr r0, _0814A938 @ =gMonFrontPicCoords
mov r9, r0
ldr r1, _0814A93C @ =gUnknown_203F3D8
mov r8, r1
@@ -6200,7 +6200,7 @@ _0814A922:
bx r0
.align 2, 0
_0814A934: .4byte gUnknown_846D9D4
-_0814A938: .4byte gUnknown_82349CC
+_0814A938: .4byte gMonFrontPicCoords
_0814A93C: .4byte gUnknown_203F3D8
thumb_func_end sub_814A8B8
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 9584b81a2..a68ced640 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -1417,7 +1417,7 @@ _0808C3E0:
adds r1, r5, 0
adds r1, 0x26
bl sub_808C72C
- bl sub_80F6E9C
+ bl LoadStdWindowFrameGfx
movs r0, 0
movs r1, 0
bl DrawDialogueFrame
@@ -1455,7 +1455,7 @@ _0808C3E0:
.align 2, 0
_0808C444: .4byte gUnknown_83CDA20
_0808C448:
- bl sub_807AA70
+ bl field_weather_is_fade_finished
lsls r0, 24
cmp r0, 0
bne _0808C454
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 24f7d7783..ec6e6723d 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -10728,7 +10728,7 @@ sub_8139D90: @ 8139D90
lsls r0, 2
ldr r1, _08139DB8 @ =gSprites
adds r0, r1
- bl DestroySpriteAndFreeResources_
+ bl DestroySpriteAndFreeResources2
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/psychic.s b/asm/psychic.s
deleted file mode 100644
index cff45fc8c..000000000
--- a/asm/psychic.s
+++ /dev/null
@@ -1,2180 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B2ECC
-sub_80B2ECC: @ 80B2ECC
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r0, _080B2F84 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B2EE8
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B2EFE
-_080B2EE8:
- ldrb r1, [r6, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r6, 0x5]
- adds r1, r6, 0
- adds r1, 0x43
- movs r0, 0xC8
- strb r0, [r1]
-_080B2EFE:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B2F5A
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- adds r0, r4, 0
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- eors r0, r1
- negs r1, r0
- orrs r1, r0
- lsrs r5, r1, 31
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B2F3C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8072E48
-_080B2F3C:
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r7
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B2F5A
- movs r0, 0x1
- eors r5, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8072E48
-_080B2F5A:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B2F90
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080B2F90
- ldr r0, _080B2F84 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B2F88
- movs r0, 0x48
- strh r0, [r6, 0x20]
- movs r0, 0x50
- b _080B2FCA
- .align 2, 0
-_080B2F84: .4byte gBattleAnimAttacker
-_080B2F88:
- movs r0, 0xB0
- strh r0, [r6, 0x20]
- movs r0, 0x28
- b _080B2FCA
-_080B2F90:
- ldr r5, _080B3000 @ =gBattleAnimAttacker
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B2FA6
- ldr r1, _080B3004 @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080B2FA6:
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, _080B3004 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
-_080B2FCA:
- strh r0, [r6, 0x22]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B2FDC
- ldrh r0, [r6, 0x22]
- adds r0, 0x9
- strh r0, [r6, 0x22]
-_080B2FDC:
- ldr r0, _080B3004 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r6, 0x2E]
- ldr r1, _080B3008 @ =sub_80B300C
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3000: .4byte gBattleAnimAttacker
-_080B3004: .4byte gBattleAnimArgs
-_080B3008: .4byte sub_80B300C
- thumb_func_end sub_80B2ECC
-
- thumb_func_start sub_80B300C
-sub_80B300C: @ 80B300C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r1, [r4, 0x34]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r0, 0xD
- bne _080B3038
- ldr r0, _080B3034 @ =sub_80B3044
- str r0, [r4, 0x1C]
- b _080B303C
- .align 2, 0
-_080B3034: .4byte sub_80B3044
-_080B3038:
- adds r0, r1, 0x1
- strh r0, [r4, 0x34]
-_080B303C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B300C
-
- thumb_func_start sub_80B3044
-sub_80B3044: @ 80B3044
- push {r4-r7,lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080B30A2
- movs r0, 0
- strh r0, [r3, 0x30]
- ldrh r4, [r3, 0x2E]
- ldr r1, _080B30A8 @ =gPlttBufferFaded
- adds r0, r4, 0
- adds r0, 0x8
- lsls r0, 1
- adds r0, r1
- ldrh r7, [r0]
- movs r5, 0x8
- adds r6, r1, 0
- adds r1, r4, 0x7
- lsls r0, r4, 1
- adds r0, r6
- adds r2, r0, 0
- adds r2, 0x10
- lsls r1, 1
- adds r1, r6
-_080B307A:
- ldrh r0, [r1]
- strh r0, [r2]
- subs r1, 0x2
- subs r2, 0x2
- subs r5, 0x1
- cmp r5, 0
- bgt _080B307A
- adds r0, r4, 0x1
- lsls r0, 1
- adds r0, r6
- strh r7, [r0]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- bne _080B30A2
- ldr r0, _080B30AC @ =sub_80B30B0
- str r0, [r3, 0x1C]
-_080B30A2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B30A8: .4byte gPlttBufferFaded
-_080B30AC: .4byte sub_80B30B0
- thumb_func_end sub_80B3044
-
- thumb_func_start sub_80B30B0
-sub_80B30B0: @ 80B30B0
- push {r4-r6,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x34]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r5, 0x34]
- subs r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080B3156
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B3146
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B3118
- ldr r2, _080B315C @ =gSprites
- ldr r0, _080B3160 @ =gBattlerSpriteIds
- adds r0, r4, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_080B3118:
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r6
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B3146
- ldr r2, _080B315C @ =gSprites
- ldr r0, _080B3160 @ =gBattlerSpriteIds
- adds r0, r4, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_080B3146:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080B3164 @ =sub_80B3168
- str r0, [r5, 0x1C]
-_080B3156:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B315C: .4byte gSprites
-_080B3160: .4byte gBattlerSpriteIds
-_080B3164: .4byte sub_80B3168
- thumb_func_end sub_80B30B0
-
- thumb_func_start sub_80B3168
-sub_80B3168: @ 80B3168
- push {r4-r6,lr}
- adds r6, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B31C0
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- eors r0, r1
- negs r1, r0
- orrs r1, r0
- lsrs r5, r1, 31
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B31A6
- adds r0, r5, 0
- bl sub_8073128
-_080B31A6:
- movs r0, 0x2
- eors r4, r0
- adds r0, r4, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080B31C0
- movs r0, 0x1
- eors r5, r0
- adds r0, r5, 0
- bl sub_8073128
-_080B31C0:
- ldr r0, _080B31CC @ =DestroyAnimSprite
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B31CC: .4byte DestroyAnimSprite
- thumb_func_end sub_80B3168
-
- thumb_func_start sub_80B31D0
-sub_80B31D0: @ 80B31D0
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B325C
- ldr r5, _080B321C @ =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r5, r1]
- movs r6, 0
- cmp r0, 0
- bne _080B31EA
- movs r6, 0x1
-_080B31EA:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B3232
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080B3232
- ldr r0, _080B3220 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080B3224
- ldrh r0, [r5]
- movs r1, 0x48
- subs r1, r0
- strh r1, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- adds r0, 0x50
- strh r0, [r4, 0x22]
- b _080B3254
- .align 2, 0
-_080B321C: .4byte gBattleAnimArgs
-_080B3220: .4byte gBattleAnimAttacker
-_080B3224:
- ldrh r0, [r5]
- adds r0, 0xB0
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- adds r0, 0x28
- strh r0, [r4, 0x22]
- b _080B3254
-_080B3232:
- ldr r0, _080B3248 @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B324C
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8075160
- b _080B3254
- .align 2, 0
-_080B3248: .4byte gBattleAnimArgs
-_080B324C:
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8075114
-_080B3254:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080B3270
-_080B325C:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- beq _080B3270
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080B3270:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B31D0
-
- thumb_func_start sub_80B3278
-sub_80B3278: @ 80B3278
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B32C0 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B32C8
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldrh r0, [r5, 0x20]
- subs r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- adds r0, 0xA
- strh r0, [r5, 0x22]
- ldr r0, _080B32C4 @ =0x0000ffff
- b _080B32D6
- .align 2, 0
-_080B32C0: .4byte gBattleAnimAttacker
-_080B32C4: .4byte 0x0000ffff
-_080B32C8:
- ldrh r0, [r5, 0x20]
- adds r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- subs r0, 0xA
- strh r0, [r5, 0x22]
- movs r0, 0x1
-_080B32D6:
- strh r0, [r5, 0x30]
- ldr r1, _080B32EC @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B32F0 @ =sub_8074F6C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B32EC: .4byte DestroyAnimSprite
-_080B32F0: .4byte sub_8074F6C
- thumb_func_end sub_80B3278
-
- thumb_func_start sub_80B32F4
-sub_80B32F4: @ 80B32F4
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r6, _080B3378 @ =gBattleAnimAttacker
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_8076B2C
- lsls r0, 16
- asrs r1, r0, 16
- lsrs r0, 31
- adds r1, r0
- lsls r1, 15
- lsrs r4, r1, 16
- ldrb r0, [r6]
- movs r1, 0
- bl sub_8076B2C
- lsls r0, 16
- asrs r1, r0, 16
- lsrs r0, 31
- adds r1, r0
- asrs r1, 1
- negs r1, r1
- lsls r1, 16
- lsrs r7, r1, 16
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B333A
- lsls r0, r4, 16
- negs r0, r0
- lsrs r4, r0, 16
-_080B333A:
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- adds r0, r7
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _080B3366
- movs r0, 0x10
- strh r0, [r5, 0x22]
-_080B3366:
- ldr r1, _080B337C @ =sub_80B3384
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r0, _080B3380 @ =sub_8074F6C
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3378: .4byte gBattleAnimAttacker
-_080B337C: .4byte sub_80B3384
-_080B3380: .4byte sub_8074F6C
- thumb_func_end sub_80B32F4
-
- thumb_func_start sub_80B3384
-sub_80B3384: @ 80B3384
- push {r4,lr}
- adds r4, r0, 0
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldr r0, _080B33B0 @ =gUnknown_83E6FF0
- str r0, [r4, 0x10]
- movs r0, 0
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- ldr r0, _080B33B4 @ =sub_80B33B8
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B33B0: .4byte gUnknown_83E6FF0
-_080B33B4: .4byte sub_80B33B8
- thumb_func_end sub_80B3384
-
- thumb_func_start sub_80B33B8
-sub_80B33B8: @ 80B33B8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B33CA
- cmp r0, 0x1
- beq _080B33F8
- b _080B3410
-_080B33CA:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B3410
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x1]
- movs r0, 0x12
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080B3410
-_080B33F8:
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080B3410
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B3410:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B33B8
-
- thumb_func_start sub_80B3418
-sub_80B3418: @ 80B3418
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080B3448 @ =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x8]
- ldr r2, _080B344C @ =gUnknown_83E700C
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080B3450 @ =sub_80B3454
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3448: .4byte gTasks
-_080B344C: .4byte gUnknown_83E700C
-_080B3450: .4byte sub_80B3454
- thumb_func_end sub_80B3418
-
- thumb_func_start sub_80B3454
-sub_80B3454: @ 80B3454
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B347C @ =gTasks
- adds r0, r1
- bl sub_8076308
- lsls r0, 24
- cmp r0, 0
- bne _080B3474
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080B3474:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B347C: .4byte gTasks
- thumb_func_end sub_80B3454
-
- thumb_func_start sub_80B3480
-sub_80B3480: @ 80B3480
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B34CC @ =gTasks
- adds r4, r1, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- strh r1, [r4, 0xC]
- ldr r0, _080B34D0 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0x8
- cmp r0, 0
- beq _080B34B4
- movs r1, 0x4
-_080B34B4:
- strh r1, [r4, 0xE]
- ldrb r1, [r4, 0x8]
- ldr r2, _080B34D4 @ =gUnknown_83E702C
- adds r0, r4, 0
- bl sub_80762D0
- ldr r0, _080B34D8 @ =sub_80B34DC
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B34CC: .4byte gTasks
-_080B34D0: .4byte gBattleAnimAttacker
-_080B34D4: .4byte gUnknown_83E702C
-_080B34D8: .4byte sub_80B34DC
- thumb_func_end sub_80B3480
-
- thumb_func_start sub_80B34DC
-sub_80B34DC: @ 80B34DC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B34FC @ =gTasks
- adds r4, r0, r1
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B3500
- cmp r0, 0x1
- beq _080B351C
- b _080B357A
- .align 2, 0
-_080B34FC: .4byte gTasks
-_080B3500:
- adds r0, r4, 0
- bl sub_8076308
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080B357A
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _080B357A
-_080B351C:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B3544
- ldr r2, _080B3540 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x8
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _080B357A
- .align 2, 0
-_080B3540: .4byte gSprites
-_080B3544:
- ldr r3, _080B3580 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x88
- lsls r1, 1
- strh r1, [r0, 0x20]
- ldrb r0, [r4, 0x8]
- bl ResetSpriteRotScale
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B357A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3580: .4byte gSprites
- thumb_func_end sub_80B34DC
-
- thumb_func_start sub_80B3584
-sub_80B3584: @ 80B3584
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B360C @ =gTasks
- adds r5, r1, r0
- movs r1, 0
- movs r0, 0x10
- strh r0, [r5, 0xE]
- strh r1, [r5, 0x10]
- ldr r4, _080B3610 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x24]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8076B2C
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8076B2C
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, r6
- bcs _080B35EE
- adds r1, r6, 0
-_080B35EE:
- strh r1, [r5, 0x20]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, _080B3614 @ =sub_80B3618
- str r0, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B360C: .4byte gTasks
-_080B3610: .4byte gBattleAnimAttacker
-_080B3614: .4byte sub_80B3618
- thumb_func_end sub_80B3584
-
- thumb_func_start sub_80B3618
-sub_80B3618: @ 80B3618
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B363C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080B3718
- cmp r1, 0x1
- bgt _080B3640
- cmp r1, 0
- beq _080B364E
- b _080B379E
- .align 2, 0
-_080B363C: .4byte gTasks
-_080B3640:
- cmp r1, 0x2
- bne _080B3646
- b _080B377A
-_080B3646:
- cmp r1, 0x3
- bne _080B364C
- b _080B3788
-_080B364C:
- b _080B379E
-_080B364E:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bgt _080B365E
- b _080B379E
-_080B365E:
- strh r1, [r4, 0xA]
- ldr r0, _080B369C @ =gUnknown_83E7044
- movs r2, 0x22
- ldrsh r1, [r4, r2]
- movs r3, 0x24
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- adds r1, 0x8
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x8
- adds r0, r1
- strh r2, [r0]
- cmp r2, 0x40
- beq _080B3702
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B36BC
- cmp r0, 0x1
- bgt _080B36A0
- cmp r0, 0
- beq _080B36AA
- b _080B3702
- .align 2, 0
-_080B369C: .4byte gUnknown_83E7044
-_080B36A0:
- cmp r0, 0x2
- beq _080B36D4
- cmp r0, 0x3
- beq _080B36EC
- b _080B3702
-_080B36AA:
- ldr r0, _080B36B8 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r4, 0x20]
- b _080B36FA
- .align 2, 0
-_080B36B8: .4byte gSprites
-_080B36BC:
- ldr r0, _080B36D0 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r4, 0x20]
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrh r0, [r4, 0x20]
- b _080B3700
- .align 2, 0
-_080B36D0: .4byte gSprites
-_080B36D4:
- ldr r1, _080B36E8 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r4, 0x20]
- strh r1, [r0, 0x24]
- ldrh r1, [r4, 0x20]
- strh r1, [r0, 0x26]
- b _080B3702
- .align 2, 0
-_080B36E8: .4byte gSprites
-_080B36EC:
- ldr r0, _080B3714 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r4, 0x20]
- negs r0, r0
-_080B36FA:
- strh r0, [r1, 0x24]
- ldrh r0, [r4, 0x20]
- negs r0, r0
-_080B3700:
- strh r0, [r1, 0x26]
-_080B3702:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080B379E
- b _080B377A
- .align 2, 0
-_080B3714: .4byte gSprites
-_080B3718:
- ldrh r0, [r4, 0xA]
- ands r1, r0
- cmp r1, 0
- beq _080B3728
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _080B372E
-_080B3728:
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
-_080B372E:
- ldrh r1, [r4, 0x10]
- lsls r1, 8
- ldrh r0, [r4, 0xE]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- bne _080B379E
- movs r5, 0x8
- adds r6, r4, 0
- adds r6, 0x8
-_080B3754:
- lsls r0, r5, 1
- adds r1, r6, r0
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x40
- beq _080B3770
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B3784 @ =gSprites
- adds r0, r1
- bl DestroySprite
-_080B3770:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xC
- bls _080B3754
-_080B377A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B379E
- .align 2, 0
-_080B3784: .4byte gSprites
-_080B3788:
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B379E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3618
-
- thumb_func_start sub_80B37A4
-sub_80B37A4: @ 80B37A4
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- subs r0, 0xA
- cmp r1, r0
- ble _080B37CE
- ldrh r0, [r4, 0x30]
- movs r1, 0x1
- ands r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080B37CE:
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080B37E0
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B37E0:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B37A4
-
- thumb_func_start sub_80B37EC
-sub_80B37EC: @ 80B37EC
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080B3828 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080B3818
- ldr r4, _080B382C @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_080B3818:
- ldrh r0, [r6, 0x2]
- strh r0, [r5, 0x2E]
- ldr r0, _080B3830 @ =sub_80B37A4
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3828: .4byte gBattleAnimArgs
-_080B382C: .4byte gBattleAnimAttacker
-_080B3830: .4byte sub_80B37A4
- thumb_func_end sub_80B37EC
-
- thumb_func_start sub_80B3834
-sub_80B3834: @ 80B3834
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B3890 @ =gTasks
- adds r5, r1, r0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B38D8
- ldr r0, _080B3894 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _080B38A4
- ldr r0, _080B3898 @ =0x0000fff6
- strh r0, [r5, 0x1C]
- ldr r4, _080B389C @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080B38A0 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- b _080B3962
- .align 2, 0
-_080B3890: .4byte gTasks
-_080B3894: .4byte gBattleAnimArgs
-_080B3898: .4byte 0x0000fff6
-_080B389C: .4byte gBattleAnimTarget
-_080B38A0: .4byte gBattleAnimAttacker
-_080B38A4:
- movs r0, 0xA
- strh r0, [r5, 0x1C]
- ldr r4, _080B38D0 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080B38D4 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- b _080B3956
- .align 2, 0
-_080B38D0: .4byte gBattleAnimAttacker
-_080B38D4: .4byte gBattleAnimTarget
-_080B38D8:
- ldr r0, _080B391C @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _080B392C
- ldr r0, _080B3920 @ =0x0000fff6
- strh r0, [r5, 0x1C]
- ldr r4, _080B3924 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080B3928 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_8076B2C
- adds r0, 0x8
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8076B2C
- adds r0, 0x8
- b _080B3962
- .align 2, 0
-_080B391C: .4byte gBattleAnimArgs
-_080B3920: .4byte 0x0000fff6
-_080B3924: .4byte gBattleAnimTarget
-_080B3928: .4byte gBattleAnimAttacker
-_080B392C:
- movs r0, 0xA
- strh r0, [r5, 0x1C]
- ldr r4, _080B3974 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8076B2C
- subs r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080B3978 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_8076B2C
- subs r0, 0x8
-_080B3956:
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8076B2C
- subs r0, 0x8
-_080B3962:
- strh r0, [r5, 0x24]
- movs r0, 0x6
- strh r0, [r5, 0xA]
- ldr r0, _080B397C @ =sub_80B3980
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3974: .4byte gBattleAnimAttacker
-_080B3978: .4byte gBattleAnimTarget
-_080B397C: .4byte sub_80B3980
- thumb_func_end sub_80B3834
-
- thumb_func_start sub_80B3980
-sub_80B3980: @ 80B3980
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B39A0 @ =gTasks
- adds r5, r0, r1
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- cmp r1, 0
- beq _080B39A4
- cmp r1, 0x1
- beq _080B3A18
- b _080B3A2C
- .align 2, 0
-_080B39A0: .4byte gTasks
-_080B39A4:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080B3A2C
- strh r1, [r5, 0xA]
- ldr r0, _080B3A10 @ =gUnknown_83E7114
- movs r2, 0x1E
- ldrsh r1, [r5, r2]
- movs r3, 0x20
- ldrsh r2, [r5, r3]
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080B39F8
- ldr r0, _080B3A14 @ =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r0
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x22]
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0x24]
- strh r0, [r4, 0x36]
- ldrh r0, [r5, 0x1C]
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_8075068
- ldrb r0, [r5, 0xC]
- movs r1, 0x3
- ands r1, r0
- adds r0, r4, 0
- bl StartSpriteAffineAnim
-_080B39F8:
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _080B3A2C
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080B3A2C
- .align 2, 0
-_080B3A10: .4byte gUnknown_83E7114
-_080B3A14: .4byte gSprites
-_080B3A18:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x11
- ble _080B3A2C
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B3A2C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3980
-
- thumb_func_start sub_80B3A34
-sub_80B3A34: @ 80B3A34
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B3A52
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080B3A52:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3A34
-
- thumb_func_start sub_80B3A58
-sub_80B3A58: @ 80B3A58
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B3A90 @ =gTasks
- adds r4, r1, r0
- ldr r0, _080B3A94 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_807492C
- lsls r0, 24
- lsrs r1, r0, 24
- adds r0, r1, 0
- subs r0, 0x20
- strh r0, [r4, 0x24]
- ldr r0, _080B3A98 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0x1
- beq _080B3AAE
- cmp r0, 0x1
- bgt _080B3A9C
- cmp r0, 0
- beq _080B3AA2
- b _080B3ACA
- .align 2, 0
-_080B3A90: .4byte gTasks
-_080B3A94: .4byte gBattleAnimTarget
-_080B3A98: .4byte gBattleAnimArgs
-_080B3A9C:
- cmp r0, 0x2
- beq _080B3ABA
- b _080B3ACA
-_080B3AA2:
- movs r0, 0x2
- strh r0, [r4, 0x1E]
- movs r0, 0x5
- strh r0, [r4, 0x20]
- movs r0, 0x40
- b _080B3AC2
-_080B3AAE:
- movs r0, 0x2
- strh r0, [r4, 0x1E]
- movs r0, 0x5
- strh r0, [r4, 0x20]
- movs r0, 0xC0
- b _080B3AC2
-_080B3ABA:
- movs r0, 0x4
- strh r0, [r4, 0x1E]
- strh r0, [r4, 0x20]
- movs r0, 0
-_080B3AC2:
- strh r0, [r4, 0x22]
- adds r0, r1, 0
- adds r0, 0x20
- strh r0, [r4, 0x26]
-_080B3ACA:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _080B3AD6
- movs r0, 0
- strh r0, [r4, 0x24]
-_080B3AD6:
- ldr r0, _080B3AF0 @ =gBattleAnimTarget
- ldrb r0, [r0]
- bl sub_80768B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B3AFC
- ldr r0, _080B3AF4 @ =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r4, 0x1C]
- ldr r0, _080B3AF8 @ =0x04000014
- b _080B3B04
- .align 2, 0
-_080B3AF0: .4byte gBattleAnimTarget
-_080B3AF4: .4byte gBattle_BG1_X
-_080B3AF8: .4byte 0x04000014
-_080B3AFC:
- ldr r0, _080B3B64 @ =gBattle_BG2_X
- ldrh r0, [r0]
- strh r0, [r4, 0x1C]
- ldr r0, _080B3B68 @ =0x04000018
-_080B3B04:
- str r0, [sp]
- ldrh r1, [r4, 0x24]
- lsls r3, r1, 16
- asrs r1, r3, 16
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- adds r0, 0x40
- cmp r1, r0
- bgt _080B3B3E
- ldr r5, _080B3B6C @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080B3B1E:
- asrs r3, 16
- lsls r1, r3, 1
- adds r2, r1, r5
- ldrh r0, [r4, 0x1C]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r4, 0x1C]
- strh r0, [r1]
- adds r3, 0x1
- lsls r3, 16
- asrs r1, r3, 16
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- adds r0, 0x40
- cmp r1, r0
- ble _080B3B1E
-_080B3B3E:
- ldr r0, _080B3B70 @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldr r0, _080B3B74 @ =sub_80B3B78
- str r0, [r4]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3B64: .4byte gBattle_BG2_X
-_080B3B68: .4byte 0x04000018
-_080B3B6C: .4byte gScanlineEffectRegBuffers
-_080B3B70: .4byte 0xa2600001
-_080B3B74: .4byte sub_80B3B78
- thumb_func_end sub_80B3A58
-
- thumb_func_start sub_80B3B78
-sub_80B3B78: @ 80B3B78
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B3BA0 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080B3C52
- cmp r0, 0x1
- bgt _080B3BA4
- cmp r0, 0
- beq _080B3BAA
- b _080B3C6A
- .align 2, 0
-_080B3BA0: .4byte gTasks
-_080B3BA4:
- cmp r0, 0x2
- beq _080B3C64
- b _080B3C6A
-_080B3BAA:
- ldrh r3, [r5, 0x22]
- ldrh r4, [r5, 0x24]
- movs r2, 0x24
- ldrsh r1, [r5, r2]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bgt _080B3C42
- ldr r0, _080B3BF4 @ =gSineTable
- mov r9, r0
- movs r7, 0x3
- ldr r1, _080B3BF8 @ =gScanlineEffectRegBuffers
- mov r12, r1
- movs r2, 0xF0
- lsls r2, 3
- add r2, r12
- mov r8, r2
-_080B3BCC:
- lsls r2, r3, 16
- asrs r0, r2, 15
- add r0, r9
- movs r3, 0
- ldrsh r0, [r0, r3]
- movs r3, 0x20
- ldrsh r1, [r5, r3]
- asrs r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r3, r0, 16
- adds r6, r2, 0
- cmp r3, 0
- ble _080B3BFC
- ldrh r1, [r5, 0xA]
- adds r0, r7, 0
- ands r0, r1
- adds r0, r3, r0
- b _080B3C08
- .align 2, 0
-_080B3BF4: .4byte gSineTable
-_080B3BF8: .4byte gScanlineEffectRegBuffers
-_080B3BFC:
- cmp r3, 0
- bge _080B3C0C
- ldrh r1, [r5, 0xA]
- adds r0, r7, 0
- ands r0, r1
- subs r0, r3, r0
-_080B3C08:
- lsls r0, 16
- lsrs r1, r0, 16
-_080B3C0C:
- lsls r2, r4, 16
- asrs r2, 16
- lsls r3, r2, 1
- mov r0, r12
- adds r4, r3, r0
- ldrh r0, [r5, 0x1C]
- lsls r1, 16
- asrs r1, 16
- adds r0, r1, r0
- strh r0, [r4]
- add r3, r8
- ldrh r0, [r5, 0x1C]
- adds r1, r0
- strh r1, [r3]
- asrs r0, r6, 16
- ldrh r1, [r5, 0x1E]
- adds r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r2, 0x1
- lsls r2, 16
- lsrs r4, r2, 16
- asrs r2, 16
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r2, r0
- ble _080B3BCC
-_080B3C42:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- ble _080B3C6A
- b _080B3C58
-_080B3C52:
- ldr r1, _080B3C60 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080B3C58:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080B3C6A
- .align 2, 0
-_080B3C60: .4byte gScanlineEffect
-_080B3C64:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B3C6A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3B78
-
- thumb_func_start sub_80B3C78
-sub_80B3C78: @ 80B3C78
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- mov r8, r4
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B3CAC @ =gTasks
- adds r7, r0, r1
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r5, r0, 24
- mov r10, r5
- adds r6, r5, 0
- cmp r6, 0xFF
- bne _080B3CB0
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080B3D5A
- .align 2, 0
-_080B3CAC: .4byte gTasks
-_080B3CB0:
- ldr r1, _080B3CD4 @ =gBattleAnimArgs
- ldrb r0, [r1]
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r1, r0, 16
- mov r9, r1
- asrs r0, 16
- cmp r0, 0
- bge _080B3CD8
- adds r0, r5, 0
- bl FreeOamMatrix
- mov r0, r8
- bl DestroyAnimVisualTask
- b _080B3D5A
- .align 2, 0
-_080B3CD4: .4byte gBattleAnimArgs
-_080B3CD8:
- ldr r2, _080B3D68 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r2, 0
- adds r0, 0x1C
- adds r0, r4, r0
- ldr r1, _080B3D6C @ =SpriteCallbackDummy
- str r1, [r0]
- adds r4, r2
- ldrb r0, [r4, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r4, 0x1]
- movs r0, 0x1F
- ands r6, r0
- lsls r2, r6, 1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- adds r1, r4, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r1, r9
- lsls r0, r1, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- movs r3, 0
- bl SetSpriteRotScale
- ldrb r3, [r4, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r4, 0
- bl CalcCenterToCornerVec
- ldr r1, _080B3D70 @ =gBattleAnimArgs
- ldrb r0, [r1]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x22]
- mov r0, r10
- strh r0, [r7, 0x24]
- mov r1, r9
- strh r1, [r7, 0x26]
- ldr r0, _080B3D74 @ =sub_80B3D78
- str r0, [r7]
-_080B3D5A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3D68: .4byte gSprites
-_080B3D6C: .4byte SpriteCallbackDummy
-_080B3D70: .4byte gBattleAnimArgs
-_080B3D74: .4byte sub_80B3D78
- thumb_func_end sub_80B3C78
-
- thumb_func_start sub_80B3D78
-sub_80B3D78: @ 80B3D78
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080B3D9C @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B3DFC
- cmp r0, 0x1
- bgt _080B3DA0
- cmp r0, 0
- beq _080B3DAA
- b _080B3E7C
- .align 2, 0
-_080B3D9C: .4byte gTasks
-_080B3DA0:
- cmp r0, 0x2
- beq _080B3E4C
- cmp r0, 0x3
- beq _080B3E6C
- b _080B3E7C
-_080B3DAA:
- ldrh r0, [r4, 0xA]
- adds r0, 0x4
- strh r0, [r4, 0xA]
- ldr r1, _080B3DF8 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 16
- asrs r1, 17
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- adds r1, r2, 0
- movs r3, 0
- bl SetSpriteRotScale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- lsls r1, 24
- lsrs r1, 24
- bl sub_8076494
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0x30
- bne _080B3E7C
- b _080B3E5E
- .align 2, 0
-_080B3DF8: .4byte gSineTable
-_080B3DFC:
- ldrh r0, [r4, 0xA]
- subs r0, 0x4
- strh r0, [r4, 0xA]
- ldr r1, _080B3E48 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 16
- asrs r1, 17
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- adds r1, r2, 0
- movs r3, 0
- bl SetSpriteRotScale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- lsls r1, 24
- lsrs r1, 24
- bl sub_8076494
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080B3E7C
- b _080B3E5E
- .align 2, 0
-_080B3E48: .4byte gSineTable
-_080B3E4C:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B3E68 @ =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
-_080B3E5E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B3E7C
- .align 2, 0
-_080B3E68: .4byte gSprites
-_080B3E6C:
- ldrh r0, [r4, 0x24]
- lsls r0, 24
- lsrs r0, 24
- bl FreeOamMatrix
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B3E7C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3D78
-
- thumb_func_start sub_80B3E84
-sub_80B3E84: @ 80B3E84
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080B3EFC
- cmp r0, 0x1
- bgt _080B3E9A
- cmp r0, 0
- beq _080B3EA4
- b _080B3FA4
-_080B3E9A:
- cmp r0, 0x2
- beq _080B3F2E
- cmp r0, 0x3
- beq _080B3F8E
- b _080B3FA4
-_080B3EA4:
- ldr r4, _080B3EF8 @ =gBattleAnimAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B3ED2
- ldrh r0, [r5, 0x22]
- adds r0, 0xC
- strh r0, [r5, 0x22]
-_080B3ED2:
- movs r0, 0x8
- strh r0, [r5, 0x30]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldrh r0, [r5, 0x30]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- b _080B3F26
- .align 2, 0
-_080B3EF8: .4byte gBattleAnimAttacker
-_080B3EFC:
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B3FA4
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xC4
- bl PlaySE12WithPanning
- adds r0, r5, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
-_080B3F26:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080B3FA4
-_080B3F2E:
- ldrh r0, [r5, 0x32]
- adds r1, r0, 0x1
- strh r1, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080B3F72
- movs r0, 0
- strh r0, [r5, 0x32]
- ldrh r1, [r5, 0x30]
- subs r1, 0x1
- strh r1, [r5, 0x30]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080B3F72
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080B3F72:
- movs r0, 0xE0
- lsls r0, 2
- adds r2, r0, 0
- ldrh r1, [r5, 0x34]
- adds r2, r1
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r5, 0x26]
- subs r0, r1
- strh r0, [r5, 0x26]
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r5, 0x34]
- b _080B3FA4
-_080B3F8E:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyAnimSprite
-_080B3FA4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3E84
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rock.s b/asm/rock.s
deleted file mode 100644
index c0da2bcfa..000000000
--- a/asm/rock.s
+++ /dev/null
@@ -1,1558 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B4634
-sub_80B4634: @ 80B4634
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080B46A0 @ =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _080B4654
- ldr r0, _080B46A4 @ =gBattleAnimTarget
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_8076D9C
-_080B4654:
- ldrh r0, [r6]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- movs r4, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- adds r0, 0xE
- strh r0, [r5, 0x22]
- ldrb r1, [r6, 0x2]
- adds r0, r5, 0
- bl StartSpriteAnim
- adds r0, r5, 0
- bl AnimateSprite
- strh r4, [r5, 0x2E]
- strh r4, [r5, 0x30]
- movs r0, 0x4
- strh r0, [r5, 0x32]
- movs r0, 0x10
- strh r0, [r5, 0x34]
- ldr r0, _080B46A8 @ =0x0000ffba
- strh r0, [r5, 0x36]
- ldrh r0, [r6, 0x4]
- strh r0, [r5, 0x38]
- ldr r1, _080B46AC @ =sub_80B46B4
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldr r1, _080B46B0 @ =sub_8074BE4
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B46A0: .4byte gBattleAnimArgs
-_080B46A4: .4byte gBattleAnimTarget
-_080B46A8: .4byte 0x0000ffba
-_080B46AC: .4byte sub_80B46B4
-_080B46B0: .4byte sub_8074BE4
- thumb_func_end sub_80B4634
-
- thumb_func_start sub_80B46B4
-sub_80B46B4: @ 80B46B4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x38]
- ldrh r2, [r4, 0x20]
- adds r0, r1, r2
- strh r0, [r4, 0x20]
- movs r0, 0xC0
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- movs r0, 0x4
- strh r0, [r4, 0x32]
- movs r0, 0x20
- strh r0, [r4, 0x34]
- ldr r0, _080B46EC @ =0x0000ffe8
- strh r0, [r4, 0x36]
- ldr r1, _080B46F0 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- ldr r1, _080B46F4 @ =sub_8074BE4
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B46EC: .4byte 0x0000ffe8
-_080B46F0: .4byte move_anim_8074EE0
-_080B46F4: .4byte sub_8074BE4
- thumb_func_end sub_80B46B4
-
- thumb_func_start sub_80B46F8
-sub_80B46F8: @ 80B46F8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080B4720 @ =gBattleAnimArgs
- ldrb r1, [r4, 0xA]
- bl StartSpriteAnim
- adds r0, r5, 0
- bl AnimateSprite
- ldr r0, _080B4724 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B4728
- ldrh r0, [r5, 0x20]
- ldrh r1, [r4]
- subs r0, r1
- b _080B472E
- .align 2, 0
-_080B4720: .4byte gBattleAnimArgs
-_080B4724: .4byte gBattleAnimAttacker
-_080B4728:
- ldrh r0, [r4]
- ldrh r1, [r5, 0x20]
- adds r0, r1
-_080B472E:
- strh r0, [r5, 0x20]
- ldr r3, _080B4770 @ =gBattleAnimArgs
- ldrh r2, [r3, 0x2]
- ldrh r0, [r5, 0x22]
- adds r2, r0
- movs r4, 0
- strh r2, [r5, 0x22]
- ldrh r0, [r3, 0x8]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldrh r1, [r3, 0x4]
- adds r0, r1
- strh r0, [r5, 0x32]
- strh r2, [r5, 0x34]
- ldrh r0, [r3, 0x6]
- adds r2, r0
- strh r2, [r5, 0x36]
- adds r0, r5, 0
- bl InitSpriteDataForLinearTranslation
- strh r4, [r5, 0x34]
- strh r4, [r5, 0x36]
- ldr r0, _080B4774 @ =sub_8074D00
- str r0, [r5, 0x1C]
- ldr r1, _080B4778 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4770: .4byte gBattleAnimArgs
-_080B4774: .4byte sub_8074D00
-_080B4778: .4byte move_anim_8074EE0
- thumb_func_end sub_80B46F8
-
- thumb_func_start sub_80B477C
-sub_80B477C: @ 80B477C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B4794 @ =gBattleAnimArgs
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080B4798
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
- b _080B47A0
- .align 2, 0
-_080B4794: .4byte gBattleAnimArgs
-_080B4798:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075114
-_080B47A0:
- ldr r1, _080B47BC @ =gBattleAnimArgs
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x34]
- ldr r0, _080B47C0 @ =sub_80B47C4
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B47BC: .4byte gBattleAnimArgs
-_080B47C0: .4byte sub_80B47C4
- thumb_func_end sub_80B477C
-
- thumb_func_start sub_80B47C4
-sub_80B47C4: @ 80B47C4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080B480A
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B480A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B47C4
-
- thumb_func_start do_boulder_dust
-do_boulder_dust: @ 80B4810
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r1, _080B48E4 @ =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, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B4854
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
-_080B4854:
- ldr r0, _080B48E8 @ =gBattle_BG1_X
- strh r5, [r0]
- ldr r4, _080B48EC @ =gBattle_BG1_Y
- strh r5, [r4]
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x16
- bl SetGpuReg
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080B48F0 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
- bl sub_807543C
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, _080B48F4 @ =gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80753B4
- ldr r0, _080B48F8 @ =gFile_graphics_battle_anims_sprites_261_palette
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080B48B0
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80730C0
-_080B48B0:
- ldr r0, _080B48FC @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080B48CA
- ldr r0, _080B4900 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B48CA
- movs r5, 0x1
-_080B48CA:
- ldr r0, _080B4904 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- strh r5, [r1, 0x8]
- ldr r0, _080B4908 @ =sub_80B490C
- str r0, [r1]
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B48E4: .4byte 0x00003f42
-_080B48E8: .4byte gBattle_BG1_X
-_080B48EC: .4byte gBattle_BG1_Y
-_080B48F0: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
-_080B48F4: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
-_080B48F8: .4byte gFile_graphics_battle_anims_sprites_261_palette
-_080B48FC: .4byte gBattleAnimArgs
-_080B4900: .4byte gBattleAnimAttacker
-_080B4904: .4byte gTasks
-_080B4908: .4byte sub_80B490C
- thumb_func_end do_boulder_dust
-
- thumb_func_start sub_80B490C
-sub_80B490C: @ 80B490C
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B4934 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0
- bne _080B4940
- ldr r1, _080B4938 @ =gBattle_BG1_X
- ldr r3, _080B493C @ =0x0000fffa
- adds r0, r3, 0
- ldrh r3, [r1]
- adds r0, r3
- b _080B4946
- .align 2, 0
-_080B4934: .4byte gTasks
-_080B4938: .4byte gBattle_BG1_X
-_080B493C: .4byte 0x0000fffa
-_080B4940:
- ldr r1, _080B4974 @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
-_080B4946:
- strh r0, [r1]
- ldr r1, _080B4978 @ =gBattle_BG1_Y
- ldr r3, _080B497C @ =0x0000ffff
- adds r0, r3, 0
- ldrh r3, [r1]
- adds r0, r3
- strh r0, [r1]
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r0, r2
- movs r3, 0x20
- ldrsh r0, [r0, r3]
- adds r4, r1, 0
- cmp r0, 0x4
- bls _080B4968
- b _080B4A96
-_080B4968:
- lsls r0, 2
- ldr r1, _080B4980 @ =_080B4984
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B4974: .4byte gBattle_BG1_X
-_080B4978: .4byte gBattle_BG1_Y
-_080B497C: .4byte 0x0000ffff
-_080B4980: .4byte _080B4984
- .align 2, 0
-_080B4984:
- .4byte _080B4998
- .4byte _080B49DA
- .4byte _080B49F4
- .4byte _080B4A36
- .4byte _080B4A58
-_080B4998:
- adds r0, r4, r5
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080B4A96
- strh r5, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- adds r1, 0x1
- strh r1, [r4, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bne _080B4A96
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x1E]
- b _080B4A96
-_080B49DA:
- adds r0, r4, r5
- lsls r0, 3
- adds r1, r0, r2
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x65
- bne _080B4A96
- movs r0, 0x7
- strh r0, [r1, 0x1E]
- b _080B4A4C
-_080B49F4:
- adds r0, r4, r5
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080B4A96
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- subs r1, 0x1
- strh r1, [r4, 0x1E]
- 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, 0x1E
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _080B4A96
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- strh r1, [r4, 0x1E]
- b _080B4A96
-_080B4A36:
- mov r0, sp
- bl sub_80752A0
- mov r0, sp
- ldrb r0, [r0, 0x9]
- bl sub_8075358
- ldr r0, _080B4A54 @ =gTasks
- adds r1, r4, r5
- lsls r1, 3
- adds r1, r0
-_080B4A4C:
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- b _080B4A96
- .align 2, 0
-_080B4A54: .4byte gTasks
-_080B4A58:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080B4A6C
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_080B4A6C:
- ldr r0, _080B4AA0 @ =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080B4AA4 @ =gBattle_BG1_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl SetAnimBgAttribute
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B4A96:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4AA0: .4byte gBattle_BG1_X
-_080B4AA4: .4byte gBattle_BG1_Y
- thumb_func_end sub_80B490C
-
- thumb_func_start sub_80B4AA8
-sub_80B4AA8: @ 80B4AA8
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080B4B24
- ldr r4, _080B4AEC @ =gBattleAnimArgs
- movs r2, 0x6
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080B4AF4
- ldr r0, _080B4AF0 @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _080B4AF4
- movs r0, 0x98
- lsls r0, 1
- strh r0, [r5, 0x20]
- ldrh r0, [r4, 0x2]
- negs r0, r0
- strh r0, [r4, 0x2]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- ldrb r1, [r5, 0x3]
- subs r0, 0x40
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r5, 0x3]
- b _080B4AF8
- .align 2, 0
-_080B4AEC: .4byte gBattleAnimArgs
-_080B4AF0: .4byte gBattleAnimAttacker
-_080B4AF4:
- ldr r0, _080B4B18 @ =0x0000ffc0
- strh r0, [r5, 0x20]
-_080B4AF8:
- ldr r4, _080B4B1C @ =gBattleAnimArgs
- ldrh r0, [r4]
- strh r0, [r5, 0x22]
- ldr r1, _080B4B20 @ =gUnknown_83E7470
- adds r0, r5, 0
- bl SetSubspriteTables
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080B4B80
- .align 2, 0
-_080B4B18: .4byte 0x0000ffc0
-_080B4B1C: .4byte gBattleAnimArgs
-_080B4B20: .4byte gUnknown_83E7470
-_080B4B24:
- ldrh r1, [r5, 0x30]
- ldrh r3, [r5, 0x34]
- adds r1, r3
- ldrh r2, [r5, 0x32]
- ldrh r0, [r5, 0x36]
- adds r2, r0
- lsls r0, r1, 16
- asrs r0, 24
- ldrh r3, [r5, 0x24]
- adds r0, r3
- strh r0, [r5, 0x24]
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r3, [r5, 0x26]
- adds r0, r3
- strh r0, [r5, 0x26]
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r5, 0x34]
- ands r2, r0
- strh r2, [r5, 0x36]
- movs r1, 0x38
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080B4B6A
- movs r2, 0x20
- ldrsh r0, [r5, r2]
- movs r3, 0x24
- ldrsh r1, [r5, r3]
- adds r0, r1
- movs r1, 0x88
- lsls r1, 1
- cmp r0, r1
- ble _080B4B80
- b _080B4B7C
-_080B4B6A:
- movs r1, 0x20
- ldrsh r0, [r5, r1]
- movs r2, 0x24
- ldrsh r1, [r5, r2]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _080B4B80
-_080B4B7C:
- ldr r0, _080B4B88 @ =DestroyAnimSprite
- str r0, [r5, 0x1C]
-_080B4B80:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4B88: .4byte DestroyAnimSprite
- thumb_func_end sub_80B4AA8
-
- thumb_func_start sub_80B4B8C
-sub_80B4B8C: @ 80B4B8C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B4BC4 @ =gBattleAnimArgs
- ldrb r1, [r5, 0x8]
- bl StartSpriteAnim
- adds r0, r4, 0
- movs r1, 0
- bl sub_8075160
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0x4]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x36]
- ldr r0, _080B4BC8 @ =StartAnimLinearTranslation
- str r0, [r4, 0x1C]
- ldr r1, _080B4BCC @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4BC4: .4byte gBattleAnimArgs
-_080B4BC8: .4byte StartAnimLinearTranslation
-_080B4BCC: .4byte DestroyAnimSprite
- thumb_func_end sub_80B4B8C
-
- thumb_func_start sub_80B4BD0
-sub_80B4BD0: @ 80B4BD0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080B4C50 @ =gTasks
- adds r6, r1, r0
- ldr r5, _080B4C54 @ =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0xC0
- lsls r1, 13
- adds r0, r1
- lsrs r7, r0, 16
- ldr r4, _080B4C58 @ =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 8
- movs r2, 0xC0
- lsls r2, 13
- adds r0, r2
- lsrs r0, 16
- mov r8, r0
- ldrb r1, [r5]
- movs r0, 0x2
- eors r0, r1
- ldrb r4, [r4]
- cmp r0, r4
- bne _080B4C40
- mov r8, r7
-_080B4C40:
- bl sub_80B4FB8
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bne _080B4C5C
- movs r0, 0x20
- b _080B4C62
- .align 2, 0
-_080B4C50: .4byte gTasks
-_080B4C54: .4byte gBattleAnimAttacker
-_080B4C58: .4byte gBattleAnimTarget
-_080B4C5C:
- lsls r1, r5, 3
- movs r0, 0x30
- subs r0, r1
-_080B4C62:
- strh r0, [r6, 0x18]
- movs r4, 0
- strh r4, [r6, 0x8]
- strh r4, [r6, 0x1E]
- strh r4, [r6, 0x1A]
- movs r0, 0x1
- strh r0, [r6, 0x20]
- movs r1, 0x18
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bge _080B4C7A
- adds r0, 0x7
-_080B4C7A:
- asrs r0, 3
- subs r0, 0x1
- strh r0, [r6, 0x1C]
- mov r2, r9
- lsls r0, r2, 3
- strh r0, [r6, 0xC]
- lsls r0, r7, 3
- strh r0, [r6, 0xE]
- mov r1, r10
- subs r0, r1, r2
- lsls r0, 3
- movs r2, 0x18
- ldrsh r1, [r6, r2]
- bl __divsi3
- strh r0, [r6, 0x10]
- mov r1, r8
- subs r0, r1, r7
- lsls r0, 3
- movs r2, 0x18
- ldrsh r1, [r6, r2]
- bl __divsi3
- strh r0, [r6, 0x12]
- strh r4, [r6, 0x14]
- strh r4, [r6, 0x16]
- movs r0, 0x40
- negs r0, r0
- bl sub_8073A44
- adds r4, r0, 0
- lsls r4, 24
- asrs r4, 8
- lsrs r4, 16
- movs r0, 0x3F
- bl sub_8073A44
- lsls r0, 24
- strh r4, [r6, 0x22]
- asrs r0, 24
- lsls r4, 16
- asrs r4, 16
- subs r0, r4
- movs r2, 0x18
- ldrsh r1, [r6, r2]
- bl __divsi3
- strh r0, [r6, 0x24]
- strh r5, [r6, 0xA]
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x26]
- ldr r0, _080B4CFC @ =sub_80B4D00
- str r0, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4CFC: .4byte sub_80B4D00
- thumb_func_end sub_80B4BD0
-
- thumb_func_start sub_80B4D00
-sub_80B4D00: @ 80B4D00
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080B4D24 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080B4D1A
- b _080B4E68
-_080B4D1A:
- lsls r0, 2
- ldr r1, _080B4D28 @ =_080B4D2C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B4D24: .4byte gTasks
-_080B4D28: .4byte _080B4D2C
- .align 2, 0
-_080B4D2C:
- .4byte _080B4D40
- .4byte _080B4DA4
- .4byte _080B4DAC
- .4byte _080B4E08
- .4byte _080B4E5A
-_080B4D40:
- ldrh r2, [r4, 0x14]
- ldrh r0, [r4, 0x10]
- subs r2, r0
- strh r2, [r4, 0x14]
- ldrh r0, [r4, 0x16]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x16]
- ldr r3, _080B4DA0 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- lsls r2, 16
- asrs r2, 19
- strh r2, [r0, 0x24]
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r0, [r4, 0x16]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r1, 0x26]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _080B4D90
- movs r0, 0x14
- strh r0, [r4, 0x1E]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080B4D90:
- ldrh r1, [r4, 0x22]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x9B
- bl PlaySE12WithPanning
- b _080B4E68
- .align 2, 0
-_080B4DA0: .4byte gSprites
-_080B4DA4:
- ldrh r0, [r4, 0x1E]
- subs r0, 0x1
- strh r0, [r4, 0x1E]
- b _080B4E4C
-_080B4DAC:
- ldrh r0, [r4, 0x1A]
- subs r0, 0x1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- beq _080B4DCC
- ldrh r0, [r4, 0x10]
- ldrh r2, [r4, 0x14]
- adds r0, r2
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0x16]
- adds r0, r1
- strh r0, [r4, 0x16]
- b _080B4DD6
-_080B4DCC:
- strh r0, [r4, 0x14]
- strh r0, [r4, 0x16]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080B4DD6:
- ldr r2, _080B4E04 @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r4, 0x14]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r1, 0x24]
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r4, 0x16]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r1, 0x26]
- b _080B4E68
- .align 2, 0
-_080B4E04: .4byte gSprites
-_080B4E08:
- ldrh r0, [r4, 0x10]
- ldrh r2, [r4, 0xC]
- adds r0, r2
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0xE]
- adds r0, r1
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x1C
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _080B4E46
- movs r0, 0
- strh r0, [r4, 0x1A]
- adds r0, r4, 0
- bl sub_80B4E70
- ldrh r1, [r4, 0x24]
- ldrh r0, [r4, 0x22]
- adds r1, r0
- strh r1, [r4, 0x22]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xA8
- bl PlaySE12WithPanning
-_080B4E46:
- ldrh r0, [r4, 0x18]
- subs r0, 0x1
- strh r0, [r4, 0x18]
-_080B4E4C:
- lsls r0, 16
- cmp r0, 0
- bne _080B4E68
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080B4E68
-_080B4E5A:
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B4E68
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080B4E68:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B4D00
-
- thumb_func_start sub_80B4E70
-sub_80B4E70: @ 80B4E70
- push {r4-r7,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bhi _080B4F60
- lsls r0, 2
- ldr r1, _080B4E8C @ =_080B4E90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B4E8C: .4byte _080B4E90
- .align 2, 0
-_080B4E90:
- .4byte _080B4EA4
- .4byte _080B4EB0
- .4byte _080B4EB0
- .4byte _080B4EBC
- .4byte _080B4EC8
-_080B4EA4:
- ldr r3, _080B4EAC @ =gUnknown_83E74D8
- movs r5, 0
- b _080B4ECC
- .align 2, 0
-_080B4EAC: .4byte gUnknown_83E74D8
-_080B4EB0:
- ldr r3, _080B4EB8 @ =gUnknown_83E74F0
- movs r5, 0x50
- b _080B4ECC
- .align 2, 0
-_080B4EB8: .4byte gUnknown_83E74F0
-_080B4EBC:
- ldr r3, _080B4EC4 @ =gUnknown_83E74F0
- movs r5, 0x40
- b _080B4ECC
- .align 2, 0
-_080B4EC4: .4byte gUnknown_83E74F0
-_080B4EC8:
- ldr r3, _080B4F68 @ =gUnknown_83E74F0
- movs r5, 0x30
-_080B4ECC:
- ldrh r1, [r4, 0xC]
- lsls r1, 16
- asrs r1, 19
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r4, 0xE]
- lsls r2, 16
- asrs r2, 19
- lsls r2, 16
- movs r6, 0x20
- ldrsh r0, [r4, r6]
- lsls r0, 2
- adds r1, r0
- lsls r1, 16
- lsrs r6, r1, 16
- asrs r1, 16
- lsrs r7, r2, 16
- asrs r2, 16
- adds r0, r3, 0
- movs r3, 0x23
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080B4F58
- ldr r1, _080B4F6C @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x12
- strh r1, [r0, 0x2E]
- movs r2, 0x20
- ldrsh r1, [r4, r2]
- lsls r2, r1, 2
- adds r2, r1
- lsls r2, 2
- adds r2, r6, r2
- movs r6, 0xA
- ldrsh r3, [r4, r6]
- lsls r1, r3, 1
- adds r1, r3
- adds r2, r1
- strh r2, [r0, 0x32]
- strh r7, [r0, 0x36]
- movs r1, 0xA
- ldrsh r2, [r4, r1]
- lsls r2, 1
- movs r3, 0x10
- negs r3, r3
- adds r1, r3, 0
- subs r1, r2
- strh r1, [r0, 0x38]
- ldrh r3, [r0, 0x4]
- lsls r2, r3, 22
- lsrs r2, 22
- adds r2, r5
- ldr r5, _080B4F70 @ =0x000003ff
- adds r1, r5, 0
- ands r2, r1
- ldr r1, _080B4F74 @ =0xfffffc00
- ands r1, r3
- orrs r1, r2
- strh r1, [r0, 0x4]
- bl sub_8075068
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
-_080B4F58:
- movs r6, 0x20
- ldrsh r0, [r4, r6]
- negs r0, r0
- strh r0, [r4, 0x20]
-_080B4F60:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4F68: .4byte gUnknown_83E74F0
-_080B4F6C: .4byte gSprites
-_080B4F70: .4byte 0x000003ff
-_080B4F74: .4byte 0xfffffc00
- thumb_func_end sub_80B4E70
-
- thumb_func_start sub_80B4F78
-sub_80B4F78: @ 80B4F78
- push {r4,lr}
- adds r4, r0, 0
- bl AnimateBallThrow
- lsls r0, 24
- cmp r0, 0
- beq _080B4FAA
- ldr r0, _080B4FB0 @ =sub_80B4D00
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080B4FA4
- ldr r0, _080B4FB4 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1E]
- subs r0, 0x1
- strh r0, [r1, 0x1E]
-_080B4FA4:
- adds r0, r4, 0
- bl DestroySprite
-_080B4FAA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4FB0: .4byte sub_80B4D00
-_080B4FB4: .4byte gTasks
- thumb_func_end sub_80B4F78
-
- thumb_func_start sub_80B4FB8
-sub_80B4FB8: @ 80B4FB8
- push {lr}
- ldr r0, _080B4FE0 @ =gAnimDisableStructPtr
- ldr r0, [r0]
- ldrb r1, [r0, 0x11]
- lsrs r0, r1, 4
- lsls r1, 28
- lsrs r1, 28
- subs r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x4
- bls _080B4FDA
- movs r1, 0x1
-_080B4FDA:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080B4FE0: .4byte gAnimDisableStructPtr
- thumb_func_end sub_80B4FB8
-
- thumb_func_start sub_80B4FE4
-sub_80B4FE4: @ 80B4FE4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B501C @ =gBattleAnimArgs
- ldrb r1, [r5, 0x8]
- bl StartSpriteAnim
- ldrh r0, [r5]
- strh r0, [r4, 0x24]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- ldrh r1, [r5, 0x4]
- subs r0, r1
- strh r0, [r4, 0x34]
- movs r0, 0x3
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x30]
- ldr r0, _080B5020 @ =sub_80B5024
- str r0, [r4, 0x1C]
- adds r4, 0x3E
- ldrb r0, [r4]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B501C: .4byte gBattleAnimArgs
-_080B5020: .4byte sub_80B5024
- thumb_func_end sub_80B4FE4
-
- thumb_func_start sub_80B5024
-sub_80B5024: @ 80B5024
- push {lr}
- adds r2, r0, 0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r3]
- ldrh r1, [r2, 0x34]
- movs r3, 0x34
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _080B505C
- ldrh r3, [r2, 0x32]
- adds r0, r1, r3
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x2E]
- adds r1, r0
- strh r1, [r2, 0x34]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r1, 16
- cmp r1, 0
- ble _080B506E
- movs r0, 0
- strh r0, [r2, 0x34]
- b _080B506E
-_080B505C:
- ldrh r0, [r2, 0x30]
- subs r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _080B506E
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080B506E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B5024
-
- thumb_func_start sub_80B5074
-sub_80B5074: @ 80B5074
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080B509C @ =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B5090
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080B5090:
- adds r0, r4, 0
- bl sub_8075DF4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B509C: .4byte gBattleAnimAttacker
- thumb_func_end sub_80B5074
-
- thumb_func_start sub_80B50A0
-sub_80B50A0: @ 80B50A0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080B50EC @ =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B50F0 @ =gBattleAnimArgs
- ldrh r3, [r2]
- ldrh r5, [r4, 0x20]
- adds r1, r3, r5
- strh r1, [r4, 0x20]
- ldrh r1, [r2, 0x2]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r3, [r4, 0x30]
- strh r1, [r4, 0x32]
- ldrh r0, [r2, 0x4]
- strh r0, [r4, 0x38]
- ldrb r1, [r2, 0x6]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _080B50F4 @ =sub_80B50F8
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B50EC: .4byte gBattleAnimTarget
-_080B50F0: .4byte gBattleAnimArgs
-_080B50F4: .4byte sub_80B50F8
- thumb_func_end sub_80B50A0
-
- thumb_func_start sub_80B50F8
-sub_80B50F8: @ 80B50F8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x8
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r1, 0x28
- bl __divsi3
- ldrh r1, [r4, 0x24]
- adds r1, r0
- strh r1, [r4, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x26]
- subs r1, r0
- strh r1, [r4, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x8C
- ble _080B5142
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080B5142:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B50F8
-
- thumb_func_start sub_80B5148
-sub_80B5148: @ 80B5148
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080B5180 @ =gAnimMoveDmg
- ldr r0, [r2]
- cmp r0, 0x20
- bgt _080B515C
- ldr r1, _080B5184 @ =gBattleAnimArgs
- movs r0, 0
- strh r0, [r1, 0xE]
-_080B515C:
- ldr r2, [r2]
- adds r0, r2, 0
- subs r0, 0x21
- cmp r0, 0x20
- bhi _080B516C
- ldr r1, _080B5184 @ =gBattleAnimArgs
- movs r0, 0x1
- strh r0, [r1, 0xE]
-_080B516C:
- cmp r2, 0x41
- ble _080B5176
- ldr r1, _080B5184 @ =gBattleAnimArgs
- movs r0, 0x2
- strh r0, [r1, 0xE]
-_080B5176:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B5180: .4byte gAnimMoveDmg
-_080B5184: .4byte gBattleAnimArgs
- thumb_func_end sub_80B5148
-
- thumb_func_start sub_80B5188
-sub_80B5188: @ 80B5188
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080B51E4 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080B51AA
- movs r0, 0
- bl sub_8075458
- movs r0, 0xC8
- strh r0, [r5, 0xA]
-_080B51AA:
- ldr r4, _080B51E8 @ =gBattle_BG3_Y
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- movs r1, 0xA
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- ldrh r0, [r5, 0xA]
- subs r0, 0x3
- strh r0, [r5, 0xA]
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x78
- bne _080B51D6
- movs r0, 0x1
- bl sub_8075458
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080B51D6:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B51E4: .4byte gTasks
-_080B51E8: .4byte gBattle_BG3_Y
- thumb_func_end sub_80B5188
-
- thumb_func_start sub_80B51EC
-sub_80B51EC: @ 80B51EC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080B5258 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080B5218
- movs r0, 0
- bl sub_8075458
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldr r0, _080B525C @ =gBattle_BG3_Y
- ldrh r0, [r0]
- strh r0, [r4, 0xC]
-_080B5218:
- ldrh r0, [r4, 0xA]
- adds r0, 0x50
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0xA]
- ldr r6, _080B525C @ =gBattle_BG3_Y
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- movs r0, 0x4
- bl Cos
- ldrh r4, [r4, 0xC]
- adds r0, r4
- strh r0, [r6]
- ldr r0, _080B5260 @ =gBattleAnimArgs
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- ldr r0, _080B5264 @ =0x00000fff
- cmp r1, r0
- bne _080B5250
- movs r0, 0
- strh r0, [r6]
- movs r0, 0x1
- bl sub_8075458
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080B5250:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B5258: .4byte gTasks
-_080B525C: .4byte gBattle_BG3_Y
-_080B5260: .4byte gBattleAnimArgs
-_080B5264: .4byte 0x00000fff
- thumb_func_end sub_80B51EC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/save_failed_screen.s b/asm/save_failed_screen.s
index 09503af6a..aa9d375a3 100644
--- a/asm/save_failed_screen.s
+++ b/asm/save_failed_screen.s
@@ -158,16 +158,16 @@ _080F5240:
adds r1, r0, 0
cmp r1, 0x1
bne _080F5260
- ldr r0, _080F5258 @ =gUnknown_3005420
+ ldr r0, _080F5258 @ =gSaveSucceeded
strh r1, [r0]
ldr r0, _080F525C @ =gUnknown_8418E09
bl sub_80F5404
b _080F526C
.align 2, 0
-_080F5258: .4byte gUnknown_3005420
+_080F5258: .4byte gSaveSucceeded
_080F525C: .4byte gUnknown_8418E09
_080F5260:
- ldr r0, _080F5274 @ =gUnknown_3005420
+ ldr r0, _080F5274 @ =gSaveSucceeded
movs r1, 0xFF
strh r1, [r0]
ldr r0, _080F5278 @ =gUnknown_8418CD9
@@ -178,7 +178,7 @@ _080F526C:
strb r0, [r1]
b _080F52D6
.align 2, 0
-_080F5274: .4byte gUnknown_3005420
+_080F5274: .4byte gSaveSucceeded
_080F5278: .4byte gUnknown_8418CD9
_080F527C: .4byte gUnknown_203AB50
_080F5280:
diff --git a/asm/save_menu_util.s b/asm/save_menu_util.s
index 1cb9d85a3..8ebfc3731 100644
--- a/asm/save_menu_util.s
+++ b/asm/save_menu_util.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_80F7FCC
-sub_80F7FCC: @ 80F7FCC
+ thumb_func_start SaveStatToString
+SaveStatToString: @ 80F7FCC
push {r4-r7,lr}
lsls r0, 24
lsrs r3, r0, 24
@@ -144,6 +144,6 @@ _080F80D8:
bx r0
.align 2, 0
_080F80E0: .4byte 0x00000827
- thumb_func_end sub_80F7FCC
+ thumb_func_end SaveStatToString
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_menu.s b/asm/script_menu.s
index 59af843f1..56781a953 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -1127,7 +1127,7 @@ _0809D1FA:
adds r1, r4, 0
adds r2, r7, 0
movs r3, 0x12
- bl sub_812E6DC
+ bl Menu_PrintFormatIntlPlayerName
movs r0, 0x10
str r0, [sp]
mov r0, r9
diff --git a/asm/shop.s b/asm/shop.s
index c0f4779b7..bc5eccd64 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -386,7 +386,7 @@ sub_809AD8C: @ 809AD8C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_807AA70
+ bl field_weather_is_fade_finished
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asm/start_menu.s b/asm/start_menu.s
deleted file mode 100644
index 7ab76140f..000000000
--- a/asm/start_menu.s
+++ /dev/null
@@ -1,2219 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_806ED54
-sub_806ED54: @ 806ED54
- push {lr}
- ldr r0, _0806ED6C @ =gUnknown_20370F5
- movs r1, 0
- strb r1, [r0]
- bl IsUpdateLinkStateCBActive
- cmp r0, 0x1
- bne _0806ED70
- bl sub_806EE34
- b _0806ED90
- .align 2, 0
-_0806ED6C: .4byte gUnknown_20370F5
-_0806ED70:
- bl InUnionRoom
- cmp r0, 0x1
- bne _0806ED7E
- bl sub_806EE58
- b _0806ED90
-_0806ED7E:
- bl GetSafariZoneFlag
- cmp r0, 0x1
- bne _0806ED8C
- bl sub_806EE04
- b _0806ED90
-_0806ED8C:
- bl sub_806EDB0
-_0806ED90:
- pop {r0}
- bx r0
- thumb_func_end sub_806ED54
-
- thumb_func_start sub_806ED94
-sub_806ED94: @ 806ED94
- push {lr}
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0806EDA8 @ =gUnknown_20370F6
- ldr r1, _0806EDAC @ =gUnknown_20370F5
- bl AppendToList
- pop {r0}
- bx r0
- .align 2, 0
-_0806EDA8: .4byte gUnknown_20370F6
-_0806EDAC: .4byte gUnknown_20370F5
- thumb_func_end sub_806ED94
-
- thumb_func_start sub_806EDB0
-sub_806EDB0: @ 806EDB0
- push {lr}
- ldr r0, _0806EDFC @ =0x00000829
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806EDC6
- movs r0, 0
- bl sub_806ED94
-_0806EDC6:
- ldr r0, _0806EE00 @ =0x00000828
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806EDDA
- movs r0, 0x1
- bl sub_806ED94
-_0806EDDA:
- movs r0, 0x2
- bl sub_806ED94
- movs r0, 0x3
- bl sub_806ED94
- movs r0, 0x4
- bl sub_806ED94
- movs r0, 0x5
- bl sub_806ED94
- movs r0, 0x6
- bl sub_806ED94
- pop {r0}
- bx r0
- .align 2, 0
-_0806EDFC: .4byte 0x00000829
-_0806EE00: .4byte 0x00000828
- thumb_func_end sub_806EDB0
-
- thumb_func_start sub_806EE04
-sub_806EE04: @ 806EE04
- push {lr}
- movs r0, 0x7
- bl sub_806ED94
- movs r0, 0
- bl sub_806ED94
- movs r0, 0x1
- bl sub_806ED94
- movs r0, 0x2
- bl sub_806ED94
- movs r0, 0x3
- bl sub_806ED94
- movs r0, 0x5
- bl sub_806ED94
- movs r0, 0x6
- bl sub_806ED94
- pop {r0}
- bx r0
- thumb_func_end sub_806EE04
-
- thumb_func_start sub_806EE34
-sub_806EE34: @ 806EE34
- push {lr}
- movs r0, 0x1
- bl sub_806ED94
- movs r0, 0x2
- bl sub_806ED94
- movs r0, 0x8
- bl sub_806ED94
- movs r0, 0x5
- bl sub_806ED94
- movs r0, 0x6
- bl sub_806ED94
- pop {r0}
- bx r0
- thumb_func_end sub_806EE34
-
- thumb_func_start sub_806EE58
-sub_806EE58: @ 806EE58
- push {lr}
- movs r0, 0x1
- bl sub_806ED94
- movs r0, 0x2
- bl sub_806ED94
- movs r0, 0x3
- bl sub_806ED94
- movs r0, 0x5
- bl sub_806ED94
- movs r0, 0x6
- bl sub_806ED94
- pop {r0}
- bx r0
- thumb_func_end sub_806EE58
-
- thumb_func_start sub_806EE7C
-sub_806EE7C: @ 806EE7C
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r4, _0806EEF4 @ =gUnknown_2037101
- ldr r0, _0806EEF8 @ =gUnknown_83A738C
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r0, _0806EEFC @ =gStringVar1
- ldr r1, _0806EF00 @ =gSafariZoneStepCounter
- ldrh r1, [r1]
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, _0806EF04 @ =gStringVar2
- movs r1, 0x96
- lsls r1, 2
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, _0806EF08 @ =gStringVar3
- ldr r1, _0806EF0C @ =gNumSafariBalls
- ldrb r1, [r1]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r5, _0806EF10 @ =gStringVar4
- ldr r1, _0806EF14 @ =gUnknown_84162A9
- adds r0, r5, 0
- bl StringExpandPlaceholders
- ldrb r0, [r4]
- movs r1, 0x3
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x2
- adds r2, r5, 0
- movs r3, 0x4
- bl AddTextPrinterParameterized
- ldrb r0, [r4]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806EEF4: .4byte gUnknown_2037101
-_0806EEF8: .4byte gUnknown_83A738C
-_0806EEFC: .4byte gStringVar1
-_0806EF00: .4byte gSafariZoneStepCounter
-_0806EF04: .4byte gStringVar2
-_0806EF08: .4byte gStringVar3
-_0806EF0C: .4byte gNumSafariBalls
-_0806EF10: .4byte gStringVar4
-_0806EF14: .4byte gUnknown_84162A9
- thumb_func_end sub_806EE7C
-
- thumb_func_start sub_806EF18
-sub_806EF18: @ 806EF18
- push {r4,lr}
- bl GetSafariZoneFlag
- cmp r0, 0
- beq _0806EF3A
- ldr r4, _0806EF40 @ =gUnknown_2037101
- ldrb r0, [r4]
- movs r1, 0
- bl ClearStdWindowAndFrameToTransparent
- ldrb r0, [r4]
- movs r1, 0x2
- bl CopyWindowToVram
- ldrb r0, [r4]
- bl RemoveWindow
-_0806EF3A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806EF40: .4byte gUnknown_2037101
- thumb_func_end sub_806EF18
-
- thumb_func_start sub_806EF44
-sub_806EF44: @ 806EF44
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r0
- lsls r1, 24
- lsrs r6, r1, 24
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _0806EF9C @ =gUnknown_83A7344
- mov r10, r0
- ldr r1, _0806EFA0 @ =gStringVar4
- mov r9, r1
-_0806EF68:
- ldr r1, _0806EFA4 @ =gUnknown_20370F6
- lsls r0, r2, 16
- asrs r5, r0, 16
- adds r4, r5, r1
- ldrb r1, [r4]
- adds r7, r0, 0
- cmp r1, 0x3
- beq _0806EF7C
- cmp r1, 0x8
- bne _0806EFA8
-_0806EF7C:
- bl GetStartMenuWindowId
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4]
- lsls r1, 3
- add r1, r10
- ldr r1, [r1]
- lsls r3, r5, 4
- subs r3, r5
- lsls r3, 16
- lsrs r3, 16
- movs r2, 0x8
- bl sub_812E6DC
- b _0806EFDA
- .align 2, 0
-_0806EF9C: .4byte gUnknown_83A7344
-_0806EFA0: .4byte gStringVar4
-_0806EFA4: .4byte gUnknown_20370F6
-_0806EFA8:
- ldrb r0, [r4]
- lsls r0, 3
- add r0, r10
- ldr r1, [r0]
- mov r0, r9
- bl StringExpandPlaceholders
- bl GetStartMenuWindowId
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r5, 4
- subs r1, r5
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x2
- mov r2, r9
- movs r3, 0x8
- bl AddTextPrinterParameterized
-_0806EFDA:
- movs r0, 0x80
- lsls r0, 9
- adds r1, r7, r0
- lsrs r2, r1, 16
- asrs r1, 16
- ldr r0, _0806F000 @ =gUnknown_20370F5
- ldrb r0, [r0]
- cmp r1, r0
- bge _0806F004
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _0806EF68
- mov r1, r8
- strb r2, [r1]
- movs r0, 0
- b _0806F00A
- .align 2, 0
-_0806F000: .4byte gUnknown_20370F5
-_0806F004:
- mov r0, r8
- strb r2, [r0]
- movs r0, 0x1
-_0806F00A:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_806EF44
-
- thumb_func_start sub_806F01C
-sub_806F01C: @ 806F01C
- push {r4,lr}
- sub sp, 0xC
- ldr r0, _0806F038 @ =gUnknown_20370FF
- movs r1, 0
- ldrsb r1, [r0, r1]
- adds r2, r0, 0
- cmp r1, 0x5
- bls _0806F02E
- b _0806F140
-_0806F02E:
- lsls r0, r1, 2
- ldr r1, _0806F03C @ =_0806F040
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806F038: .4byte gUnknown_20370FF
-_0806F03C: .4byte _0806F040
- .align 2, 0
-_0806F040:
- .4byte _0806F058
- .4byte _0806F060
- .4byte _0806F06C
- .4byte _0806F090
- .4byte _0806F0A4
- .4byte _0806F0C4
-_0806F058:
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _0806F140
-_0806F060:
- bl sub_806ED54
- ldr r1, _0806F068 @ =gUnknown_20370FF
- b _0806F0B8
- .align 2, 0
-_0806F068: .4byte gUnknown_20370FF
-_0806F06C:
- bl sub_80F6E9C
- ldr r0, _0806F088 @ =gUnknown_20370F5
- ldrb r0, [r0]
- bl sub_80F78E0
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r1, _0806F08C @ =gUnknown_20370FF
- b _0806F0B8
- .align 2, 0
-_0806F088: .4byte gUnknown_20370F5
-_0806F08C: .4byte gUnknown_20370FF
-_0806F090:
- bl GetSafariZoneFlag
- cmp r0, 0
- beq _0806F09C
- bl sub_806EE7C
-_0806F09C:
- ldr r1, _0806F0A0 @ =gUnknown_20370FF
- b _0806F0B8
- .align 2, 0
-_0806F0A0: .4byte gUnknown_20370FF
-_0806F0A4:
- ldr r4, _0806F0C0 @ =gUnknown_2037100
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_806EF44
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0806F140
- subs r1, r4, 0x1
-_0806F0B8:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0806F140
- .align 2, 0
-_0806F0C0: .4byte gUnknown_2037100
-_0806F0C4:
- bl GetStartMenuWindowId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xF
- str r1, [sp]
- ldr r1, _0806F12C @ =gUnknown_20370F5
- ldrb r1, [r1]
- str r1, [sp, 0x4]
- ldr r4, _0806F130 @ =gUnknown_20370F4
- ldrb r1, [r4]
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0
- bl Menu_InitCursor
- strb r0, [r4]
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- cmp r0, 0
- bne _0806F118
- bl InUnionRoom
- cmp r0, 0x1
- beq _0806F118
- ldr r0, _0806F134 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- bne _0806F118
- ldr r2, _0806F138 @ =gUnknown_83A7394
- ldr r1, _0806F13C @ =gUnknown_20370F6
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- bl sub_80F7974
-_0806F118:
- bl GetStartMenuWindowId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl CopyWindowToVram
- movs r0, 0x1
- b _0806F142
- .align 2, 0
-_0806F12C: .4byte gUnknown_20370F5
-_0806F130: .4byte gUnknown_20370F4
-_0806F134: .4byte gSaveBlock2Ptr
-_0806F138: .4byte gUnknown_83A7394
-_0806F13C: .4byte gUnknown_20370F6
-_0806F140:
- movs r0, 0
-_0806F142:
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806F01C
-
- thumb_func_start sub_806F14C
-sub_806F14C: @ 806F14C
- push {lr}
- ldr r1, _0806F164 @ =gUnknown_20370FF
- movs r0, 0
- strb r0, [r1]
- strb r0, [r1, 0x1]
-_0806F156:
- bl sub_806F01C
- lsls r0, 24
- cmp r0, 0
- beq _0806F156
- pop {r0}
- bx r0
- .align 2, 0
-_0806F164: .4byte gUnknown_20370FF
- thumb_func_end sub_806F14C
-
- thumb_func_start task50_startmenu
-task50_startmenu: @ 806F168
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_806F01C
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0806F180
- adds r0, r4, 0
- bl SwitchTaskToFollowupFunc
-_0806F180:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task50_startmenu
-
- thumb_func_start sub_806F188
-sub_806F188: @ 806F188
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r1, _0806F1B0 @ =gUnknown_20370FF
- movs r0, 0
- strb r0, [r1]
- strb r0, [r1, 0x1]
- ldr r4, _0806F1B4 @ =task50_startmenu
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- adds r2, r5, 0
- bl SetTaskFuncWithFollowupFunc
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806F1B0: .4byte gUnknown_20370FF
-_0806F1B4: .4byte task50_startmenu
- thumb_func_end sub_806F188
-
- thumb_func_start sub_806F1B8
-sub_806F1B8: @ 806F1B8
- push {lr}
- bl sub_806F01C
- lsls r0, 24
- cmp r0, 0
- beq _0806F1CC
- bl sub_807E3A0
- movs r0, 0x1
- b _0806F1CE
-_0806F1CC:
- movs r0, 0
-_0806F1CE:
- pop {r1}
- bx r1
- thumb_func_end sub_806F1B8
-
- thumb_func_start sub_806F1D4
-sub_806F1D4: @ 806F1D4
- ldr r1, _0806F1E4 @ =gUnknown_20370FF
- movs r0, 0
- strb r0, [r1]
- strb r0, [r1, 0x1]
- ldr r1, _0806F1E8 @ =gFieldCallback2
- ldr r0, _0806F1EC @ =sub_806F1B8
- str r0, [r1]
- bx lr
- .align 2, 0
-_0806F1E4: .4byte gUnknown_20370FF
-_0806F1E8: .4byte gFieldCallback2
-_0806F1EC: .4byte sub_806F1B8
- thumb_func_end sub_806F1D4
-
- thumb_func_start sub_806F1F0
-sub_806F1F0: @ 806F1F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0806F210 @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0806F214
- cmp r0, 0x1
- beq _0806F238
- b _0806F24E
- .align 2, 0
-_0806F210: .4byte gTasks+0x8
-_0806F214:
- bl InUnionRoom
- cmp r0, 0x1
- bne _0806F220
- bl var_800D_set_xB
-_0806F220:
- ldr r1, _0806F230 @ =gUnknown_20370F0
- ldr r0, _0806F234 @ =sub_806F280
- str r0, [r1]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0806F24E
- .align 2, 0
-_0806F230: .4byte gUnknown_20370F0
-_0806F234: .4byte sub_806F280
-_0806F238:
- ldr r0, _0806F254 @ =gUnknown_20370F0
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806F24E
- adds r0, r5, 0
- bl DestroyTask
-_0806F24E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806F254: .4byte gUnknown_20370F0
- thumb_func_end sub_806F1F0
-
- thumb_func_start ShowStartMenu
-ShowStartMenu: @ 806F258
- push {lr}
- bl IsUpdateLinkStateCBActive
- cmp r0, 0
- bne _0806F26E
- bl player_bitmagic
- bl sub_805C270
- bl sub_805C780
-_0806F26E:
- ldr r0, _0806F27C @ =sub_806F1F0
- bl sub_806F188
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .align 2, 0
-_0806F27C: .4byte sub_806F1F0
- thumb_func_end ShowStartMenu
-
- thumb_func_start sub_806F280
-sub_806F280: @ 806F280
- push {r4,lr}
- ldr r0, _0806F35C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0806F2D2
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- bl Menu_MoveCursor
- ldr r4, _0806F360 @ =gUnknown_20370F4
- strb r0, [r4]
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- cmp r0, 0
- bne _0806F2D2
- bl InUnionRoom
- cmp r0, 0x1
- beq _0806F2D2
- ldr r0, _0806F364 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- bne _0806F2D2
- ldr r2, _0806F368 @ =gUnknown_83A7394
- ldr r1, _0806F36C @ =gUnknown_20370F6
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0x2
- bl sub_8113018
-_0806F2D2:
- ldr r0, _0806F35C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806F320
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl Menu_MoveCursor
- ldr r4, _0806F360 @ =gUnknown_20370F4
- strb r0, [r4]
- bl MenuHelpers_LinkSomething
- lsls r0, 24
- cmp r0, 0
- bne _0806F320
- bl InUnionRoom
- cmp r0, 0x1
- beq _0806F320
- ldr r0, _0806F364 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- bne _0806F320
- ldr r2, _0806F368 @ =gUnknown_83A7394
- ldr r1, _0806F36C @ =gUnknown_20370F6
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0x2
- bl sub_8113018
-_0806F320:
- ldr r0, _0806F35C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806F378
- movs r0, 0x5
- bl PlaySE
- bl sub_806F3CC
- lsls r0, 24
- cmp r0, 0
- beq _0806F358
- ldr r3, _0806F370 @ =gUnknown_20370F0
- ldr r1, _0806F374 @ =gUnknown_83A7344
- ldr r2, _0806F36C @ =gUnknown_20370F6
- ldr r0, _0806F360 @ =gUnknown_20370F4
- ldrb r0, [r0]
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r0, [r0]
- str r0, [r3]
- bl sub_806F394
-_0806F358:
- movs r0, 0
- b _0806F38E
- .align 2, 0
-_0806F35C: .4byte gMain
-_0806F360: .4byte gUnknown_20370F4
-_0806F364: .4byte gSaveBlock2Ptr
-_0806F368: .4byte gUnknown_83A7394
-_0806F36C: .4byte gUnknown_20370F6
-_0806F370: .4byte gUnknown_20370F0
-_0806F374: .4byte gUnknown_83A7344
-_0806F378:
- movs r0, 0xA
- ands r0, r1
- cmp r0, 0
- beq _0806F358
- bl sub_806EF18
- bl sub_80F7998
- bl sub_806FEA0
- movs r0, 0x1
-_0806F38E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806F280
-
- thumb_func_start sub_806F394
-sub_806F394: @ 806F394
- push {lr}
- ldr r0, _0806F3BC @ =gUnknown_20370F0
- ldr r1, [r0]
- ldr r0, _0806F3C0 @ =sub_806F4E8
- cmp r1, r0
- beq _0806F3B8
- ldr r0, _0806F3C4 @ =sub_806F540
- cmp r1, r0
- beq _0806F3B8
- ldr r0, _0806F3C8 @ =sub_806F554
- cmp r1, r0
- beq _0806F3B8
- bl sub_80CCB68
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
-_0806F3B8:
- pop {r0}
- bx r0
- .align 2, 0
-_0806F3BC: .4byte gUnknown_20370F0
-_0806F3C0: .4byte sub_806F4E8
-_0806F3C4: .4byte sub_806F540
-_0806F3C8: .4byte sub_806F554
- thumb_func_end sub_806F394
-
- thumb_func_start sub_806F3CC
-sub_806F3CC: @ 806F3CC
- push {lr}
- ldr r1, _0806F3F8 @ =gUnknown_83A7344
- ldr r2, _0806F3FC @ =gUnknown_20370F6
- ldr r0, _0806F400 @ =gUnknown_20370F4
- ldrb r0, [r0]
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _0806F404 @ =sub_806F410
- cmp r1, r0
- bne _0806F408
- movs r0, 0
- bl GetNationalPokedexCount
- lsls r0, 16
- cmp r0, 0
- bne _0806F408
- movs r0, 0
- b _0806F40A
- .align 2, 0
-_0806F3F8: .4byte gUnknown_83A7344
-_0806F3FC: .4byte gUnknown_20370F6
-_0806F400: .4byte gUnknown_20370F4
-_0806F404: .4byte sub_806F410
-_0806F408:
- movs r0, 0x1
-_0806F40A:
- pop {r1}
- bx r1
- thumb_func_end sub_806F3CC
-
- thumb_func_start sub_806F410
-sub_806F410: @ 806F410
- push {lr}
- ldr r0, _0806F424 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806F428
- movs r0, 0
- b _0806F442
- .align 2, 0
-_0806F424: .4byte gPaletteFade
-_0806F428:
- movs r0, 0x29
- bl IncrementGameStat
- bl PlayRainStoppingSoundEffect
- bl sub_806EF18
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _0806F448 @ =sub_810275C
- bl SetMainCallback2
- movs r0, 0x1
-_0806F442:
- pop {r1}
- bx r1
- .align 2, 0
-_0806F448: .4byte sub_810275C
- thumb_func_end sub_806F410
-
- thumb_func_start sub_806F44C
-sub_806F44C: @ 806F44C
- push {lr}
- ldr r0, _0806F460 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806F464
- movs r0, 0
- b _0806F478
- .align 2, 0
-_0806F460: .4byte gPaletteFade
-_0806F464:
- bl PlayRainStoppingSoundEffect
- bl sub_806EF18
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _0806F47C @ =CB2_PartyMenuFromStartMenu
- bl SetMainCallback2
- movs r0, 0x1
-_0806F478:
- pop {r1}
- bx r1
- .align 2, 0
-_0806F47C: .4byte CB2_PartyMenuFromStartMenu
- thumb_func_end sub_806F44C
-
- thumb_func_start sub_806F480
-sub_806F480: @ 806F480
- push {lr}
- ldr r0, _0806F494 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806F498
- movs r0, 0
- b _0806F4AC
- .align 2, 0
-_0806F494: .4byte gPaletteFade
-_0806F498:
- bl PlayRainStoppingSoundEffect
- bl sub_806EF18
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _0806F4B0 @ =ReturnToBagFromKeyItem
- bl SetMainCallback2
- movs r0, 0x1
-_0806F4AC:
- pop {r1}
- bx r1
- .align 2, 0
-_0806F4B0: .4byte ReturnToBagFromKeyItem
- thumb_func_end sub_806F480
-
- thumb_func_start sub_806F4B4
-sub_806F4B4: @ 806F4B4
- push {lr}
- ldr r0, _0806F4C8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806F4CC
- movs r0, 0
- b _0806F4E0
- .align 2, 0
-_0806F4C8: .4byte gPaletteFade
-_0806F4CC:
- bl PlayRainStoppingSoundEffect
- bl sub_806EF18
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _0806F4E4 @ =sub_80568A8
- bl sub_808B698
- movs r0, 0x1
-_0806F4E0:
- pop {r1}
- bx r1
- .align 2, 0
-_0806F4E4: .4byte sub_80568A8
- thumb_func_end sub_806F4B4
-
- thumb_func_start sub_806F4E8
-sub_806F4E8: @ 806F4E8
- ldr r1, _0806F4F4 @ =gUnknown_20370F0
- ldr r0, _0806F4F8 @ =sub_806F5A4
- str r0, [r1]
- movs r0, 0
- bx lr
- .align 2, 0
-_0806F4F4: .4byte gUnknown_20370F0
-_0806F4F8: .4byte sub_806F5A4
- thumb_func_end sub_806F4E8
-
- thumb_func_start sub_806F4FC
-sub_806F4FC: @ 806F4FC
- push {lr}
- ldr r0, _0806F510 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806F514
- movs r0, 0
- b _0806F52E
- .align 2, 0
-_0806F510: .4byte gPaletteFade
-_0806F514:
- bl PlayRainStoppingSoundEffect
- bl sub_806EF18
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _0806F534 @ =sub_8088388
- bl SetMainCallback2
- ldr r1, _0806F538 @ =gMain
- ldr r0, _0806F53C @ =sub_80568A8
- str r0, [r1, 0x8]
- movs r0, 0x1
-_0806F52E:
- pop {r1}
- bx r1
- .align 2, 0
-_0806F534: .4byte sub_8088388
-_0806F538: .4byte gMain
-_0806F53C: .4byte sub_80568A8
- thumb_func_end sub_806F4FC
-
- thumb_func_start sub_806F540
-sub_806F540: @ 806F540
- push {lr}
- bl sub_806EF18
- bl sub_80F7998
- bl sub_806FEA0
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_806F540
-
- thumb_func_start sub_806F554
-sub_806F554: @ 806F554
- push {lr}
- bl sub_806EF18
- bl sub_80F7998
- bl sub_806FEA0
- bl SafariZoneRetirePrompt
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_806F554
-
- thumb_func_start sub_806F56C
-sub_806F56C: @ 806F56C
- push {lr}
- ldr r0, _0806F580 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806F584
- movs r0, 0
- b _0806F598
- .align 2, 0
-_0806F580: .4byte gPaletteFade
-_0806F584:
- bl PlayRainStoppingSoundEffect
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _0806F59C @ =gUnknown_300502C
- ldrb r0, [r0]
- ldr r1, _0806F5A0 @ =sub_80568A8
- bl sub_808B700
- movs r0, 0x1
-_0806F598:
- pop {r1}
- bx r1
- .align 2, 0
-_0806F59C: .4byte gUnknown_300502C
-_0806F5A0: .4byte sub_80568A8
- thumb_func_end sub_806F56C
-
- thumb_func_start sub_806F5A4
-sub_806F5A4: @ 806F5A4
- push {lr}
- bl sub_812B234
- movs r0, 0xC
- bl HelpSystem_SetSomeVariable2
- bl sub_806F624
- ldr r1, _0806F5C0 @ =gUnknown_20370F0
- ldr r0, _0806F5C4 @ =sub_806F5C8
- str r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806F5C0: .4byte gUnknown_20370F0
-_0806F5C4: .4byte sub_806F5C8
- thumb_func_end sub_806F5A4
-
- thumb_func_start sub_806F5C8
-sub_806F5C8: @ 806F5C8
- push {lr}
- bl sub_806F648
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806F604
- cmp r0, 0x1
- ble _0806F61C
- cmp r0, 0x2
- beq _0806F5E4
- cmp r0, 0x3
- beq _0806F604
- b _0806F61C
-_0806F5E4:
- movs r0, 0
- movs r1, 0
- bl ClearDialogWindowAndFrameToTransparent
- bl sub_806F14C
- bl sub_812B248
- ldr r1, _0806F5FC @ =gUnknown_20370F0
- ldr r0, _0806F600 @ =sub_806F280
- str r0, [r1]
- b _0806F61C
- .align 2, 0
-_0806F5FC: .4byte gUnknown_20370F0
-_0806F600: .4byte sub_806F280
-_0806F604:
- movs r0, 0
- movs r1, 0x1
- bl ClearDialogWindowAndFrameToTransparent
- bl sub_80696C0
- bl ScriptContext2_Disable
- bl sub_812B248
- movs r0, 0x1
- b _0806F61E
-_0806F61C:
- movs r0, 0
-_0806F61E:
- pop {r1}
- bx r1
- thumb_func_end sub_806F5C8
-
- thumb_func_start sub_806F624
-sub_806F624: @ 806F624
- push {lr}
- bl save_serialize_map
- ldr r1, _0806F63C @ =gUnknown_3000FA4
- ldr r0, _0806F640 @ =sub_806F7A8
- str r0, [r1]
- ldr r1, _0806F644 @ =gUnknown_3000FA9
- movs r0, 0
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0806F63C: .4byte gUnknown_3000FA4
-_0806F640: .4byte sub_806F7A8
-_0806F644: .4byte gUnknown_3000FA9
- thumb_func_end sub_806F624
-
- thumb_func_start sub_806F648
-sub_806F648: @ 806F648
- push {lr}
- bl RunTextPrinters_CheckPrinter0Active
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _0806F674
- ldr r1, _0806F66C @ =gUnknown_3000FA9
- movs r0, 0
- strb r0, [r1]
- ldr r0, _0806F670 @ =gUnknown_3000FA4
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- b _0806F676
- .align 2, 0
-_0806F66C: .4byte gUnknown_3000FA9
-_0806F670: .4byte gUnknown_3000FA4
-_0806F674:
- movs r0, 0
-_0806F676:
- pop {r1}
- bx r1
- thumb_func_end sub_806F648
-
- thumb_func_start sub_806F67C
-sub_806F67C: @ 806F67C
- push {lr}
- bl sub_812B234
- movs r0, 0xC
- bl HelpSystem_SetSomeVariable2
- bl sub_806F624
- ldr r0, _0806F698 @ =task50_save_game
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0806F698: .4byte task50_save_game
- thumb_func_end sub_806F67C
-
- thumb_func_start sub_806F69C
-sub_806F69C: @ 806F69C
- push {r4,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- ldr r0, _0806F6C8 @ =gStringVar4
- adds r1, r2, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0x1
- bl sub_80F7768
- movs r0, 0x1
- bl AddTextPrinterForMessage
- ldr r1, _0806F6CC @ =gUnknown_3000FA9
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _0806F6D0 @ =gUnknown_3000FA4
- str r4, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806F6C8: .4byte gStringVar4
-_0806F6CC: .4byte gUnknown_3000FA9
-_0806F6D0: .4byte gUnknown_3000FA4
- thumb_func_end sub_806F69C
-
- thumb_func_start task50_save_game
-task50_save_game: @ 806F6D4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_806F648
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- beq _0806F700
- cmp r1, 0x1
- bgt _0806F6F0
- cmp r1, 0
- beq _0806F712
- b _0806F704
-_0806F6F0:
- cmp r1, 0x3
- bgt _0806F704
- ldr r1, _0806F6FC @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- b _0806F704
- .align 2, 0
-_0806F6FC: .4byte gSpecialVar_Result
-_0806F700:
- ldr r0, _0806F718 @ =gSpecialVar_Result
- strh r1, [r0]
-_0806F704:
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- bl sub_812B248
-_0806F712:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806F718: .4byte gSpecialVar_Result
- thumb_func_end task50_save_game
-
- thumb_func_start sub_806F71C
-sub_806F71C: @ 806F71C
- push {lr}
- movs r0, 0
- movs r1, 0x1
- bl ClearDialogWindowAndFrame
- pop {r0}
- bx r0
- thumb_func_end sub_806F71C
-
- thumb_func_start sub_806F72C
-sub_806F72C: @ 806F72C
- push {lr}
- bl sub_806FE84
- pop {r0}
- bx r0
- thumb_func_end sub_806F72C
-
- thumb_func_start sub_806F738
-sub_806F738: @ 806F738
- ldr r1, _0806F740 @ =gUnknown_3000FA8
- movs r0, 0x3C
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0806F740: .4byte gUnknown_3000FA8
- thumb_func_end sub_806F738
-
- thumb_func_start sub_806F744
-sub_806F744: @ 806F744
- push {lr}
- ldr r1, _0806F764 @ =gUnknown_3000FA8
- ldrb r0, [r1]
- subs r2, r0, 0x1
- strb r2, [r1]
- ldr r0, _0806F768 @ =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0806F76C
- lsls r0, r2, 24
- cmp r0, 0
- beq _0806F772
- movs r0, 0
- b _0806F774
- .align 2, 0
-_0806F764: .4byte gUnknown_3000FA8
-_0806F768: .4byte gMain
-_0806F76C:
- movs r0, 0x5
- bl PlaySE
-_0806F772:
- movs r0, 0x1
-_0806F774:
- pop {r1}
- bx r1
- thumb_func_end sub_806F744
-
- thumb_func_start sub_806F778
-sub_806F778: @ 806F778
- push {lr}
- ldr r1, _0806F794 @ =gUnknown_3000FA8
- ldrb r0, [r1]
- cmp r0, 0
- bne _0806F79C
- ldr r0, _0806F798 @ =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806F7A0
- movs r0, 0x1
- b _0806F7A2
- .align 2, 0
-_0806F794: .4byte gUnknown_3000FA8
-_0806F798: .4byte gMain
-_0806F79C:
- subs r0, 0x1
- strb r0, [r1]
-_0806F7A0:
- movs r0, 0
-_0806F7A2:
- pop {r1}
- bx r1
- thumb_func_end sub_806F778
-
- thumb_func_start sub_806F7A8
-sub_806F7A8: @ 806F7A8
- push {lr}
- bl GetStartMenuWindowId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl ClearStdWindowAndFrame
- bl RemoveStartMenuWindow
- movs r0, 0
- bl sub_8112EDC
- bl sub_806FCF4
- ldr r0, _0806F7D4 @ =gUnknown_81C55C9
- ldr r1, _0806F7D8 @ =sub_806F7DC
- bl sub_806F69C
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806F7D4: .4byte gUnknown_81C55C9
-_0806F7D8: .4byte sub_806F7DC
- thumb_func_end sub_806F7A8
-
- thumb_func_start sub_806F7DC
-sub_806F7DC: @ 806F7DC
- push {lr}
- bl DisplayYesNoMenuDefaultYes
- ldr r1, _0806F7F0 @ =gUnknown_3000FA4
- ldr r0, _0806F7F4 @ =sub_806F7F8
- str r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806F7F0: .4byte gUnknown_3000FA4
-_0806F7F4: .4byte sub_806F7F8
- thumb_func_end sub_806F7DC
-
- thumb_func_start sub_806F7F8
-sub_806F7F8: @ 806F7F8
- push {lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0806F81A
- cmp r1, 0
- bgt _0806F814
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0806F858
- b _0806F864
-_0806F814:
- cmp r1, 0x1
- beq _0806F858
- b _0806F864
-_0806F81A:
- ldr r0, _0806F838 @ =gSaveFileStatus
- ldrh r0, [r0]
- cmp r0, 0
- beq _0806F826
- cmp r0, 0x2
- bne _0806F82E
-_0806F826:
- ldr r0, _0806F83C @ =gDifferentSaveFile
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806F848
-_0806F82E:
- ldr r1, _0806F840 @ =gUnknown_3000FA4
- ldr r0, _0806F844 @ =sub_806F86C
- str r0, [r1]
- b _0806F864
- .align 2, 0
-_0806F838: .4byte gSaveFileStatus
-_0806F83C: .4byte gDifferentSaveFile
-_0806F840: .4byte gUnknown_3000FA4
-_0806F844: .4byte sub_806F86C
-_0806F848:
- ldr r1, _0806F850 @ =gUnknown_3000FA4
- ldr r0, _0806F854 @ =sub_806F924
- str r0, [r1]
- b _0806F864
- .align 2, 0
-_0806F850: .4byte gUnknown_3000FA4
-_0806F854: .4byte sub_806F924
-_0806F858:
- bl sub_806F72C
- bl sub_806F71C
- movs r0, 0x2
- b _0806F866
-_0806F864:
- movs r0, 0
-_0806F866:
- pop {r1}
- bx r1
- thumb_func_end sub_806F7F8
-
- thumb_func_start sub_806F86C
-sub_806F86C: @ 806F86C
- push {lr}
- ldr r0, _0806F880 @ =gDifferentSaveFile
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0806F88C
- ldr r0, _0806F884 @ =gUnknown_81C566A
- ldr r1, _0806F888 @ =sub_806F8C0
- bl sub_806F69C
- b _0806F894
- .align 2, 0
-_0806F880: .4byte gDifferentSaveFile
-_0806F884: .4byte gUnknown_81C566A
-_0806F888: .4byte sub_806F8C0
-_0806F88C:
- ldr r0, _0806F89C @ =gUnknown_81C55EA
- ldr r1, _0806F8A0 @ =sub_806F8A4
- bl sub_806F69C
-_0806F894:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806F89C: .4byte gUnknown_81C55EA
-_0806F8A0: .4byte sub_806F8A4
- thumb_func_end sub_806F86C
-
- thumb_func_start sub_806F8A4
-sub_806F8A4: @ 806F8A4
- push {lr}
- bl DisplayYesNoMenuDefaultYes
- ldr r1, _0806F8B8 @ =gUnknown_3000FA4
- ldr r0, _0806F8BC @ =sub_806F8DC
- str r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806F8B8: .4byte gUnknown_3000FA4
-_0806F8BC: .4byte sub_806F8DC
- thumb_func_end sub_806F8A4
-
- thumb_func_start sub_806F8C0
-sub_806F8C0: @ 806F8C0
- push {lr}
- bl DisplayYesNoMenuDefaultNo
- ldr r1, _0806F8D4 @ =gUnknown_3000FA4
- ldr r0, _0806F8D8 @ =sub_806F8DC
- str r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806F8D4: .4byte gUnknown_3000FA4
-_0806F8D8: .4byte sub_806F8DC
- thumb_func_end sub_806F8C0
-
- thumb_func_start sub_806F8DC
-sub_806F8DC: @ 806F8DC
- push {lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0806F8FE
- cmp r1, 0
- bgt _0806F8F8
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0806F910
- b _0806F91C
-_0806F8F8:
- cmp r1, 0x1
- beq _0806F910
- b _0806F91C
-_0806F8FE:
- ldr r1, _0806F908 @ =gUnknown_3000FA4
- ldr r0, _0806F90C @ =sub_806F924
- str r0, [r1]
- b _0806F91C
- .align 2, 0
-_0806F908: .4byte gUnknown_3000FA4
-_0806F90C: .4byte sub_806F924
-_0806F910:
- bl sub_806F72C
- bl sub_806F71C
- movs r0, 0x2
- b _0806F91E
-_0806F91C:
- movs r0, 0
-_0806F91E:
- pop {r1}
- bx r1
- thumb_func_end sub_806F8DC
-
- thumb_func_start sub_806F924
-sub_806F924: @ 806F924
- push {lr}
- bl sub_8112450
- ldr r0, _0806F938 @ =gUnknown_81C5625
- ldr r1, _0806F93C @ =sub_806F940
- bl sub_806F69C
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806F938: .4byte gUnknown_81C5625
-_0806F93C: .4byte sub_806F940
- thumb_func_end sub_806F924
-
- thumb_func_start sub_806F940
-sub_806F940: @ 806F940
- push {r4,lr}
- movs r0, 0
- bl IncrementGameStat
- ldr r4, _0806F95C @ =gDifferentSaveFile
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _0806F960
- movs r0, 0x4
- bl TrySavingData
- movs r0, 0
- strb r0, [r4]
- b _0806F966
- .align 2, 0
-_0806F95C: .4byte gDifferentSaveFile
-_0806F960:
- movs r0, 0
- bl TrySavingData
-_0806F966:
- ldr r1, _0806F974 @ =gUnknown_3000FA4
- ldr r0, _0806F978 @ =sub_806F97C
- str r0, [r1]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806F974: .4byte gUnknown_3000FA4
-_0806F978: .4byte sub_806F97C
- thumb_func_end sub_806F940
-
- thumb_func_start sub_806F97C
-sub_806F97C: @ 806F97C
- push {lr}
- ldr r0, _0806F990 @ =gUnknown_3005420
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _0806F99C
- ldr r0, _0806F994 @ =gUnknown_81C5647
- ldr r1, _0806F998 @ =sub_806F9B8
- bl sub_806F69C
- b _0806F9A4
- .align 2, 0
-_0806F990: .4byte gUnknown_3005420
-_0806F994: .4byte gUnknown_81C5647
-_0806F998: .4byte sub_806F9B8
-_0806F99C:
- ldr r0, _0806F9B0 @ =gUnknown_841614B
- ldr r1, _0806F9B4 @ =sub_806FA04
- bl sub_806F69C
-_0806F9A4:
- bl sub_806F738
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806F9B0: .4byte gUnknown_841614B
-_0806F9B4: .4byte sub_806FA04
- thumb_func_end sub_806F97C
-
- thumb_func_start sub_806F9B8
-sub_806F9B8: @ 806F9B8
- push {lr}
- bl RunTextPrinters_CheckPrinter0Active
- lsls r0, 16
- cmp r0, 0
- bne _0806F9D0
- movs r0, 0x30
- bl PlaySE
- ldr r1, _0806F9D8 @ =gUnknown_3000FA4
- ldr r0, _0806F9DC @ =SaveDialogCB_ReturnSuccess
- str r0, [r1]
-_0806F9D0:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806F9D8: .4byte gUnknown_3000FA4
-_0806F9DC: .4byte SaveDialogCB_ReturnSuccess
- thumb_func_end sub_806F9B8
-
- thumb_func_start SaveDialogCB_ReturnSuccess
-SaveDialogCB_ReturnSuccess: @ 806F9E0
- push {lr}
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _0806F9FE
- bl sub_806F744
- lsls r0, 24
- cmp r0, 0
- beq _0806F9FE
- bl sub_806F72C
- movs r0, 0x1
- b _0806FA00
-_0806F9FE:
- movs r0, 0
-_0806FA00:
- pop {r1}
- bx r1
- thumb_func_end SaveDialogCB_ReturnSuccess
-
- thumb_func_start sub_806FA04
-sub_806FA04: @ 806FA04
- push {lr}
- bl RunTextPrinters_CheckPrinter0Active
- lsls r0, 16
- cmp r0, 0
- bne _0806FA1C
- movs r0, 0x16
- bl PlaySE
- ldr r1, _0806FA24 @ =gUnknown_3000FA4
- ldr r0, _0806FA28 @ =SaveDialogCB_ReturnError
- str r0, [r1]
-_0806FA1C:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806FA24: .4byte gUnknown_3000FA4
-_0806FA28: .4byte SaveDialogCB_ReturnError
- thumb_func_end sub_806FA04
-
- thumb_func_start SaveDialogCB_ReturnError
-SaveDialogCB_ReturnError: @ 806FA2C
- push {lr}
- bl sub_806F778
- lsls r0, 24
- cmp r0, 0
- beq _0806FA40
- bl sub_806F72C
- movs r0, 0x3
- b _0806FA42
-_0806FA40:
- movs r0, 0
-_0806FA42:
- pop {r1}
- bx r1
- thumb_func_end SaveDialogCB_ReturnError
-
- thumb_func_start sub_806FA48
-sub_806FA48: @ 806FA48
- push {lr}
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_806FA48
-
- thumb_func_start sub_806FA54
-sub_806FA54: @ 806FA54
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r8, r0
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _0806FA66
- b _0806FB64
-_0806FA66:
- lsls r0, 2
- ldr r1, _0806FA70 @ =_0806FA74
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806FA70: .4byte _0806FA74
- .align 2, 0
-_0806FA74:
- .4byte _0806FA88
- .4byte _0806FB00
- .4byte _0806FB12
- .4byte _0806FB3C
- .4byte _0806FB60
-_0806FA88:
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl SetVBlankCallback
- bl ScanlineEffect_Stop
- movs r2, 0xA0
- lsls r2, 19
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, _0806FAF4 @ =0x040000d4
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _0806FAF8 @ =0x81000200
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _0806FAFC @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0806FACA:
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r5
- subs r3, r5
- cmp r3, r5
- bhi _0806FACA
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- b _0806FB64
- .align 2, 0
-_0806FAF4: .4byte 0x040000d4
-_0806FAF8: .4byte 0x81000200
-_0806FAFC: .4byte 0x81000800
-_0806FB00:
- bl ResetSpriteData
- bl ResetTasks
- bl ResetPaletteFade
- bl ScanlineEffect_Clear
- b _0806FB64
-_0806FB12:
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0806FB34 @ =gUnknown_83A73B8
- movs r0, 0
- movs r2, 0x1
- bl InitBgsFromTemplates
- ldr r0, _0806FB38 @ =gUnknown_83A73BC
- bl InitWindows
- movs r0, 0
- movs r1, 0x8
- movs r2, 0xF0
- bl TextWindow_SetStdFrame0_WithPal
- b _0806FB64
- .align 2, 0
-_0806FB34: .4byte gUnknown_83A73B8
-_0806FB38: .4byte gUnknown_83A73BC
-_0806FB3C:
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, _0806FB5C @ =sub_806FA48
- bl SetVBlankCallback
- movs r0, 0x1
- bl EnableInterrupts
- b _0806FB64
- .align 2, 0
-_0806FB5C: .4byte sub_806FA48
-_0806FB60:
- movs r0, 0x1
- b _0806FB6E
-_0806FB64:
- mov r1, r8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_0806FB6E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_806FA54
-
- thumb_func_start sub_806FB7C
-sub_806FB7C: @ 806FB7C
- push {lr}
- ldr r0, _0806FB9C @ =gMain + 0x438
- bl sub_806FA54
- cmp r0, 0
- beq _0806FB96
- ldr r0, _0806FBA0 @ =sub_806FBB8
- movs r1, 0x50
- bl CreateTask
- ldr r0, _0806FBA4 @ =sub_806FBA8
- bl SetMainCallback2
-_0806FB96:
- pop {r0}
- bx r0
- .align 2, 0
-_0806FB9C: .4byte gMain + 0x438
-_0806FBA0: .4byte sub_806FBB8
-_0806FBA4: .4byte sub_806FBA8
- thumb_func_end sub_806FB7C
-
- thumb_func_start sub_806FBA8
-sub_806FBA8: @ 806FBA8
- push {lr}
- bl RunTasks
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_806FBA8
-
- thumb_func_start sub_806FBB8
-sub_806FBB8: @ 806FBB8
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0806FBEC @ =gTasks+0x8
- adds r5, r0, r1
- ldr r0, _0806FBF0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806FBD8
- b _0806FCE8
-_0806FBD8:
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x6
- bls _0806FBE2
- b _0806FCE8
-_0806FBE2:
- lsls r0, 2
- ldr r1, _0806FBF4 @ =_0806FBF8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806FBEC: .4byte gTasks+0x8
-_0806FBF0: .4byte gPaletteFade
-_0806FBF4: .4byte _0806FBF8
- .align 2, 0
-_0806FBF8:
- .4byte _0806FC14
- .4byte _0806FC80
- .4byte _0806FC8C
- .4byte _0806FC9C
- .4byte _0806FCB0
- .4byte _0806FCC8
- .4byte _0806FCD8
-_0806FC14:
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, _0806FC74 @ =gUnknown_8419F54
- movs r4, 0
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x2
- movs r3, 0xFF
- bl AddTextPrinterParameterized2
- movs r0, 0
- movs r1, 0x8
- movs r2, 0xF
- bl DrawTextBorderOuter
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _0806FC78 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806FC7C
- bl InUnionRoom
- cmp r0, 0
- beq _0806FC7C
- movs r0, 0x5
- b _0806FCE6
- .align 2, 0
-_0806FC74: .4byte gUnknown_8419F54
-_0806FC78: .4byte gWirelessCommType
-_0806FC7C:
- movs r0, 0x1
- b _0806FCE6
-_0806FC80:
- bl sub_804C1C0
- bl sub_80DA45C
- movs r0, 0x2
- b _0806FCE6
-_0806FC8C:
- bl sub_80DA4A0
- lsls r0, 24
- cmp r0, 0
- beq _0806FCE8
- bl sav2_gender2_inplace_and_xFE
- b _0806FCE4
-_0806FC9C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x4
- b _0806FCE6
-_0806FCB0:
- bl FreeAllWindowBuffers
- ldr r0, _0806FCC4 @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
- b _0806FCE8
- .align 2, 0
-_0806FCC4: .4byte gMain
-_0806FCC8:
- ldr r0, _0806FCD4 @ =sub_80DA634
- movs r1, 0x5
- bl CreateTask
- movs r0, 0x6
- b _0806FCE6
- .align 2, 0
-_0806FCD4: .4byte sub_80DA634
-_0806FCD8:
- ldr r0, _0806FCF0 @ =sub_80DA634
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _0806FCE8
-_0806FCE4:
- movs r0, 0x3
-_0806FCE6:
- strh r0, [r5]
-_0806FCE8:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806FCF0: .4byte sub_80DA634
- thumb_func_end sub_806FBB8
-
- thumb_func_start sub_806FCF4
-sub_806FCF4: @ 806FCF4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- ldr r5, _0806FE54 @ =gUnknown_2037104
- ldr r0, _0806FE58 @ =gUnknown_83A73CC
- bl AddWindow
- strb r0, [r5]
- ldrb r0, [r5]
- ldr r4, _0806FE5C @ =0x0000021d
- adds r1, r4, 0
- movs r2, 0xD0
- bl TextWindow_SetStdFrame0_WithPal
- ldrb r0, [r5]
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0xD
- bl DrawStdFrameWithCustomTileAndPalette
- ldr r4, _0806FE60 @ =gStringVar4
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0x8
- bl sub_80F7FCC
- movs r6, 0x1
- negs r6, r6
- movs r0, 0x2
- adds r1, r4, 0
- adds r2, r6, 0
- bl GetStringWidth
- movs r2, 0x70
- subs r2, r0
- lsrs r2, 1
- lsls r2, 24
- lsrs r2, 24
- ldrb r0, [r5]
- ldr r1, _0806FE64 @ =gUnknown_83A73DC
- str r1, [sp]
- str r6, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized3
- movs r0, 0x2
- adds r1, r4, 0
- adds r2, r6, 0
- bl GetStringWidth
- ldrb r0, [r5]
- ldr r1, _0806FE68 @ =gUnknown_83A73D4
- mov r9, r1
- str r1, [sp]
- str r6, [sp, 0x4]
- ldr r1, _0806FE6C @ =gUnknown_841617A
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0xE
- bl AddTextPrinterParameterized3
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0x2
- bl sub_80F7FCC
- ldrb r0, [r5]
- adds r1, r4, 0
- movs r2, 0x3C
- movs r3, 0xE
- bl sub_812E6DC
- ldrb r0, [r5]
- mov r1, r9
- str r1, [sp]
- str r6, [sp, 0x4]
- ldr r1, _0806FE70 @ =gUnknown_8416181
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1C
- bl AddTextPrinterParameterized3
- movs r0, 0x4
- adds r1, r4, 0
- movs r2, 0x2
- bl sub_80F7FCC
- ldrb r0, [r5]
- ldr r1, _0806FE74 @ =gUnknown_83A73D8
- mov r8, r1
- str r1, [sp]
- str r6, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0
- movs r2, 0x3C
- movs r3, 0x1C
- bl AddTextPrinterParameterized3
- movs r7, 0x2A
- ldr r0, _0806FE78 @ =0x00000829
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806FE0A
- ldrb r0, [r5]
- mov r1, r9
- str r1, [sp]
- str r6, [sp, 0x4]
- ldr r1, _0806FE7C @ =gUnknown_8416188
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x2A
- bl AddTextPrinterParameterized3
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x2
- bl sub_80F7FCC
- ldrb r0, [r5]
- mov r1, r8
- str r1, [sp]
- str r6, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0
- movs r2, 0x3C
- movs r3, 0x2A
- bl AddTextPrinterParameterized3
- movs r7, 0x38
-_0806FE0A:
- ldrb r0, [r5]
- mov r1, r9
- str r1, [sp]
- str r6, [sp, 0x4]
- ldr r1, _0806FE80 @ =gUnknown_8416190
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0x2
- adds r3, r7, 0
- bl AddTextPrinterParameterized3
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0x2
- bl sub_80F7FCC
- ldrb r0, [r5]
- mov r1, r8
- str r1, [sp]
- str r6, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0
- movs r2, 0x3C
- adds r3, r7, 0
- bl AddTextPrinterParameterized3
- ldrb r0, [r5]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806FE54: .4byte gUnknown_2037104
-_0806FE58: .4byte gUnknown_83A73CC
-_0806FE5C: .4byte 0x0000021d
-_0806FE60: .4byte gStringVar4
-_0806FE64: .4byte gUnknown_83A73DC
-_0806FE68: .4byte gUnknown_83A73D4
-_0806FE6C: .4byte gUnknown_841617A
-_0806FE70: .4byte gUnknown_8416181
-_0806FE74: .4byte gUnknown_83A73D8
-_0806FE78: .4byte 0x00000829
-_0806FE7C: .4byte gUnknown_8416188
-_0806FE80: .4byte gUnknown_8416190
- thumb_func_end sub_806FCF4
-
- thumb_func_start sub_806FE84
-sub_806FE84: @ 806FE84
- push {r4,lr}
- ldr r4, _0806FE9C @ =gUnknown_2037104
- ldrb r0, [r4]
- movs r1, 0
- bl ClearStdWindowAndFrame
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806FE9C: .4byte gUnknown_2037104
- thumb_func_end sub_806FE84
-
- thumb_func_start sub_806FEA0
-sub_806FEA0: @ 806FEA0
- push {lr}
- movs r0, 0x5
- bl PlaySE
- bl GetStartMenuWindowId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- bl RemoveStartMenuWindow
- bl sub_80696C0
- bl ScriptContext2_Disable
- pop {r0}
- bx r0
- thumb_func_end sub_806FEA0
-
- thumb_func_start AppendToList
-AppendToList: @ 806FEC8
- ldrb r3, [r1]
- adds r0, r3
- strb r2, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bx lr
- thumb_func_end AppendToList
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/trade.s b/asm/trade.s
index c960a7302..0aa029b62 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -8258,7 +8258,7 @@ _0805139C:
adds r1, r0
lsls r1, 2
adds r1, r3
- ldr r2, _08051410 @ =gUnknown_82349CC
+ ldr r2, _08051410 @ =gMonFrontPicCoords
adds r0, r4, 0
adds r0, 0xF0
ldrh r0, [r0]
@@ -8282,7 +8282,7 @@ _0805139C:
.align 2, 0
_08051408: .4byte gSprites
_0805140C: .4byte 0x0000ff4c
-_08051410: .4byte gUnknown_82349CC
+_08051410: .4byte gMonFrontPicCoords
_08051414:
ldr r5, [r7]
adds r6, r5, 0
@@ -9797,7 +9797,7 @@ _08052070:
adds r1, r0
lsls r1, 2
adds r1, r4
- ldr r3, _08052120 @ =gUnknown_82349CC
+ ldr r3, _08052120 @ =gMonFrontPicCoords
adds r2, 0xF2
ldrh r0, [r2]
lsls r0, 2
@@ -9864,7 +9864,7 @@ _08052070:
b _080522AC
.align 2, 0
_0805211C: .4byte gSprites
-_08052120: .4byte gUnknown_82349CC
+_08052120: .4byte gMonFrontPicCoords
_08052124: .4byte 0x000fffff
_08052128:
movs r1, 0xAA
@@ -10434,7 +10434,7 @@ _0805278C:
adds r1, r0
lsls r1, 2
adds r1, r3
- ldr r2, _08052800 @ =gUnknown_82349CC
+ ldr r2, _08052800 @ =gMonFrontPicCoords
adds r0, r4, 0
adds r0, 0xF0
ldrh r0, [r0]
@@ -10458,7 +10458,7 @@ _0805278C:
.align 2, 0
_080527F8: .4byte gSprites
_080527FC: .4byte 0x0000ff4c
-_08052800: .4byte gUnknown_82349CC
+_08052800: .4byte gMonFrontPicCoords
_08052804:
ldr r5, [r7]
adds r6, r5, 0
@@ -12022,7 +12022,7 @@ _080534CC:
adds r1, r0
lsls r1, 2
adds r1, r4
- ldr r3, _0805357C @ =gUnknown_82349CC
+ ldr r3, _0805357C @ =gMonFrontPicCoords
adds r2, 0xF2
ldrh r0, [r2]
lsls r0, 2
@@ -12089,7 +12089,7 @@ _080534CC:
b _08053708
.align 2, 0
_08053578: .4byte gSprites
-_0805357C: .4byte gUnknown_82349CC
+_0805357C: .4byte gMonFrontPicCoords
_08053580: .4byte 0x000fffff
_08053584:
movs r1, 0xAA
@@ -13401,7 +13401,7 @@ _080540DC:
movs r0, 0x32
strb r0, [r1]
ldr r4, _080540FC @ =gStringVar4
- ldr r1, _08054100 @ =gUnknown_8419F54
+ ldr r1, _08054100 @ =gText_SavingDontTurnOffThePower2
_080540EA:
adds r0, r4, 0
bl StringExpandPlaceholders
@@ -13412,7 +13412,7 @@ _080540EA:
b _08054396
.align 2, 0
_080540FC: .4byte gStringVar4
-_08054100: .4byte gUnknown_8419F54
+_08054100: .4byte gText_SavingDontTurnOffThePower2
_08054104:
bl InUnionRoom
cmp r0, 0
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index 9a28cbc5e..1ebda42ab 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -785,7 +785,7 @@ _0808967C:
.align 2, 0
_0808968C: .4byte gMain
_08089690:
- bl sub_80F6E9C
+ bl LoadStdWindowFrameGfx
ldr r1, _080896A0 @ =gMain
movs r0, 0x87
lsls r0, 3
@@ -4723,8 +4723,8 @@ sub_808B66C: @ 808B66C
_0808B694: .4byte sub_808B21C
thumb_func_end sub_808B66C
- thumb_func_start sub_808B698
-sub_808B698: @ 808B698
+ thumb_func_start InitTrainerCard
+InitTrainerCard: @ 808B698
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _0808B6C0 @ =gUnknown_20397A4
@@ -4770,10 +4770,10 @@ _0808B6F0: .4byte gUnknown_20397A4
_0808B6F4: .4byte 0x00007bcf
_0808B6F8: .4byte 0x0000045c
_0808B6FC: .4byte sub_80895B8
- thumb_func_end sub_808B698
+ thumb_func_end InitTrainerCard
- thumb_func_start sub_808B700
-sub_808B700: @ 808B700
+ thumb_func_start InitLinkPartnerTrainerCard
+InitLinkPartnerTrainerCard: @ 808B700
push {r4-r6,lr}
adds r4, r0, 0
adds r6, r1, 0
@@ -4822,7 +4822,7 @@ _0808B764: .4byte gTrainerCards
_0808B768: .4byte gLinkPlayers
_0808B76C: .4byte 0x00007bcf
_0808B770: .4byte sub_80895B8
- thumb_func_end sub_808B700
+ thumb_func_end InitLinkPartnerTrainerCard
thumb_func_start sub_808B774
sub_808B774: @ 808B774
@@ -5057,7 +5057,7 @@ _0808B948: .4byte 0x00000457
thumb_func_start sub_808B94C
sub_808B94C: @ 808B94C
push {lr}
- bl sub_808B698
+ bl InitTrainerCard
ldr r0, _0808B95C @ =sub_80895B8
bl SetMainCallback2
pop {r0}
@@ -5076,7 +5076,7 @@ sub_808B960: @ 808B960
bl memcpy
movs r0, 0
adds r1, r4, 0
- bl sub_808B700
+ bl InitLinkPartnerTrainerCard
ldr r0, _0808B98C @ =sub_80895B8
bl SetMainCallback2
pop {r4}
@@ -5098,7 +5098,7 @@ sub_808B990: @ 808B990
bl memcpy
movs r0, 0
adds r1, r4, 0
- bl sub_808B700
+ bl InitLinkPartnerTrainerCard
ldr r0, _0808B9BC @ =sub_80895B8
bl SetMainCallback2
pop {r4}
diff --git a/asm/water.s b/asm/water.s
index d40e8f594..a2918ec33 100644
--- a/asm/water.s
+++ b/asm/water.s
@@ -197,7 +197,7 @@ _080AAD10:
lsrs r0, 24
strh r0, [r6, 0x36]
adds r0, r6, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldr r0, _080AADAC @ =SpriteCallbackDummy
bl CreateInvisibleSpriteWithCallback
adds r4, r0, 0
@@ -273,7 +273,7 @@ sub_80AADB8: @ 80AADB8
movs r0, 0x1
strh r0, [r5, 0x2E]
adds r0, r5, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
mov r1, r8
lsrs r6, r1, 8
movs r0, 0x2E
@@ -329,14 +329,14 @@ sub_80AAE40: @ 80AAE40
negs r1, r1
ands r1, r2
strb r1, [r3]
- ldr r1, _080AAE60 @ =sub_8074F6C
+ ldr r1, _080AAE60 @ =RunStoredCallbackWhenAnimEnds
str r1, [r0, 0x1C]
ldr r1, _080AAE64 @ =sub_80AAE68
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
-_080AAE60: .4byte sub_8074F6C
+_080AAE60: .4byte RunStoredCallbackWhenAnimEnds
_080AAE64: .4byte sub_80AAE68
thumb_func_end sub_80AAE40
@@ -345,15 +345,15 @@ sub_80AAE68: @ 80AAE68
push {lr}
movs r1, 0xA
strh r1, [r0, 0x2E]
- ldr r1, _080AAE7C @ =sub_8074C44
+ ldr r1, _080AAE7C @ =WaitAnimForDuration
str r1, [r0, 0x1C]
- ldr r1, _080AAE80 @ =move_anim_8074EE0
+ ldr r1, _080AAE80 @ =DestroySpriteAndMatrix
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
-_080AAE7C: .4byte sub_8074C44
-_080AAE80: .4byte move_anim_8074EE0
+_080AAE7C: .4byte WaitAnimForDuration
+_080AAE80: .4byte DestroySpriteAndMatrix
thumb_func_end sub_80AAE68
thumb_func_start sub_80AAE84
@@ -361,7 +361,7 @@ sub_80AAE84: @ 80AAE84
push {r4-r7,lr}
adds r5, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080AAEAC @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -406,7 +406,7 @@ _080AAEBA:
adds r0, r7
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
ldr r0, _080AAF18 @ =sub_80AAF1C
str r0, [r5, 0x1C]
adds r2, r5, 0
@@ -447,7 +447,7 @@ sub_80AAF1C: @ 80AAF1C
strb r0, [r2]
_080AAF3E:
adds r0, r4, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080AAF50
@@ -569,7 +569,7 @@ sub_80AB024: @ 80AB024
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
movs r0, 0x1E
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
@@ -590,7 +590,7 @@ sub_80AB024: @ 80AB024
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimLinearTranslation
movs r0, 0x2E
ldrsh r1, [r5, r0]
movs r0, 0xD2
@@ -634,7 +634,7 @@ _080AB0A8: .4byte sub_80AB0AC
sub_80AB0AC: @ 80AB0AC
push {r4,lr}
adds r4, r0, 0
- bl sub_80755E0
+ bl AnimTranslateLinear
lsls r0, 24
cmp r0, 0
beq _080AB0C0
@@ -861,7 +861,7 @@ _080AB256:
movs r7, 0x3
_080AB260:
adds r0, r6, 0
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r0, _080AB2B8 @ =gBattleAnimAttacker
ldrb r0, [r0]
bl GetBattlerSide
@@ -912,7 +912,7 @@ sub_80AB2CC: @ 80AB2CC
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
ldr r0, _080AB2FC @ =gBattleAnimArgs
ldrh r1, [r0, 0x8]
strh r1, [r4, 0x2E]
@@ -948,14 +948,14 @@ sub_80AB308: @ 80AB308
beq _080AB324
adds r0, r4, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
b _080AB32C
.align 2, 0
_080AB320: .4byte gBattleAnimArgs
_080AB324:
adds r0, r4, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
_080AB32C:
ldr r0, _080AB33C @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
@@ -1054,7 +1054,7 @@ sub_80AB38C: @ 80AB38C
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080AB404 @ =gFile_graphics_unknown_unknown_E81D14_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
b _080AB42E
.align 2, 0
_080AB3FC: .4byte 0x00003f42
@@ -1064,7 +1064,7 @@ _080AB408:
mov r0, sp
ldrb r0, [r0, 0x9]
ldr r1, _080AB414 @ =gFile_graphics_unknown_unknown_E81FE4_tilemap
- bl sub_807543C
+ bl AnimLoadCompressedBgTilemap
b _080AB42E
.align 2, 0
_080AB414: .4byte gFile_graphics_unknown_unknown_E81FE4_tilemap
@@ -1084,7 +1084,7 @@ _080AB42E:
ldr r1, _080AB45C @ =gFile_graphics_battle_anims_backgrounds_water_sheet
mov r2, sp
ldrh r2, [r2, 0xA]
- bl sub_80753B4
+ bl AnimLoadCompressedBgGfx
ldr r0, _080AB460 @ =gBattleAnimArgs
movs r1, 0
ldrsh r0, [r0, r1]
@@ -1904,7 +1904,7 @@ sub_80ABA78: @ 80ABA78
strh r0, [r4, 0x4]
adds r0, r4, 0
movs r1, 0x1
- bl sub_8075114
+ bl InitSpritePosToAnimTarget
bl Random
movs r5, 0xFF
ands r5, r0
@@ -1991,7 +1991,7 @@ sub_80ABB28: @ 80ABB28
ldr r0, _080ABB78 @ =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -2138,7 +2138,7 @@ _080ABC66:
ldrh r0, [r4, 0x26]
lsls r0, 24
lsrs r0, 24
- bl sub_8076440
+ bl SetBattlerSpriteYOffsetFromYScale
ldr r2, _080ABC84 @ =gSprites
movs r0, 0x26
ldrsh r1, [r4, r0]
@@ -2727,7 +2727,7 @@ _080AC0AE:
ldr r1, [r0]
adds r0, r2, 0
bl _call_via_r1
- ldr r1, _080AC144 @ =gUnknown_2037EE2
+ ldr r1, _080AC144 @ =gAnimVisualTaskCount
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
@@ -2748,7 +2748,7 @@ _080AC0F8:
ldr r1, [r0]
adds r0, r2, 0
bl _call_via_r1
- ldr r1, _080AC144 @ =gUnknown_2037EE2
+ ldr r1, _080AC144 @ =gAnimVisualTaskCount
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
@@ -2769,7 +2769,7 @@ _080AC128:
.align 2, 0
_080AC13C: .4byte gBattleAnimArgs
_080AC140: .4byte sub_80B94B4
-_080AC144: .4byte gUnknown_2037EE2
+_080AC144: .4byte gAnimVisualTaskCount
_080AC148:
movs r2, 0x1A
ldrsh r0, [r4, r2]
@@ -3287,7 +3287,7 @@ sub_80AC504: @ 80AC504
strh r1, [r0, 0x36]
ldrh r1, [r6, 0x1A]
strh r1, [r0, 0x38]
- bl sub_8075068
+ bl InitAnimArcTranslation
adds r5, 0x1C
adds r4, r5
ldr r0, _080AC56C @ =sub_80AC570
@@ -3309,7 +3309,7 @@ _080AC56C: .4byte sub_80AC570
sub_80AC570: @ 80AC570
push {r4-r6,lr}
adds r6, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080AC5CA
@@ -3344,7 +3344,7 @@ sub_80AC570: @ 80AC570
mvns r1, r1
strh r1, [r6, 0x38]
adds r0, r6, 0
- bl sub_8075068
+ bl InitAnimArcTranslation
ldr r0, _080AC5D4 @ =sub_80AC5D8
str r0, [r6, 0x1C]
_080AC5CA:
@@ -3360,7 +3360,7 @@ _080AC5D4: .4byte sub_80AC5D8
sub_80AC5D8: @ 80AC5D8
push {r4-r6,lr}
adds r5, r0, 0
- bl AnimateBallThrow
+ bl TranslateAnimHorizontalArc
lsls r0, 24
cmp r0, 0
beq _080AC614
@@ -3498,7 +3498,7 @@ sub_80AC6D8: @ 80AC6D8
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_8075160
+ bl InitSpritePosToAnimAttacker
ldr r5, _080AC714 @ =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
diff --git a/baserom.ips b/baserom.ips
index b1ef4e9dc..b4ea36d11 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/common_syms/help_system_812B1E0.txt b/common_syms/help_system_812B1E0.txt
index 7986bedb5..5e56cc230 100644
--- a/common_syms/help_system_812B1E0.txt
+++ b/common_syms/help_system_812B1E0.txt
@@ -1,2 +1,2 @@
gUnknown_3005E9C
-gUnknown_3005EA0
+gSomeVariableBackup
diff --git a/common_syms/save.txt b/common_syms/save.txt
index 9b77840e0..a0106f6fa 100644
--- a/common_syms/save.txt
+++ b/common_syms/save.txt
@@ -9,4 +9,4 @@ gSaveUnusedVar
gSaveFileStatus
gGameContinueCallback
gRamSaveSectionLocations
-gUnknown_3005420
+gSaveSucceeded
diff --git a/data/battle_anim.s b/data/battle_anim.s
index 3fae69431..c166708a2 100644
--- a/data/battle_anim.s
+++ b/data/battle_anim.s
@@ -242,21 +242,3 @@ gUnknown_83ADE18:: @ 83ADE18
gUnknown_83ADF5C:: @ 83ADF5C
.incbin "baserom.gba", 0x3ADF5C, 0xC0
-
-gUnknown_83AE01C:: @ 83AE01C
- .incbin "baserom.gba", 0x3AE01C, 0x20
-
-gUnknown_83AE03C:: @ 83AE03C
- .incbin "baserom.gba", 0x3AE03C, 0x10
-
-gUnknown_83AE04C:: @ 83AE04C
- .incbin "baserom.gba", 0x3AE04C, 0x4
-
-gUnknown_83AE050:: @ 83AE050
- .incbin "baserom.gba", 0x3AE050, 0x4
-
-gUnknown_83AE054:: @ 83AE054
- .incbin "baserom.gba", 0x3AE054, 0x30
-
-gUnknown_83AE084:: @ 0x83AE084
- .incbin "baserom.gba", 0x3AE084, 0x10
diff --git a/data/data.s b/data/data.s
index 8dd5334fe..0b99ba48c 100644
--- a/data/data.s
+++ b/data/data.s
@@ -59,7 +59,7 @@ gUnknown_823499C:: @ 823499C
gUnknown_82349BC:: @ 82349BC
.incbin "baserom.gba", 0x2349BC, 0x10
-gUnknown_82349CC:: @ 82349CC
+gMonFrontPicCoords:: @ 82349CC
.incbin "baserom.gba", 0x2349CC, 0x6E0
gMonFrontPicTable:: @ 82350AC
@@ -68,7 +68,7 @@ gMonFrontPicTable:: @ 82350AC
gUnknown_8235194:: @ 8235194
.incbin "baserom.gba", 0x235194, 0xCD8
-gUnknown_8235E6C:: @ 8235E6C
+gMonBackPicCoords:: @ 8235E6C
.incbin "baserom.gba", 0x235E6C, 0x6E0
gMonBackPicTable:: @ 823654C
diff --git a/data/data_835B488.s b/data/data_835B488.s
index 742224d2b..2766f0eeb 100644
--- a/data/data_835B488.s
+++ b/data/data_835B488.s
@@ -843,13 +843,19 @@ gUnknown_83E4410:: @ 83E4410
.incbin "baserom.gba", 0x3E4410, 0x1488
gUnknown_83E5898:: @ 83E5898
- .incbin "baserom.gba", 0x3E5898, 0x248
+ .incbin "baserom.gba", 0x3E5898, 0xC0
+
+gUnknown_83E5958:: @ 83E5958
+ .incbin "baserom.gba", 0x3E5958, 0x188
gUnknown_83E5AE0:: @ 83E5AE0
.incbin "baserom.gba", 0x3E5AE0, 0xA8
gUnknown_83E5B88:: @ 83E5B88
- .incbin "baserom.gba", 0x3E5B88, 0x2A4
+ .incbin "baserom.gba", 0x3E5B88, 0x1C0
+
+gUnknown_83E5D48:: @ 83E5D48
+ .incbin "baserom.gba", 0x3E5D48, 0xE4
gUnknown_83E5E2C:: @ 83E5E2C
.incbin "baserom.gba", 0x3E5E2C, 0x18
@@ -900,58 +906,9 @@ gUnknown_83E652C:: @ 83E652C
.incbin "baserom.gba", 0x3E652C, 0x78
gUnknown_83E65A4:: @ 83E65A4
- .incbin "baserom.gba", 0x3E65A4, 0xA4C
-
-gUnknown_83E6FF0:: @ 83E6FF0
- .incbin "baserom.gba", 0x3E6FF0, 0x1C
-
-gUnknown_83E700C:: @ 83E700C
- .incbin "baserom.gba", 0x3E700C, 0x20
-
-gUnknown_83E702C:: @ 83E702C
- .incbin "baserom.gba", 0x3E702C, 0x18
-
-gUnknown_83E7044:: @ 83E7044
- .incbin "baserom.gba", 0x3E7044, 0xD0
-
-gUnknown_83E7114:: @ 83E7114
- .incbin "baserom.gba", 0x3E7114, 0x35C
-
-gUnknown_83E7470:: @ 83E7470
- .incbin "baserom.gba", 0x3E7470, 0x68
-
-gUnknown_83E74D8:: @ 83E74D8
- .incbin "baserom.gba", 0x3E74D8, 0x18
-
-gUnknown_83E74F0:: @ 83E74F0
- .incbin "baserom.gba", 0x3E74F0, 0x178
-
-gUnknown_83E7668:: @ 83E7668
- .incbin "baserom.gba", 0x3E7668, 0x78
-
-gUnknown_83E76E0:: @ 83E76E0
- .incbin "baserom.gba", 0x3E76E0, 0x528
-
-gUnknown_83E7C08:: @ 83E7C08
- .incbin "baserom.gba", 0x3E7C08, 0x30
-
-gUnknown_83E7C38:: @ 83E7C38
- .incbin "baserom.gba", 0x3E7C38, 0x60
-
-gUnknown_83E7C98:: @ 83E7C98
- .incbin "baserom.gba", 0x3E7C98, 0x30
-
-gUnknown_83E7CC8:: @ 83E7CC8
- .incbin "baserom.gba", 0x3E7CC8, 0x2
-
-gUnknown_83E7CCA:: @ 83E7CCA
- .incbin "baserom.gba", 0x3E7CCA, 0x4
-
-gUnknown_83E7CCE:: @ 83E7CCE
- .incbin "baserom.gba", 0x3E7CCE, 0x6
+ .incbin "baserom.gba", 0x3E65A4, 0x544
-gUnknown_83E7CD4:: @ 83E7CD4
- .incbin "baserom.gba", 0x3E7CD4, 0x28
+ .section .rodata.83E7CFC
gUnknown_83E7CFC:: @ 83E7CFC
.incbin "baserom.gba", 0x3E7CFC, 0x14
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 0944bf82a..ce1f5aeeb 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -139,37 +139,6 @@ gUnknown_84020E6:: @ 84020E6
gUnknown_84020F8:: @ 84020F8
.incbin "baserom.gba", 0x4020F8, 0xE4
-gUnknown_84021DC:: @ 84021DC
- .incbin "baserom.gba", 0x4021DC, 0xC
-
-gUnknown_84021E8:: @ 84021E8
- .incbin "baserom.gba", 0x4021E8, 0x18
-
-gUnknown_8402200:: @ 8402200
- .incbin "baserom.gba", 0x402200, 0x3
-
-gUnknown_8402203:: @ 8402203
- .incbin "baserom.gba", 0x402203, 0x5
-
-gUnknown_8402208:: @ 8402208
- .incbin "baserom.gba", 0x402208, 0x18
-
-gUnknown_8402220:: @ 8402220
- .incbin "baserom.gba", 0x402220, 0x8
-
-gUnknown_8402228:: @ 8402228
- .incbin "baserom.gba", 0x402228, 0x20
-
-gUnknown_8402248:: @ 8402248
- .incbin "baserom.gba", 0x402248, 0x8
-
-gUnknown_8402250:: @ 8402250
- .incbin "baserom.gba", 0x402250, 0x8
-
-gUnknown_8402258:: @ 8402258
- .incbin "baserom.gba", 0x402258, 0x8
-
-
.section .rodata.battle_anim_special
gUnknown_840BF3C:: @ 840BF3C
diff --git a/data/graphics.s b/data/graphics.s
index 9c5d1c3f9..379411a67 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -1624,15 +1624,15 @@ gFile_graphics_battle_anims_backgrounds_00_tilemap:: @ 8D1CFD4
.incbin "graphics/battle_anims/backgrounds/00.bin.lz"
.align 2
-gFile_graphics_battle_anims_masks_metal_shine_sheet:: @ 8D1D224
+gMetalShineGfx:: @ 8D1D224
.incbin "graphics/battle_anims/masks/metal_shine.4bpp.lz"
.align 2
-gFile_graphics_battle_anims_masks_metal_shine_palette:: @ 8D1D360
+gMetalShinePalette:: @ 8D1D360
.incbin "graphics/battle_anims/masks/metal_shine.gbapal.lz"
.align 2
-gFile_graphics_battle_anims_masks_metal_shine_tilemap:: @ 8D1D388
+gMetalShineTilemap:: @ 8D1D388
.incbin "graphics/battle_anims/masks/metal_shine.bin.lz"
.align 2
@@ -2412,47 +2412,47 @@ gFile_graphics_battle_anims_sprites_243_palette:: @ 8D2D8CC
.incbin "graphics/battle_anims/sprites/243.gbapal.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat_sheet:: @ 8D2D8F4
+gBattleStatMask_Gfx:: @ 8D2D8F4
.incbin "graphics/battle_anims/masks/stat.4bpp.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat_tilemap_1_tilemap:: @ 8D2DB04
+gBattleStatMask1_Tilemap:: @ 8D2DB04
.incbin "graphics/battle_anims/masks/stat_tilemap_1.bin.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat_tilemap_2_tilemap:: @ 8D2DC20
+gBattleStatMask2_Tilemap:: @ 8D2DC20
.incbin "graphics/battle_anims/masks/stat_tilemap_2.bin.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat1_palette:: @ 8D2DD3C
+gBattleStatMask1_Pal:: @ 8D2DD3C
.incbin "graphics/battle_anims/masks/stat1.gbapal.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat2_palette:: @ 8D2DD5C
+gBattleStatMask2_Pal:: @ 8D2DD5C
.incbin "graphics/battle_anims/masks/stat2.gbapal.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat3_palette:: @ 8D2DD7C
+gBattleStatMask3_Pal:: @ 8D2DD7C
.incbin "graphics/battle_anims/masks/stat3.gbapal.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat4_palette:: @ 8D2DD9C
+gBattleStatMask4_Pal:: @ 8D2DD9C
.incbin "graphics/battle_anims/masks/stat4.gbapal.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat5_palette:: @ 8D2DDBC
+gBattleStatMask5_Pal:: @ 8D2DDBC
.incbin "graphics/battle_anims/masks/stat5.gbapal.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat6_palette:: @ 8D2DDDC
+gBattleStatMask6_Pal:: @ 8D2DDDC
.incbin "graphics/battle_anims/masks/stat6.gbapal.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat7_palette:: @ 8D2DDFC
+gBattleStatMask7_Pal:: @ 8D2DDFC
.incbin "graphics/battle_anims/masks/stat7.gbapal.lz"
.align 2
-gFile_graphics_battle_anims_masks_stat8_palette:: @ 8D2DE1C
+gBattleStatMask8_Pal:: @ 8D2DE1C
.incbin "graphics/battle_anims/masks/stat8.gbapal.lz"
.align 2
@@ -13554,7 +13554,7 @@ gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet:: @ 8E794D0
.incbin "graphics/battle_anims/backgrounds/sandstorm_brew.4bpp.lz"
.align 2
-gFile_graphics_battle_anims_sprites_261_palette:: @ 8E799FC
+gBattleAnimSpritePal_FlyingDirt:: @ 8E799FC
.incbin "graphics/battle_anims/sprites/261.gbapal.lz"
.align 2
diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc
index abfd0d550..62a34d33c 100644
--- a/data/map_event_scripts.inc
+++ b/data/map_event_scripts.inc
@@ -774,7 +774,7 @@ EventScript_1A4EAE:: @ 81A4EAE
return
EventScript_1A4EAF:: @ 81A4EAF
- special sub_806F67C
+ special Field_AskSaveTheGame
waitstate
return
@@ -4447,21 +4447,33 @@ SevenIsland_TrainerTower_1F_EventScript_1C54EA:: @ 81C54EA
gUnknown_81C555B:: @ 81C555B
.incbin "baserom.gba", 0x1C555B, 0x6E
-gUnknown_81C55C9:: @ 81C55C9
- .incbin "baserom.gba", 0x1C55C9, 0x21
+gText_WouldYouLikeToSaveTheGame:: @ 81C55C9
+ .string "Would you like to save the game?$"
-gUnknown_81C55EA:: @ 81C55EA
- .incbin "baserom.gba", 0x1C55EA, 0x3B
+gText_AlreadySaveFile_WouldLikeToOverwrite:: @ 81C55EA
+ .string "There is already a saved file.\n"
+ .string "Is it okay to overwrite it?$"
-gUnknown_81C5625:: @ 81C5625
- .incbin "baserom.gba", 0x1C5625, 0x22
+gText_SavingDontTurnOffThePower:: @ 81C5625
+ .string "SAVING…\n"
+ .string "DON'T TURN OFF THE POWER.$"
-gUnknown_81C5647:: @ 81C5647
- .incbin "baserom.gba", 0x1C5647, 0x23
+gText_PlayerSavedTheGame:: @ 81C5647
+ .string "{PLAYER} saved the game.$"
+
+gUnknown_81C565A::
+ .string "セーブに しっぱい しました‥$"
@ 0xE5
-gUnknown_81C566A:: @ 81C566A
- .incbin "baserom.gba", 0x1C566A, 0xE5
+gText_DifferentGameFile:: @ 81C566A
+ .string "WARNING!\p"
+ .string "There is a different game file that\n"
+ .string "is already saved.\p"
+ .string "If you save now, the other file's\n"
+ .string "adventure, including items and\l"
+ .string "POKéMON, will be entirely lost.\p"
+ .string "Are you sure you want to save now\n"
+ .string "and overwrite the other save file?$"
gOtherText_NewName:: @ 81C574F
.string "NEW NAME$"
diff --git a/data/maps/PalletTown_PlayersHouse_2F/scripts.inc b/data/maps/PalletTown_PlayersHouse_2F/scripts.inc
index 3700d06be..51865301c 100644
--- a/data/maps/PalletTown_PlayersHouse_2F/scripts.inc
+++ b/data/maps/PalletTown_PlayersHouse_2F/scripts.inc
@@ -36,7 +36,7 @@ PalletTown_PlayersHouse_2F_EventScript_168CE4:: @ 8168CE4
goto_if_eq EventScript_1A7AE0
lockall
setvar VAR_0x8004, 32
- special sub_812B220
+ special Special_SetSomeVariable
setvar VAR_0x8004, 1
special sub_80CA86C
playse SE_PC_ON
@@ -47,7 +47,7 @@ PalletTown_PlayersHouse_2F_EventScript_168CE4:: @ 8168CE4
releaseall
end
-gUnknown_8168D17:: @ 8168D17
+EventScript_PalletTown_PlayersHouse_2F_ShutDownPC:: @ 8168D17
setvar VAR_0x8004, 1
playse SE_PC_OFF
special sub_80CA9A8
diff --git a/data/specials.inc b/data/specials.inc
index 6111e4836..d8d208d43 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -102,7 +102,7 @@ gSpecials:: @ 815FD60
def_special nullsub_75
def_special nullsub_75
def_special sub_8081128
- def_special sub_806F67C
+ def_special Field_AskSaveTheGame
def_special nullsub_56
def_special sub_80FEE44
def_special sub_80BDA7C
@@ -390,9 +390,9 @@ gSpecials:: @ 815FD60
def_special TakePokemonFromRoute5Daycare
def_special ScrSpecial_SeaGallopFerry
def_special sub_80CC48C
- def_special sub_812B220
- def_special sub_812B234
- def_special sub_812B248
+ def_special Special_SetSomeVariable
+ def_special HelpSystem_BackupSomeVariable
+ def_special HelpSystem_RestoreSomeVariable
def_special ValidateReceivedWonderCard
def_special sub_810B810
def_special sub_811999C
diff --git a/data/start_menu.s b/data/start_menu.s
deleted file mode 100644
index e004a6628..000000000
--- a/data/start_menu.s
+++ /dev/null
@@ -1,28 +0,0 @@
- .section .rodata
- .align 2
-gUnknown_83A7344:: @ 83A7344
- .incbin "baserom.gba", 0x3A7344, 0x48
-
-gUnknown_83A738C:: @ 83A738C
- .incbin "baserom.gba", 0x3A738C, 0x8
-
-gUnknown_83A7394:: @ 83A7394
- .incbin "baserom.gba", 0x3A7394, 0x24
-
-gUnknown_83A73B8:: @ 83A73B8
- .incbin "baserom.gba", 0x3A73B8, 0x4
-
-gUnknown_83A73BC:: @ 83A73BC
- .incbin "baserom.gba", 0x3A73BC, 0x10
-
-gUnknown_83A73CC:: @ 83A73CC
- .incbin "baserom.gba", 0x3A73CC, 0x8
-
-gUnknown_83A73D4:: @ 83A73D4
- .incbin "baserom.gba", 0x3A73D4, 0x4
-
-gUnknown_83A73D8:: @ 83A73D8
- .incbin "baserom.gba", 0x3A73D8, 0x4
-
-gUnknown_83A73DC:: @ 83A73DC
- .incbin "baserom.gba", 0x3A73DC, 0x284
diff --git a/data/strings.s b/data/strings.s
index 63c08bbab..52abc36de 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -45,7 +45,7 @@ gExpandedPlaceholder_Green:: @ 8415A5C
gText_EggNickname:: @ 8415A62
.string "EGG$"
-gText_Pokemon:: @ 8415A66
+gStartMenuText_Pokemon:: @ 8415A66
.string "POKéMON$"
gText_NewGame:: @ 8415A6E
@@ -64,34 +64,57 @@ gText_MysteryGift:: @ 8415A97
.string "MYSTERY GIFT$"
gText_WirelessAdapterIsNotConnected:: @ 8415AA4
- .string "The Wireless Adapter is not\nconnected.$"
+ .string "The Wireless Adapter is not\n"
+ .string "connected.$"
gText_MysteryGiftCantBeUsedWhileWirelessAdapterIsAttached:: @ 8415ACB
- .string "MYSTERY GIFT can't be used while\nthe Wireless Adapter is attached.$"
+ .string "MYSTERY GIFT can't be used while\n"
+ .string "the Wireless Adapter is attached.$"
gUnknown_8415B0E:: @ 0x8415B0E
- .string "がいぶデ-タにより レポ-トを こうしんします\nしばらく おまちください$"
+ .string "がいぶデ-タにより レポ-トを こうしんします\n"
+ .string "しばらく おまちください$"
gUnknown_8415B33:: @ 0x8415B33
.string "レポ-トが こうしんされました!$"
gUnknown_8415B44:: @ 0x8415B44
- .string "レポ-トが こうしんされました!\pこれいじょう\nレポ-トが かききれないので\lバックアップカ-トリッジを\lこうかんしてください!\pくわしくは\nにんてんどう サ-ビスセンタ- まで\lおといあわせ ください$"
+ .string "レポ-トが こうしんされました!\p"
+ .string "これいじょう\n"
+ .string "レポ-トが かききれないので\l"
+ .string "バックアップカ-トリッジを\l"
+ .string "こうかんしてください!\p"
+ .string "くわしくは\n"
+ .string "にんてんどう サ-ビスセンタ- まで\l"
+ .string "おといあわせ ください$"
gUnknown_8415BAA:: @ 0x8415BAA
- .string "レポ-トの こうしんは\nしっぱいしました!\pバックアップカ-トリッジを\nこうかんしてください!\pくわしくは\nにんてんどう サ-ビスセンタ- まで\lおといあわせ ください$"
+ .string "レポ-トの こうしんは\n"
+ .string "しっぱいしました!\p"
+ .string "バックアップカ-トリッジを\n"
+ .string "こうかんしてください!\p"
+ .string "くわしくは\n"
+ .string "にんてんどう サ-ビスセンタ- まで\l"
+ .string "おといあわせ ください$"
gText_SaveFileCorruptedPrevWillBeLoaded:: @ 8415BFF
- .string "The save file is corrupted.\pThe previous save file will be\nloaded.$"
+ .string "The save file is corrupted.\p"
+ .string "The previous save file will be\n"
+ .string "loaded.$"
gText_SaveFileHasBeenDeleted:: @ 8415C42
- .string "The save file has been\ndeleted...$"
+ .string "The save file has been\n"
+ .string "deleted...$"
gText_1MSubCircuitBoardNotInstalled:: @ 8415C64
- .string "The 1M sub-circuit board is\nnot installed.$"
+ .string "The 1M sub-circuit board is\n"
+ .string "not installed.$"
gTextJP_InternalBatteryHasRunDry:: @ 0x8415C8F
- .string "でんちぎれの ために\nとけいが うごかなくなりました\pとけいに かんけいする できごとは おきませんが\nゲ-ムを つづけて あそぶことは できます$"
+ .string "でんちぎれの ために\n"
+ .string "とけいが うごかなくなりました\p"
+ .string "とけいに かんけいする できごとは おきませんが\n"
+ .string "ゲ-ムを つづけて あそぶことは できます$"
gUnknown_8415CD9:: @ 0x8415CD9
.string "しゅじんこう$"
@@ -311,20 +334,28 @@ gUnknown_8416008:: @ 8416008
.string "Welcome to the HALL OF FAME!$"
gUnknown_8416025:: @ 0x8416025
- .string " みつけた ポケモン {STR_VAR_1}!\nつかまえた ポケモン {STR_VAR_2}!\pオダマキはかせの\nポケモンずかん ひょうか!\pオダマキ“どれどれ\p$"
+ .string " みつけた ポケモン {STR_VAR_1}!\n"
+ .string "つかまえた ポケモン {STR_VAR_2}!\p"
+ .string "オダマキはかせの\n"
+ .string "ポケモンずかん ひょうか!\p"
+ .string "オダマキ“どれどれ\p"
+ .string "$"
gUnknown_8416067:: @ 0x8416067
- .string " ここまでの レポ-トを かきしるしています!\nでんげんを きらないでください$"
+ .string " ここまでの レポ-トを かきしるしています!\n"
+ .string "でんげんを きらないでください$"
.align 2
gUnknown_8416090:: @ 8416090
- .string "The HALL OF FAME data is\ncorrupted.$"
+ .string "The HALL OF FAME data is\n"
+ .string "corrupted.$"
gUnknown_84160B4:: @ 84160B4
.string "HALL OF FAME No. {STR_VAR_1}$"
gUnknown_84160C8:: @ 84160C8
- .string "LEAGUE CHAMPION!\nCONGRATULATIONS!$"
+ .string "LEAGUE CHAMPION!\n"
+ .string "CONGRATULATIONS!$"
.align 2
gUnknown_84160EC:: @ 84160EC
@@ -343,7 +374,8 @@ gUnknown_8416104:: @ 8416104
.string "IDNo.$"
gUnknown_841610A:: @ 0x841610A
- .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}オダマキはかせが ピンチだ!\nポケモンを だして たすけてあげよう!$"
+ .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}オダマキはかせが ピンチだ!\n"
+ .string "ポケモンを だして たすけてあげよう!$"
gUnknown_8416133:: @ 0x8416133
.string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}このポケモンにしますか?$"
@@ -351,19 +383,21 @@ gUnknown_8416133:: @ 0x8416133
gUnknown_8416146:: @ 0x8416146
.string "ポケモン$"
-gUnknown_841614B:: @ 841614B
- .string "Save error.\pPlease exchange the\nbackup memory.$"
+gText_SaveError_PleaseExchangeBackupMemory:: @ 841614B
+ .string "Save error.\p"
+ .string "Please exchange the\n"
+ .string "backup memory.$"
-gUnknown_841617A:: @ 841617A
+gSaveStatName_Player:: @ 841617A
.string "PLAYER$"
-gUnknown_8416181:: @ 8416181
+gSaveStatName_Badges:: @ 8416181
.string "BADGES$"
-gUnknown_8416188:: @ 8416188
+gSaveStatName_Pokedex:: @ 8416188
.string "POKéDEX$"
-gUnknown_8416190:: @ 8416190
+gSaveStatName_Time:: @ 8416190
.string "TIME$"
gUnknown_8416195::
@@ -475,35 +509,35 @@ gUnknown_841623D:: @ 841623D
.string "YES\n"
.string "NO$"
-gUnknown_8416244::
+gText_GoBackToThePreviousMenu::
.string "Go back to the\n"
.string "previous menu.$"
-gUnknown_8416262:: @ 8416262
+gText_WhatWouldYouLikeToDo:: @ 8416262
.string "What would you like to do?$"
-gUnknown_841627D::
+gStartMenuText_Pokedex::
.string "POKéDEX$"
-gUnknown_8416285:: @ 8416285
+gStartMenuText_Bag:: @ 8416285
.string "BAG$"
gUnknown_8416289::
.string "ポケナビ$"
-gUnknown_841628E::
+gStartMenuText_Player::
.string "{PLAYER}$"
-gUnknown_8416291::
+gStartMenuText_Save::
.string "SAVE$"
-gUnknown_8416296::
+gStartMenuText_Option::
.string "OPTION$"
-gUnknown_841629D::
+gStartMenuText_Exit::
.string "EXIT$"
-gUnknown_84162A2::
+gStartMenuText_Retire::
.string "RETIRE$"
gUnknown_84162A9:: @ 84162A9
@@ -542,7 +576,8 @@ gText_IsSelected:: @ 8416301
.string "selected.$"
gUnknown_841630F:: @ 841630F
- .string "You can't write\nMAIL here.$"
+ .string "You can't write\n"
+ .string "MAIL here.$"
gText_ThereIsNoPokemon:: @ 841632A
.string "There is no\n"
@@ -556,43 +591,58 @@ gText_ItemCantBeHeld:: @ 841635E
.string "The {STR_VAR_1} can't be held.$"
gText_TheStrVar1CantBeHeldHere:: @ 8416374
- .string "The {STR_VAR_1} can't be held\nhere.$"
+ .string "The {STR_VAR_1} can't be held\n"
+ .string "here.$"
gUnknown_841638F:: @ 841638F
- .string "Deposit how many\n{STR_VAR_1}(s)?$"
+ .string "Deposit how many\n"
+ .string "{STR_VAR_1}(s)?$"
gUnknown_84163A7:: @ 84163A7
- .string "Deposited {STR_VAR_2}\n{STR_VAR_1}(s).$"
+ .string "Deposited {STR_VAR_2}\n"
+ .string "{STR_VAR_1}(s).$"
gUnknown_84163BB:: @ 84163BB
- .string "There's no room to\nstore items.$"
+ .string "There's no room to\n"
+ .string "store items.$"
gText_TossOutHowManyStrVar1s:: @ 84163DB
- .string "Toss out how many\n{STR_VAR_1}(s)?$"
+ .string "Toss out how many\n"
+ .string "{STR_VAR_1}(s)?$"
gText_ThrewAwayStrVar2StrVar1s:: @ 84163F4
- .string "Threw away {STR_VAR_2}\n{STR_VAR_1}(s).$"
+ .string "Threw away {STR_VAR_2}\n"
+ .string "{STR_VAR_1}(s).$"
gText_ThrowAwayStrVar2OfThisItemQM:: @ 8416409
- .string "Throw away {STR_VAR_2} of\nthis item?$"
+ .string "Throw away {STR_VAR_2} of\n"
+ .string "this item?$"
gUnknown_8416425:: @ 8416425
- .string "OAK: {PLAYER}!\nThis isn't the time to use that!{PAUSE_UNTIL_PRESS}$"
+ .string "OAK: {PLAYER}!\n"
+ .string "This isn't the time to use that!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416451:: @ 8416451
.string "You can't dismount your BIKE here.{PAUSE_UNTIL_PRESS}$"
gText_ItemfinderResponding:: @ 8416476
- .string "Huh?\nThe ITEMFINDER's responding!\pThere's an item buried around here!{PAUSE_UNTIL_PRESS}$"
+ .string "Huh?\n"
+ .string "The ITEMFINDER's responding!\p"
+ .string "There's an item buried around here!{PAUSE_UNTIL_PRESS}$"
gText_ItemfinderShakingWildly:: @ 84164BE
- .string "Oh!\nThe ITEMFINDER's shaking wildly!\pThere's an item buried underfoot!\p‥ ‥ ‥ ‥ ‥ ‥{PAUSE_UNTIL_PRESS}$"
+ .string "Oh!\n"
+ .string "The ITEMFINDER's shaking wildly!\p"
+ .string "There's an item buried underfoot!\p"
+ .string "‥ ‥ ‥ ‥ ‥ ‥{PAUSE_UNTIL_PRESS}$"
gText_NopeTheresNoResponse:: @ 8416513
- .string "‥ ‥ ‥ ‥Nope!\nThere's no response.{PAUSE_UNTIL_PRESS}$"
+ .string "‥ ‥ ‥ ‥Nope!\n"
+ .string "There's no response.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416537:: @ 8416537
- .string "Your COINS:\n{STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
+ .string "Your COINS:\n"
+ .string "{STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
gUnknown_8416548:: @ 0x8416548
.string "わざマシンを きどうした!$"
@@ -601,19 +651,28 @@ gUnknown_8416556:: @ 0x8416556
.string "ひでんマシンを きどうした!$"
gUnknown_8416565:: @ 0x8416565
- .string "なかには {STR_VAR_1}が\nきろくされていた!\p{STR_VAR_1}を\nポケモンに おぼえさせますか?$"
+ .string "なかには {STR_VAR_1}が\n"
+ .string "きろくされていた!\p"
+ .string "{STR_VAR_1}を\n"
+ .string "ポケモンに おぼえさせますか?$"
gUnknown_841658C:: @ 841658C
- .string "{PLAYER} used the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
+ .string "{PLAYER} used the\n"
+ .string "{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
gUnknown_841659E:: @ 841659E
- .string "But the effects of a REPEL\nlingered from earlier.{PAUSE_UNTIL_PRESS}$"
+ .string "But the effects of a REPEL\n"
+ .string "lingered from earlier.{PAUSE_UNTIL_PRESS}$"
gUnknown_84165D2:: @ 84165D2
- .string "{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be lured.{PAUSE_UNTIL_PRESS}$"
+ .string "{PLAYER} used the\n"
+ .string "{STR_VAR_2}.\p"
+ .string "Wild POKéMON will be lured.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416600:: @ 8416600
- .string "{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be repelled.{PAUSE_UNTIL_PRESS}$"
+ .string "{PLAYER} used the\n"
+ .string "{STR_VAR_2}.\p"
+ .string "Wild POKéMON will be repelled.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416631:: @ 8416631
.string "The BOX is full.{PAUSE_UNTIL_PRESS}$"
@@ -658,7 +717,8 @@ gText_BerryPouch:: @ 841670A
.string "BERRY POUCH$"
gText_TheBerryPouchWillBePutAway:: @ 8416716
- .string "The BERRY POUCH will be\nput away.$"
+ .string "The BERRY POUCH will be\n"
+ .string "put away.$"
gUnknown_8416738:: @ 0x8416738
.string "BUY$"
@@ -676,43 +736,54 @@ gUnknown_8416757:: @ 8416757
.string "Quit shopping.$"
gUnknown_8416766:: @ 8416766
- .string "{STR_VAR_1}? Certainly.\nHow many would you like?$"
+ .string "{STR_VAR_1}? Certainly.\n"
+ .string "How many would you like?$"
gUnknown_841678E:: @ 841678E
- .string "{STR_VAR_1}, and you want {STR_VAR_2}.\nThat will be ¥{STR_VAR_3}. Okay?$"
+ .string "{STR_VAR_1}, and you want {STR_VAR_2}.\n"
+ .string "That will be ¥{STR_VAR_3}. Okay?$"
gUnknown_84167BB:: @ 0x84167BB
- .string "{STR_VAR_1} だね!\n{STR_VAR_2}¥ だけど かうかい?$"
+ .string "{STR_VAR_1} だね!\n"
+ .string "{STR_VAR_2}¥ だけど かうかい?$"
gUnknown_84167D0:: @ 0x84167D0
- .string "{STR_VAR_1} ですね!\n{STR_VAR_2}¥ だけど かいますか?$"
+ .string "{STR_VAR_1} ですね!\n"
+ .string "{STR_VAR_2}¥ だけど かいますか?$"
gUnknown_84167E7:: @ 84167E7
- .string "Here you are!\nThank you!$"
+ .string "Here you are!\n"
+ .string "Thank you!$"
gUnknown_8416800:: @ 0x8416800
- .string "どうも ありがとう!\nじたくの パソコンに おくって おきますね!$"
+ .string "どうも ありがとう!\n"
+ .string "じたくの パソコンに おくって おきますね!$"
gUnknown_8416822:: @ 0x8416822
- .string "どうも ありがとう!\nじたくの パソコンに おくって おくね!$"
+ .string "どうも ありがとう!\n"
+ .string "じたくの パソコンに おくって おくね!$"
gUnknown_8416842:: @ 8416842
.string "You don't have enough money.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416861:: @ 8416861
- .string "You have no more room for this\nitem.{PAUSE_UNTIL_PRESS}$"
+ .string "You have no more room for this\n"
+ .string "item.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416888:: @ 0x8416888
- .string "{STR_VAR_1}を\nいれる ばしょが いっぱいです{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1}を\n"
+ .string "いれる ばしょが いっぱいです{PAUSE_UNTIL_PRESS}$"
gUnknown_841689E:: @ 841689E
.string "Is there anything else I can do?$"
gUnknown_84168BF:: @ 0x84168BF
- .string "その ほかに\nなにか ちからに なれることは?$"
+ .string "その ほかに\n"
+ .string "なにか ちからに なれることは?$"
gUnknown_84168D7:: @ 0x84168D7
- .string "プレミアボ-ル 1コ\nおまけ しておきますね!{PAUSE_UNTIL_PRESS}$"
+ .string "プレミアボ-ル 1コ\n"
+ .string "おまけ しておきますね!{PAUSE_UNTIL_PRESS}$"
gText_OhNoICantBuyThat:: @ 84168F1
.string "{STR_VAR_1}? Oh, no.\n"
@@ -727,7 +798,8 @@ gText_ICanPayThisMuch_WouldThatBeOkay:: @ 8416936
.string "Would that be okay?$"
gText_TurnedOverItemsWorthYen:: @ 8416959
- .string "Turned over the {STR_VAR_1}シSス\nworth ¥{STR_VAR_3}.$"
+ .string "Turned over the {STR_VAR_1}シSス\n"
+ .string "worth ¥{STR_VAR_3}.$"
gText_PokedollarVar1:: @ 841697A
.string "¥{STR_VAR_1}$"
@@ -788,34 +860,43 @@ gUnknown_84169F8:: @ 84169F8
.string "that POKéMON.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A1E:: @ 8416A1E
- .string "{STR_VAR_1} can't be switched\nout!{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} can't be switched\n"
+ .string "out!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A3A:: @ 8416A3A
- .string "{STR_VAR_1} is already\nin battle!{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} is already\n"
+ .string "in battle!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A55:: @ 8416A55
- .string "{STR_VAR_1} has already been\nselected.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} has already been\n"
+ .string "selected.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A75:: @ 8416A75
- .string "{STR_VAR_1} has no energy\nleft to battle!{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} has no energy\n"
+ .string "left to battle!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A98:: @ 8416A98
- .string "You can't switch {STR_VAR_1}'s\nPOKéMON with one of yours!{PAUSE_UNTIL_PRESS}$"
+ .string "You can't switch {STR_VAR_1}'s\n"
+ .string "POKéMON with one of yours!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416ACB:: @ 8416ACB
.string "An EGG can't battle!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416AE2:: @ 8416AE2
- .string "This can't be used until a new\nBADGE is obtained.{PAUSE_UNTIL_PRESS}$"
+ .string "This can't be used until a new\n"
+ .string "BADGE is obtained.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416B16:: @ 8416B16
- .string "No more than three POKéMON\nmay enter.{PAUSE_UNTIL_PRESS}$"
+ .string "No more than three POKéMON\n"
+ .string "may enter.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416B3E:: @ 8416B3E
- .string "No more than two POKéMON\nmay enter.{PAUSE_UNTIL_PRESS}$"
+ .string "No more than two POKéMON\n"
+ .string "may enter.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416B64:: @ 8416B64
- .string "Send the removed MAIL to\nyour PC?$"
+ .string "Send the removed MAIL to\n"
+ .string "your PC?$"
gUnknown_8416B86:: @ 8416B86
.string "The MAIL was sent to your PC.{PAUSE_UNTIL_PRESS}$"
@@ -824,71 +905,101 @@ gUnknown_8416BA6:: @ 8416BA6
.string "Your PC's MAILBOX is full.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416BC3:: @ 8416BC3
- .string "If the MAIL is removed, the\nmessage will be lost. Okay?$"
+ .string "If the MAIL is removed, the\n"
+ .string "message will be lost. Okay?$"
gUnknown_8416BFB:: @ 8416BFB
- .string "MAIL must be removed before\nholding an item.{PAUSE_UNTIL_PRESS}$"
+ .string "MAIL must be removed before\n"
+ .string "holding an item.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416C2A:: @ 8416C2A
- .string "{STR_VAR_1} was given the\n{STR_VAR_2} to hold.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} was given the\n"
+ .string "{STR_VAR_2} to hold.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416C49:: @ 8416C49
- .string "{STR_VAR_1} is already holding\none {STR_VAR_2}.\pWould you like to switch the\ntwo items?$"
+ .string "{STR_VAR_1} is already holding\n"
+ .string "one {STR_VAR_2}.\p"
+ .string "Would you like to switch the\n"
+ .string "two items?$"
gUnknown_8416C8F:: @ 8416C8F
- .string "{STR_VAR_1} isn't holding\nanything.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} isn't holding\n"
+ .string "anything.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416CAC:: @ 8416CAC
- .string "Received the {STR_VAR_2}\nfrom {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
+ .string "Received the {STR_VAR_2}\n"
+ .string "from {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416CC7:: @ 8416CC7
- .string "MAIL was taken from the\nPOKéMON.{PAUSE_UNTIL_PRESS}$"
+ .string "MAIL was taken from the\n"
+ .string "POKéMON.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416CEA:: @ 8416CEA
- .string "The {STR_VAR_2} was taken and\nreplaced with the {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
+ .string "The {STR_VAR_2} was taken and\n"
+ .string "replaced with the {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416D17:: @ 8416D17
- .string "This POKéMON is holding an\nitem. It cannot hold MAIL.{PAUSE_UNTIL_PRESS}$"
+ .string "This POKéMON is holding an\n"
+ .string "item. It cannot hold MAIL.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416D4F:: @ 8416D4F
- .string "MAIL was transferred from\nthe MAILBOX.{PAUSE_UNTIL_PRESS}$"
+ .string "MAIL was transferred from\n"
+ .string "the MAILBOX.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416D78:: @ 8416D78
- .string "The {STR_VAR_1} is full. The POKéMON's\nitem could not be removed.{PAUSE_UNTIL_PRESS}$"
+ .string "The {STR_VAR_1} is full. The POKéMON's\n"
+ .string "item could not be removed.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416DB3:: @ 8416DB3
- .string "{STR_VAR_1} learned\n{STR_VAR_2}!$"
+ .string "{STR_VAR_1} learned\n"
+ .string "{STR_VAR_2}!$"
gUnknown_8416DC2:: @ 8416DC2
- .string "{STR_VAR_1} and {STR_VAR_2}\nare not compatible.\p{STR_VAR_2} can't be\nlearned.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} and {STR_VAR_2}\n"
+ .string "are not compatible.\p"
+ .string "{STR_VAR_2} can't be\n"
+ .string "learned.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416DF7:: @ 8416DF7
- .string "{STR_VAR_1} wants to learn the\nmove {STR_VAR_2}.\pHowever, {STR_VAR_1} already\nknows four moves.\pShould a move be deleted and\nreplaced with {STR_VAR_2}?$"
+ .string "{STR_VAR_1} wants to learn the\n"
+ .string "move {STR_VAR_2}.\p"
+ .string "However, {STR_VAR_1} already\n"
+ .string "knows four moves.\p"
+ .string "Should a move be deleted and\n"
+ .string "replaced with {STR_VAR_2}?$"
gUnknown_8416E6B:: @ 8416E6B
- .string "Stop trying to teach\n{STR_VAR_2}?$"
+ .string "Stop trying to teach\n"
+ .string "{STR_VAR_2}?$"
gUnknown_8416E84:: @ 8416E84
- .string "{STR_VAR_1} did not learn the\nmove {STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} did not learn the\n"
+ .string "move {STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416EA4:: @ 8416EA4
.string "Which move should be forgotten?{PAUSE_UNTIL_PRESS}$"
gUnknown_8416EC6:: @ 8416EC6
- .string "1, {PAUSE 0x0F}2, and{PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_KON}Poof!\p{STR_VAR_1} forgot how to\nuse {STR_VAR_2}.\pAnd...{PAUSE_UNTIL_PRESS}$"
+ .string "1, {PAUSE 0x0F}2, and{PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_KON}Poof!\p"
+ .string "{STR_VAR_1} forgot how to\n"
+ .string "use {STR_VAR_2}.\p"
+ .string "And...{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F10:: @ 8416F10
- .string "{STR_VAR_1} already knows\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} already knows\n"
+ .string "{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F27:: @ 8416F27
.string "{STR_VAR_1}'s HP was restored\n"
.string "by {STR_VAR_2} point(s).{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F4E:: @ 8416F4E
- .string "{STR_VAR_1} was cured of its\npoisoning.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} was cured of its\n"
+ .string "poisoning.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F6F:: @ 8416F6F
- .string "{STR_VAR_1} was cured of\nparalysis.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} was cured of\n"
+ .string "paralysis.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F8C:: @ 8416F8C
.string "{STR_VAR_1} woke up.{PAUSE_UNTIL_PRESS}$"
@@ -903,7 +1014,8 @@ gUnknown_8416FC7:: @ 8416FC7
.string "PP was restored.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416FDA:: @ 0x8416FDA
- .string "{STR_VAR_1}は\nげんきを とりもどした!{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1}は\n"
+ .string "げんきを とりもどした!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416FED:: @ 8416FED
.string "{STR_VAR_1} became healthy.{PAUSE_UNTIL_PRESS}$"
@@ -912,39 +1024,49 @@ gUnknown_8417002:: @ 8417002
.string "{STR_VAR_1}'s PP increased.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417017:: @ 8417017
- .string "{STR_VAR_1} was elevated to\nLv. {STR_VAR_2}.$"
+ .string "{STR_VAR_1} was elevated to\n"
+ .string "Lv. {STR_VAR_2}.$"
gUnknown_8417032:: @ 8417032
- .string "{STR_VAR_1}'s base {STR_VAR_2}\nstat was raised.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1}'s base {STR_VAR_2}\n"
+ .string "stat was raised.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417052:: @ 8417052
- .string "{STR_VAR_1} snapped out of its\nconfusion.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} snapped out of its\n"
+ .string "confusion.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417075:: @ 8417075
- .string "{STR_VAR_1} got over its\ninfatuation.{PAUSE_UNTIL_PRESS}$"
+ .string "{STR_VAR_1} got over its\n"
+ .string "infatuation.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417094:: @ 0x8417094
- .string "That's your only\nPOKéMON for battle.$"
+ .string "That's your only\n"
+ .string "POKéMON for battle.$"
.align 2
gUnknown_84170BC:: @ 84170BC
- .string "That POKéMON can't be traded\nnow.$"
+ .string "That POKéMON can't be traded\n"
+ .string "now.$"
.align 2
gUnknown_84170E0:: @ 84170E0
.string "An EGG can't be traded now.$"
gUnknown_84170FC:: @ 0x84170FC
- .string "The other TRAINER's POKéMON\ncan't be traded now.$"
+ .string "The other TRAINER's POKéMON\n"
+ .string "can't be traded now.$"
gUnknown_841712D:: @ 0x841712D
- .string " The other TRAINER can't accept\nthat POKéMON now.$"
+ .string " The other TRAINER can't accept\n"
+ .string "that POKéMON now.$"
gUnknown_8417161:: @ 0x8417161
- .string " You can't trade with that\nTRAINER now.$"
+ .string " You can't trade with that\n"
+ .string "TRAINER now.$"
gUnknown_841718B:: @ 0x841718B
- .string " That isn't the type of POKéMON\nthat the other TRAINER wants.$"
+ .string " That isn't the type of POKéMON\n"
+ .string "that the other TRAINER wants.$"
gUnknown_84171C9:: @ 0x84171C9
.string " That isn't an EGG.$"
@@ -1058,10 +1180,17 @@ gUnknown_841744F:: @ 0x841744F
.string "LEARNED$"
gUnknown_8417457:: @ 8417457
- .string "OAK: It's important to get to know\nyour POKéMON thoroughly.\p$"
+ .string "OAK: It's important to get to know\n"
+ .string "your POKéMON thoroughly.\p"
+ .string "$"
gUnknown_8417494:: @ 8417494
- .string "This is a list of your POKéMON,\n{PLAYER}.\pOpen this to check the skills\nand moves of your POKéMON.\pYou also choose POKéMON here if\nyou want to use an item on one.{PAUSE_UNTIL_PRESS}$"
+ .string "This is a list of your POKéMON,\n"
+ .string "{PLAYER}.\p"
+ .string "Open this to check the skills\n"
+ .string "and moves of your POKéMON.\p"
+ .string "You also choose POKéMON here if\n"
+ .string "you want to use an item on one.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417533:: @ 0x8417533
.string "Cut a tree or grass.$"
@@ -1100,10 +1229,12 @@ gUnknown_84175FB:: @ 0x84175FB
.string "Return to a healing spot.$"
gUnknown_8417615:: @ 8417615
- .string "Want to escape from here and return\nto {STR_VAR_1}?$"
+ .string "Want to escape from here and return\n"
+ .string "to {STR_VAR_1}?$"
gUnknown_8417640:: @ 8417640
- .string "Want to return to the healing spot\nused last in {STR_VAR_1}?$"
+ .string "Want to return to the healing spot\n"
+ .string "used last in {STR_VAR_1}?$"
gUnknown_8417674:: @ 8417674
.string "ATTACK$"
@@ -1135,37 +1266,38 @@ gUnknown_84176CE:: @ 0x84176CE
gUnknown_84176CF:: @ 84176CF
.string "Cancel the battle?$"
-gUnknown_84176E2:: @ 0x84176E2
+gText_TurnOff:: @ 0x84176E2
.string "TURN OFF$"
gUnknown_84176EB:: @ 0x84176EB
.string "もようがえ$"
-gUnknown_84176F1:: @ 0x84176F1
+gText_ItemStorage:: @ 0x84176F1
.string "ITEM STORAGE$"
-gUnknown_84176FE:: @ 84176FE
+gText_Mailbox:: @ 84176FE
.string "MAILBOX$"
-gUnknown_8417706:: @ 0x8417706
+gText_DepositItem2:: @ 0x8417706
.string "DEPOSIT ITEM$"
-gUnknown_8417713:: @ 0x8417713
+gText_WithdrawItem2:: @ 0x8417713
.string "WITHDRAW ITEM$"
gUnknown_8417721:: @ 0x8417721
.string "どうぐを すてる$"
-gUnknown_841772A:: @ 0x841772A
+gText_StoreItemsInThePC:: @ 0x841772A
.string "Store items in the PC.$"
-gUnknown_8417741:: @ 0x8417741
+gText_TakeOutItemsFromThePC:: @ 0x8417741
.string "Take out items from the PC.$"
gUnknown_841775D:: @ 0x841775D
- .string "パソコンに あずけている\nどうぐを すてます$"
+ .string "パソコンに あずけている\n"
+ .string "どうぐを すてます$"
-gUnknown_8417774:: @ 8417774
+gText_ThereAreNoItems:: @ 8417774
.string "There are no items.{PAUSE_UNTIL_PRESS}$"
gText_NoMoreRoomInBag:: @ 841778A
@@ -1189,20 +1321,23 @@ gOtherText_MoveToBag::
gOtherText_Give2::
.string "GIVE$"
-gUnknown_84177EE:: @ 84177EE
+gText_TheresNoMailHere:: @ 84177EE
.string "There's no MAIL here.{PAUSE_UNTIL_PRESS}$"
-gUnknown_8417806:: @ 8417806
- .string "What would you like to do with\n{STR_VAR_1}'s MAIL?$"
+gText_WhatWouldYouLikeToDoWithPlayersMail:: @ 8417806
+ .string "What would you like to do with\n"
+ .string "{STR_VAR_1}'s MAIL?$"
-gUnknown_8417830:: @ 8417830
- .string "The message will be lost.\nIs that okay?$"
+gText_MessageWillBeLost:: @ 8417830
+ .string "The message will be lost.\n"
+ .string "Is that okay?$"
-gUnknown_8417858:: @ 8417858
+gText_BagIsFull:: @ 8417858
.string "The BAG is full.{PAUSE_UNTIL_PRESS}$"
-gUnknown_841786B:: @ 841786B
- .string "The MAIL was returned to the BAG\nwith its message erased.{PAUSE_UNTIL_PRESS}$"
+gText_MailReturnedToBagMessageErased:: @ 841786B
+ .string "The MAIL was returned to the BAG\n"
+ .string "with its message erased.{PAUSE_UNTIL_PRESS}$"
gText_WithdrawItem:: @ 84178A7
.string "WITHDRAW\n"
@@ -2059,16 +2194,20 @@ gUnknown_84185A5:: @ 0x84185A5
.string "SEE YA!$"
gUnknown_84185AD:: @ 0x84185AD
- .string "You can withdraw a POKéMON if you\nhave any in a BOX.$"
+ .string "You can withdraw a POKéMON if you\n"
+ .string "have any in a BOX.$"
gUnknown_84185E2:: @ 0x84185E2
- .string "You can deposit your party\nPOKéMON in any BOX.$"
+ .string "You can deposit your party\n"
+ .string "POKéMON in any BOX.$"
gUnknown_8418611:: @ 0x8418611
- .string "You can move POKéMON that are\nstored in any BOX.$"
+ .string "You can move POKéMON that are\n"
+ .string "stored in any BOX.$"
gUnknown_8418642:: @ 0x8418642
- .string "You can move items held by any\nPOKéMON in a BOX or your party.$"
+ .string "You can move items held by any\n"
+ .string "POKéMON in a BOX or your party.$"
gUnknown_8418681:: @ 0x8418681
.string "See you later!$"
@@ -2251,31 +2390,40 @@ gUnknown_8418B17:: @ 0x8418B17
.string "って$"
gUnknown_8418B1A:: @ 0x8418B1A
- .string "\nそう おもわない?$"
+ .string "\n"
+ .string "そう おもわない?$"
gUnknown_8418B25:: @ 0x8418B25
- .string "たびに でたいな-\nどこか いい ところ しらない?$"
+ .string "たびに でたいな-\n"
+ .string "どこか いい ところ しらない?$"
gUnknown_8418B40:: @ 0x8418B40
- .string "120しょくの クレヨン かったんだ-\nいいでしょう?$"
+ .string "120しょくの クレヨン かったんだ-\n"
+ .string "いいでしょう?$"
gUnknown_8418B5C:: @ 0x8418B5C
- .string "しゃぼんだまに のって とべるように\nならないかな-$"
+ .string "しゃぼんだまに のって とべるように\n"
+ .string "ならないかな-$"
gUnknown_8418B77:: @ 0x8418B77
- .string "すなはまに かいた もじは\nすぐに きえちゃうのが かなしいよね-$"
+ .string "すなはまに かいた もじは\n"
+ .string "すぐに きえちゃうのが かなしいよね-$"
gUnknown_8418B99:: @ 0x8418B99
- .string "うみの そこって どうなってるのかな-\nいちどで いいから みて みたいな-$"
+ .string "うみの そこって どうなってるのかな-\n"
+ .string "いちどで いいから みて みたいな-$"
gUnknown_8418BC0:: @ 0x8418BC0
- .string "ゆうやけを みると\nウチに かえりたく ならない?$"
+ .string "ゆうやけを みると\n"
+ .string "ウチに かえりたく ならない?$"
gUnknown_8418BDA:: @ 0x8418BDA
- .string "みどりの しばで ねころがると\nきもちいいよね-$"
+ .string "みどりの しばで ねころがると\n"
+ .string "きもちいいよね-$"
gUnknown_8418BF3:: @ 0x8418BF3
- .string "ひみつきち って いいよね!\nなんか わくわく してこない?$"
+ .string "ひみつきち って いいよね!\n"
+ .string "なんか わくわく してこない?$"
gUnknown_8418C12:: @ 0x8418C12
.string "ポケモン リ-グ$"
@@ -2311,7 +2459,11 @@ gUnknown_8418C6F:: @ 0x8418C6F
.string "もう これいじょう たべない みたい‥$"
gUnknown_8418C83:: @ 8418C83
- .string "Save failed.\nChecking the backup memory‥\nPlease wait.\n“Time required:\nabout 1 minute”$"
+ .string "Save failed.\n"
+ .string "Checking the backup memory‥\n"
+ .string "Please wait.\n"
+ .string "“Time required:\n"
+ .string "about 1 minute”$"
gUnknown_8418CD9:: @ 8418CD9
.string "The backup memory is damaged or\n"
@@ -2321,16 +2473,22 @@ gUnknown_8418CD9:: @ 8418CD9
.string "“Please press the A Button.”$"
gUnknown_8418D70:: @ 8418D70
- .string "{COLOR RED}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”$"
+ .string "{COLOR RED}“このまま ぼうけんをつづけることは できません\n"
+ .string "タイトルに もどります”$"
gUnknown_8418D99:: @ 0x8418D99
- .string "けんさが しゅうりょうしました!\nもういちど レポ-トを かきこみます\nしばらくおまちください$"
+ .string "けんさが しゅうりょうしました!\n"
+ .string "もういちど レポ-トを かきこみます\n"
+ .string "しばらくおまちください$"
gUnknown_8418DC9:: @ 0x8418DC9
- .string "レポ-トの かきこみは しゅうりょうしました\n{COLOR RED}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”$"
+ .string "レポ-トの かきこみは しゅうりょうしました\n"
+ .string "{COLOR RED}“このまま ぼうけんをつづけることは できません\n"
+ .string "タイトルに もどります”$"
gUnknown_8418E09:: @ 8418E09
- .string "Save completed.\n“Please press the A Button.”$"
+ .string "Save completed.\n"
+ .string "“Please press the A Button.”$"
gUnknown_8418E36:: @ 0x8418E36
.string "れんらくせん$"
@@ -2590,34 +2748,49 @@ gUnknown_84199AB:: @ 84199AB
.string "{UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}).$"
gUnknown_84199F4:: @ 84199F4
- .string "{UNKNOWN_F7 0x00} nature. Apparently met in\na fateful encounter シhatched:\n{UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}ス.$"
+ .string "{UNKNOWN_F7 0x00} nature. Apparently met in\n"
+ .string "a fateful encounter シhatched:\n"
+ .string "{UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}ス.$"
gUnknown_8419A3D:: @ 0x8419A3D
- .string "An odd POKéMON EGG found by the\nDAY-CARE couple.$"
+ .string "An odd POKéMON EGG found by the\n"
+ .string "DAY-CARE couple.$"
gUnknown_8419A6E:: @ 0x8419A6E
- .string "An odd POKéMON EGG obtained from\nthe traveling man.$"
+ .string "An odd POKéMON EGG obtained from\n"
+ .string "the traveling man.$"
gUnknown_8419AA2:: @ 0x8419AA2
- .string "A wondrously peculiar POKéMON EGG\nobtained at a nice place.$"
+ .string "A wondrously peculiar POKéMON EGG\n"
+ .string "obtained at a nice place.$"
gUnknown_8419ADE:: @ 0x8419ADE
- .string "An odd POKéMON EGG obtained from\nan old woman at the SPA.$"
+ .string "An odd POKéMON EGG obtained from\n"
+ .string "an old woman at the SPA.$"
gUnknown_8419B18:: @ 0x8419B18
- .string "A peculiar POKéMON EGG obtained\nin a trade.$"
+ .string "A peculiar POKéMON EGG obtained\n"
+ .string "in a trade.$"
gUnknown_8419B44:: @ 0x8419B44
- .string "It looks like this\nEGG will take a\nlong time to hatch.$"
+ .string "It looks like this\n"
+ .string "EGG will take a\n"
+ .string "long time to hatch.$"
gUnknown_8419B7B:: @ 0x8419B7B
- .string "What will hatch\nfrom this? It will\ntake some time.$"
+ .string "What will hatch\n"
+ .string "from this? It will\n"
+ .string "take some time.$"
gUnknown_8419BAE:: @ 0x8419BAE
- .string "It occasionally\nmoves. It should\nhatch soon.$"
+ .string "It occasionally\n"
+ .string "moves. It should\n"
+ .string "hatch soon.$"
gUnknown_8419BDB:: @ 0x8419BDB
- .string "It's making sounds.\nIt's almost ready\nto hatch!$"
+ .string "It's making sounds.\n"
+ .string "It's almost ready\n"
+ .string "to hatch!$"
gUnknown_8419C0B:: @ 8419C0B
.string "a trade$"
@@ -2665,7 +2838,8 @@ gUnknown_8419CA9:: @ 8419CA9
.string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}DELETE$"
gUnknown_8419CB9:: @ 8419CB9
- .string "HM moves can't be\nforgotten now.$"
+ .string "HM moves can't be\n"
+ .string "forgotten now.$"
gUnknown_8419CDA:: @ 8419CDA
.string "NAME: $"
@@ -2722,7 +2896,8 @@ gUnknown_8419D7D:: @ 8419D7D
.string "BERRY CRUSH$"
gUnknown_8419D89:: @ 8419D89
- .string "Waiting for the other TRAINER to\nfinish reading your TRAINER CARD.$"
+ .string "Waiting for the other TRAINER to\n"
+ .string "finish reading your TRAINER CARD.$"
gUnknown_8419DCC:: @ 8419DCC
.string "OPTION$"
@@ -2794,7 +2969,8 @@ gUnknown_8419E57:: @ 8419E57
.string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_DPAD_LEFT_RIGHT}SWITCH {KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$"
gUnknown_8419E72:: @ 0x8419E72
- .string "RTCを リセットします\nAで けってい Bで キャンセル$"
+ .string "RTCを リセットします\n"
+ .string "Aで けってい Bで キャンセル$"
gUnknown_8419E90:: @ 0x8419E90
.string "げんざいの ゲ-ムない じかん$"
@@ -2806,65 +2982,71 @@ gUnknown_8419EB0:: @ 0x8419EB0
.string "じかんを さいせってい してください$"
gUnknown_8419EC3:: @ 0x8419EC3
- .string "じかんを さいせってい しました!\nレポ-トを かいています おまちください$"
+ .string "じかんを さいせってい しました!\n"
+ .string "レポ-トを かいています おまちください$"
gUnknown_8419EEA:: @ 0x8419EEA
.string "レポ-トを かきこみました!$"
gUnknown_8419EF9:: @ 0x8419EF9
- .string "レポ-トの かきこみに\nしっぱい しました‥$"
+ .string "レポ-トの かきこみに\n"
+ .string "しっぱい しました‥$"
gUnknown_8419F10:: @ 0x8419F10
- .string "レポ-トが ないので\nじかんの せっていは できません!$"
+ .string "レポ-トが ないので\n"
+ .string "じかんの せっていは できません!$"
gUnknown_8419F2D:: @ 0x8419F2D
- .string "ゲ-ムない じかんの しゅうせい システムが\nつかえる ように なりました!$"
+ .string "ゲ-ムない じかんの しゅうせい システムが\n"
+ .string "つかえる ように なりました!$"
-gUnknown_8419F54:: @ 8419F54
+gText_SavingDontTurnOffThePower2:: @ 8419F54
.string "SAVING…\n"
.string "DON'T TURN OFF THE POWER.$"
// Start menu option descriptions
-gUnknown_8419F76:: @ 8419F76 // Pokedex
+gStartMenuDesc_Pokedex:: @ 8419F76 // Pokedex
.string "A device that records POKéMON secrets\n"
.string "upon meeting or catching them.$"
-gUnknown_8419FBB:: @ 8419FBB // Pokemon
+gStartMenuDesc_Pokemon:: @ 8419FBB // Pokemon
.string "Check and organize POKéMON that are\n"
.string "traveling with you in your party.$"
-gUnknown_841A001:: @ 841A001 // Bag
+gStartMenuDesc_Bag:: @ 841A001 // Bag
.string "Equipped with pockets for storing items\n"
.string "you bought, received, or found.$"
-gUnknown_841A049:: @ 841A049 // {PLAYER}
+gStartMenuDesc_Player:: @ 841A049 // {PLAYER}
.string "Check your money and other game data.$"
-gUnknown_841A06F:: @ 841A06F // Save
+gStartMenuDesc_Save:: @ 841A06F // Save
.string "Save your game with a complete record\n"
.string "of your progress to take a break.$"
-gUnknown_841A0B7:: @ 841A0B7 // Options
+gStartMenuDesc_Option:: @ 841A0B7 // Options
.string "Adjust various game settings such as text\n"
.string "speed, game rules, etc.$"
-gUnknown_841A0F9:: @ 841A0F9 // Quit
+gStartMenuDesc_Exit:: @ 841A0F9 // Quit
.string "Close this MENU window.$"
-gUnknown_841A111:: @ 841A111 // Retire
+gStartMenuDesc_Retire:: @ 841A111 // Retire
.string "Retire from the SAFARI GAME and return to\n"
.string "the registration counter.$"
.include "data/text/quest_log.inc"
gUnknown_841B285:: @ 841B285
- .string " was used on\n$"
+ .string " was used on\n"
+ .string "$"
gUnknown_841B293:: @ 841B293
.string ".$"
gUnknown_841B295:: @ 841B295
- .string "'s level rose to\n$"
+ .string "'s level rose to\n"
+ .string "$"
gUnknown_841B2A7:: @ 841B2A7
.string ".$"
@@ -2900,22 +3082,28 @@ gUnknown_841B2F1:: @ 841B2F1
.string "2, and ‥ ‥ ‥ $"
gUnknown_841B2FF:: @ 0x841B2FF
- .string "Poof!\p$"
+ .string "Poof!\p"
+ .string "$"
gUnknown_841B306:: @ 841B306
- .string "{UNKNOWN_F7 0x00} forgot\n{UNKNOWN_F7 0x01}.\p$"
+ .string "{UNKNOWN_F7 0x00} forgot\n"
+ .string "{UNKNOWN_F7 0x01}.\p"
+ .string "$"
gUnknown_841B315:: @ 841B315
- .string "And‥\p$"
+ .string "And‥\p"
+ .string "$"
gUnknown_841B31B:: @ 841B31B
- .string "Machine set!\p$"
+ .string "Machine set!\p"
+ .string "$"
gUnknown_841B329:: @ 841B329
.string "Huh?$"
gUnknown_841B32E:: @ 841B32E
- .string "{UNKNOWN_F7 0x00} learned\n{UNKNOWN_F7 0x01}!$"
+ .string "{UNKNOWN_F7 0x00} learned\n"
+ .string "{UNKNOWN_F7 0x01}!$"
gUnknown_841B33D:: @ 0x841B33D
.string "UPPER$"
@@ -2963,22 +3151,27 @@ gUnknown_841B3E9:: @ 0x841B3E9
.string "Exiting the chat‥$"
gUnknown_841B3FB:: @ 0x841B3FB
- .string "The LEADER, {UNKNOWN_F7 0x00}, has\nleft, ending the chat.$"
+ .string "The LEADER, {UNKNOWN_F7 0x00}, has\n"
+ .string "left, ending the chat.$"
gUnknown_841B426:: @ 0x841B426
- .string "The registered text has been changed.\nIs it okay to save the game?$"
+ .string "The registered text has been changed.\n"
+ .string "Is it okay to save the game?$"
gUnknown_841B469:: @ 0x841B469
- .string "There is already a saved file.\nIs it okay to overwrite it?$"
+ .string "There is already a saved file.\n"
+ .string "Is it okay to overwrite it?$"
gUnknown_841B4A4:: @ 0x841B4A4
- .string "SAVING‥\nDON'T TURN OFF THE POWER.$"
+ .string "SAVING‥\n"
+ .string "DON'T TURN OFF THE POWER.$"
gUnknown_841B4C6:: @ 0x841B4C6
.string "{UNKNOWN_F7 0x00} saved the game.$"
gUnknown_841B4D9:: @ 0x841B4D9
- .string "If the LEADER leaves, the chat\nwill end. Is that okay?$"
+ .string "If the LEADER leaves, the chat\n"
+ .string "will end. Is that okay?$"
gUnknown_841B510:: @ 841B510
.string "HELLO$"
@@ -3011,16 +3204,25 @@ gUnknown_841B54B:: @ 841B54B
.string "BYE-BYE!$"
gUnknown_841B554:: @ 841B554
- .string "{PLAYER} scurried to a POKéMON CENTER,\nprotecting the exhausted and fainted\nPOKéMON from further harm‥\p$"
+ .string "{PLAYER} scurried to a POKéMON CENTER,\n"
+ .string "protecting the exhausted and fainted\n"
+ .string "POKéMON from further harm‥\p"
+ .string "$"
gUnknown_841B5B6:: @ 841B5B6
- .string "{PLAYER} scurried back home, protecting\nthe exhausted and fainted POKéMON from\nfurther harm‥\p$"
+ .string "{PLAYER} scurried back home, protecting\n"
+ .string "the exhausted and fainted POKéMON from\n"
+ .string "further harm‥\p"
+ .string "$"
gUnknown_841B60E:: @ 841B60E
.string "PLAYER: {UNKNOWN_F7 0x00}$"
gUnknown_841B619:: @ 841B619
- .string "This document is issued in\nrecognition of your magnificent\nachievement - the completion of\nthe {UNKNOWN_F7 0x01} POKéDEX.$"
+ .string "This document is issued in\n"
+ .string "recognition of your magnificent\n"
+ .string "achievement - the completion of\n"
+ .string "the {UNKNOWN_F7 0x01} POKéDEX.$"
gUnknown_841B684:: @ 841B684
.string "GAME FREAK$"
@@ -3035,7 +3237,8 @@ gUnknown_841B69E:: @ 841B69E
.string "Clear all save data areas?$"
gUnknown_841B6B9:: @ 841B6B9
- .string "Clearing data‥\nPlease wait.$"
+ .string "Clearing data‥\n"
+ .string "Please wait.$"
gText_Player:: @ 841B6D5
.string "PLAYER$"
@@ -3065,10 +3268,12 @@ gText_HatchedFromEgg:: @ 841B6FD
.string "{STR_VAR_1} hatched from the EGG!$"
gText_NickHatchPrompt:: @ 841B716
- .string "Would you like to nickname the newly\nhatched {STR_VAR_1}?$"
+ .string "Would you like to nickname the newly\n"
+ .string "hatched {STR_VAR_1}?$"
gString_OutOfCoins:: @ 841B747
- .string "You've run out of COINS.\nGame over!$"
+ .string "You've run out of COINS.\n"
+ .string "Game over!$"
gString_QuitPlaying:: @ 841B76B
.string "Quit playing?$"
@@ -3321,347 +3526,677 @@ gUnknown_841D18D:: @ 841D18D
.align 2
gString_PokemonFireRed_Staff:: @ 841D198
- .string "Pokémon FireRed Version\nStaff$"
+ .string "Pokémon FireRed Version\n"
+ .string "Staff$"
.align 2
gString_PokemonLeafGreen_Staff:: @ 0x841D1B8
- .string "Pokémon LeafGreen Version\nStaff$"
+ .string "Pokémon LeafGreen Version\n"
+ .string "Staff$"
.align 2
gCreditsString_Director:: @ 0x841D1D8
- .string "\n\nDirector\n\n\n\n$"
+ .string "\n"
+ .string "\nDirector\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Junichi_Masuda:: @ 0x841D1E8
- .string "\n\n\nJunichi Masuda\n\n\n$"
+ .string "\n"
+ .string "\n\n"
+ .string "Junichi Masuda\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Art_Director_Battle_Director:: @ 0x841D200
- .string "\nArt Director\n\nBattle Director\n\n\n$"
+ .string "\n"
+ .string "Art Director\n"
+ .string "\nBattle Director\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Ken_Sugimori_Shigeki_Morimoto:: @ 0x841D224
- .string "\n\nKen Sugimori\n\nShigeki Morimoto\n\n$"
+ .string "\n"
+ .string "\nKen Sugimori\n"
+ .string "\nShigeki Morimoto\n"
+ .string "\n$"
.align 2
gCreditsString_Program_Leader_Planning_Leader_Graphic_Design_Leader:: @ 0x841D248
- .string "Program Leader\n\nPlanning Leader\n\nGraphic Design Leader\n\n$"
+ .string "Program Leader\n"
+ .string "\nPlanning Leader\n"
+ .string "\nGraphic Design Leader\n"
+ .string "\n$"
.align 2
gCreditsString_Tetsuya_Watanabe_Koji_Nishino_Takao_Unno:: @ 0x841D284
- .string "\nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$"
+ .string "\n"
+ .string "Tetsuya Watanabe\n"
+ .string "\nKoji Nishino\n"
+ .string "\nTakao Unno\n"
+ .string "$"
.align 2
gCreditsString_Programmers:: @ 0x841D2B4
- .string "Programmers\n\n\n\n\n$"
+ .string "Programmers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Hiroyuki_Nakamura_Masao_Taya_Satoshi_Nohara_Miyuki_Iwasawa_Daisuke_Goto:: @ 0x841D2C8
- .string "\nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$"
+ .string "\n"
+ .string "Hiroyuki Nakamura\n"
+ .string "Masao Taya\n"
+ .string "Satoshi Nohara\n"
+ .string "Miyuki Iwasawa\n"
+ .string "Daisuke Goto\n"
+ .string "$"
.align 2
gCreditsString_System_Programmers:: @ 0x841D314
- .string "System Programmers\n\n\n\n\n\n$"
+ .string "System Programmers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Tetsuya_Watanabe_Akito_Mori_Hisashi_Sogabe_Sousuke_Tamada:: @ 0x841D330
- .string "\nTetsuya Watanabe\nAkito Mori\nHisashi Sogabe\nSousuke Tamada\n\n$"
+ .string "\n"
+ .string "Tetsuya Watanabe\n"
+ .string "Akito Mori\n"
+ .string "Hisashi Sogabe\n"
+ .string "Sousuke Tamada\n"
+ .string "\n$"
.align 2
gCreditsString_Graphic_Designers:: @ 0x841D370
- .string "Graphic Designers\n\n\n\n\n\n$"
+ .string "Graphic Designers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Takao_Unno_Asuka_Iwashita_Kanako_Eo_Hiroki_Fuchino:: @ 0x841D388
- .string "\nTakao Unno\nAsuka Iwashita\nKanako Eo\nHiroki Fuchino\n\n$"
+ .string "\n"
+ .string "Takao Unno\n"
+ .string "Asuka Iwashita\n"
+ .string "Kanako Eo\n"
+ .string "Hiroki Fuchino\n"
+ .string "\n$"
.align 2
gCreditsString_Graphic_Designers_2:: @ 0x841D3C0
- .string "\nGraphic Designers\n\n\n\n\n$"
+ .string "\n"
+ .string "Graphic Designers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Ken_Sugimori_Hironobu_Yoshida:: @ 0x841D3D8
- .string "\n\nKen Sugimori\nHironobu Yoshida\n\n\n$"
+ .string "\n"
+ .string "\nKen Sugimori\n"
+ .string "Hironobu Yoshida\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Music_Composition:: @ 0x841D3FC
- .string "\nMusic Composition\n\n\n\n\n$"
+ .string "\n"
+ .string "Music Composition\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Go_Ichinose_Junichi_Masuda:: @ 0x841D414
- .string "\n\nGo Ichinose\nJunichi Masuda\n\n\n$"
+ .string "\n"
+ .string "\nGo Ichinose\n"
+ .string "Junichi Masuda\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Sound_Effects:: @ 0x841D434
- .string "\n\nSound Effects\n\n\n\n$"
+ .string "\n"
+ .string "\nSound Effects\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Go_Ichinose:: @ 0x841D448
- .string "\n\n\nGo Ichinose\n\n\n$"
+ .string "\n"
+ .string "\n\n"
+ .string "Go Ichinose\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Game_Designers:: @ 0x841D45C
- .string "\nGame Designers\n\n\n\n\n$"
+ .string "\n"
+ .string "Game Designers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Junichi_Masuda_Koji_Nishino_Tetsuji_Ohta:: @ 0x841D474
- .string "\n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$"
+ .string "\n"
+ .string "\nJunichi Masuda\n"
+ .string "Koji Nishino\n"
+ .string "Tetsuji Ohta\n"
+ .string "\n$"
.align 2
gCreditsString_Game_Designers_2:: @ 0x841D4A4
- .string "\nGame Designers\n\n\n\n\n$"
+ .string "\n"
+ .string "Game Designers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Hitomi_Sato_Shigeru_Ohmori_Tadashi_Takahashi:: @ 0x841D4BC
- .string "\n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$"
+ .string "\n"
+ .string "\nHitomi Sato\n"
+ .string "Shigeru Ohmori\n"
+ .string "Tadashi Takahashi\n"
+ .string "\n$"
.align 2
gCreditsString_Game_Scenario:: @ 0x841D4F0
- .string "\nGame Scenario\n\n\n\n\n$"
+ .string "\n"
+ .string "Game Scenario\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Hitomi_Sato_Satoshi_Tajiri:: @ 0x841D504
- .string "\n\nHitomi Sato\nSatoshi Tajiri\n\n\n$"
+ .string "\n"
+ .string "\nHitomi Sato\n"
+ .string "Satoshi Tajiri\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Script_Designer_Map_Designer:: @ 0x841D524
- .string "\nScript Designer\n\nMap Designer\n\n\n$"
+ .string "\n"
+ .string "Script Designer\n"
+ .string "\nMap Designer\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Satoshi_Nohara_Shigeru_Ohmori:: @ 0x841D548
- .string "\n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$"
+ .string "\n"
+ .string "\nSatoshi Nohara\n"
+ .string "\nShigeru Ohmori\n"
+ .string "\n$"
.align 2
gCreditsString_Parametric_Designers:: @ 0x841D56C
- .string "\nParametric Designers\n\n\n\n\n$"
+ .string "\n"
+ .string "Parametric Designers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Koji_Nishino_Tetsuji_Ohta_Shigeki_Morimoto:: @ 0x841D588
- .string "\n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$"
+ .string "\n"
+ .string "\nKoji Nishino\n"
+ .string "Tetsuji Ohta\n"
+ .string "Shigeki Morimoto\n"
+ .string "\n$"
.align 2
gCreditsString_POKeDEX_Text:: @ 0x841D5B8
- .string "\n\nPOKéDEX Text\n\n\n\n$"
+ .string "\n"
+ .string "\nPOKéDEX Text\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Kenji_Matsushima:: @ 0x841D5CC
- .string "\n\n\nKenji Matsushima\n\n\n$"
+ .string "\n"
+ .string "\n\n"
+ .string "Kenji Matsushima\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_POKeMON_Designers:: @ 0x841D5E4
- .string "POKéMON Designers\n\n\n\n\n\n$"
+ .string "POKéMON Designers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Ken_Sugimori_Motofumi_Fujiwara_Shigeki_Morimoto_Hironobu_Yoshida:: @ 0x841D5FC
- .string "\nKen Sugimori\nMotofumi Fujiwara\nShigeki Morimoto\nHironobu Yoshida\n\n$"
+ .string "\n"
+ .string "Ken Sugimori\n"
+ .string "Motofumi Fujiwara\n"
+ .string "Shigeki Morimoto\n"
+ .string "Hironobu Yoshida\n"
+ .string "\n$"
.align 2
gCreditsString_POKeMON_Designers_2:: @ 0x841D640
- .string "POKéMON Designers\n\n\n\n\n\n$"
+ .string "POKéMON Designers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Satoshi_Ohta_Asuka_Iwashita_Takao_Unno_Kanako_Eo_Aimi_Tomita:: @ 0x841D658
- .string "\nSatoshi Ohta\nAsuka Iwashita\nTakao Unno\nKanako Eo\nAimi Tomita\n$"
+ .string "\n"
+ .string "Satoshi Ohta\n"
+ .string "Asuka Iwashita\n"
+ .string "Takao Unno\n"
+ .string "Kanako Eo\n"
+ .string "Aimi Tomita\n"
+ .string "$"
.align 2
gCreditsString_POKeMON_Designers_3:: @ 0x841D698
- .string "POKéMON Designers\n\n\n\n\n\n$"
+ .string "POKéMON Designers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Atsuko_Nishida_Muneo_Saito_Rena_Yoshikawa_Jun_Okutani:: @ 0x841D6B0
- .string "\nAtsuko Nishida\nMuneo Saito\nRena Yoshikawa\nJun Okutani\n\n$"
+ .string "\n"
+ .string "Atsuko Nishida\n"
+ .string "Muneo Saito\n"
+ .string "Rena Yoshikawa\n"
+ .string "Jun Okutani\n"
+ .string "\n$"
.align 2
gCreditsString_Supporting_Programmers:: @ 0x841D6EC
- .string "Supporting Programmers\n\n\n\n$"
+ .string "Supporting Programmers\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Teruyuki_Yoshioka_Takao_Nakano_Satoshi_Mitsuhara_Daisuke_Hoshino:: @ 0x841D708
- .string "\nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$"
+ .string "\n"
+ .string "Teruyuki Yoshioka\n"
+ .string "Takao Nakano\n"
+ .string "\nSatoshi Mitsuhara\n"
+ .string "Daisuke Hoshino\n"
+ .string "$"
.align 2
gCreditsString_NCL_Product_Testing:: @ 0x841D74C
- .string "\n\nNCL Product Testing\n\n\n\n$"
+ .string "\n"
+ .string "\nNCL Product Testing\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_NCL_Super_Mario_Club:: @ 0x841D768
- .string "\n\n\nNCL Super Mario Club\n\n\n$"
+ .string "\n"
+ .string "\n\n"
+ .string "NCL Super Mario Club\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Special_Thanks:: @ 0x841D784
- .string "Special Thanks\n\n\n\n\n\n$"
+ .string "Special Thanks\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Hiro_Nakamura_Hiroyuki_Uesugi_Teruki_Murakawa_Kazuya_Suyama:: @ 0x841D79C
- .string "\nHiro Nakamura\nHiroyuki Uesugi\nTeruki Murakawa\n\nKazuya Suyama\n$"
+ .string "\n"
+ .string "Hiro Nakamura\n"
+ .string "Hiroyuki Uesugi\n"
+ .string "Teruki Murakawa\n"
+ .string "\nKazuya Suyama\n"
+ .string "$"
.align 2
gCreditsString_Special_Thanks_2:: @ 0x841D7DC
- .string "Special Thanks\n\n\n\n\n\n$"
+ .string "Special Thanks\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Kenji_Tominaga_Kenjiro_Ito_Tomotaka_Komura_Michiko_Takizawa:: @ 0x841D7F4
- .string "\nKenji Tominaga\n\nKenjiro Ito\nTomotaka Komura\nMichiko Takizawa\n$"
+ .string "\n"
+ .string "Kenji Tominaga\n"
+ .string "\nKenjiro Ito\n"
+ .string "Tomotaka Komura\n"
+ .string "Michiko Takizawa\n"
+ .string "$"
.align 2
gCreditsString_Special_Thanks_3:: @ 0x841D834
- .string "Special Thanks\n\n\n\n\n\n$"
+ .string "Special Thanks\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Makiko_Takada_Mikiko_Ohashi_Shusaku_Egami_Takanao_Kondo_Rui_Kawaguchi:: @ 0x841D84C
- .string "\nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$"
+ .string "\n"
+ .string "Makiko Takada\n"
+ .string "Mikiko Ohashi\n"
+ .string "Shusaku Egami\n"
+ .string "Takanao Kondo\n"
+ .string "Rui Kawaguchi\n"
+ .string "$"
.align 2
gCreditsString_Braille_Code_Check:: @ 0x841D894
- .string "\n\nBraille Code Check\n\n\n\n$"
+ .string "\n"
+ .string "\nBraille Code Check\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Japan_Braille_Library:: @ 0x841D8B0
- .string "\n\n\nJapan Braille Library\n\n\n$"
+ .string "\n"
+ .string "\n\n"
+ .string "Japan Braille Library\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Information_Supervisors:: @ 0x841D8CC
- .string "Information Supervisors\n\n\n\n\n\n$"
+ .string "Information Supervisors\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Hiroki_Enomoto_Kazuyuki_Terada_Yuri_Sakurai_Yumi_Funasaka_Naoko_Yanase:: @ 0x841D8EC
- .string "\nHiroki Enomoto\nKazuyuki Terada\nYuri Sakurai\nYumi Funasaka\nNaoko Yanase\n$"
+ .string "\n"
+ .string "Hiroki Enomoto\n"
+ .string "Kazuyuki Terada\n"
+ .string "Yuri Sakurai\n"
+ .string "Yumi Funasaka\n"
+ .string "Naoko Yanase\n"
+ .string "$"
.align 2
gCreditsString_Coordinators:: @ 0x841D938
- .string "Coordinators\n\n\n\n\n\n$"
+ .string "Coordinators\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Azusa_Tajima_Akira_Kinashi_Kazuki_Yoshihara_Retsuji_Nomoto:: @ 0x841D94C
- .string "\nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$"
+ .string "\n"
+ .string "Azusa Tajima\n"
+ .string "Akira Kinashi\n"
+ .string "Kazuki Yoshihara\n"
+ .string "\nRetsuji Nomoto\n"
+ .string "$"
.align 2
gCreditsString_Task_Managers:: @ 0x841D98C
- .string "\nTask Managers\n\n\n\n\n$"
+ .string "\n"
+ .string "Task Managers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Hitoshi_Yamagami_Gakuji_Nomoto:: @ 0x841D9A0
- .string "\n\nHitoshi Yamagami\nGakuji Nomoto\n\n\n$"
+ .string "\n"
+ .string "\nHitoshi Yamagami\n"
+ .string "Gakuji Nomoto\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Producers:: @ 0x841D9C4
- .string "\nProducers\n\n\n\n\n$"
+ .string "\n"
+ .string "Producers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Hiroyuki_Jinnai_Takehiro_Izushi_Hiroaki_Tsuru:: @ 0x841D9D4
- .string "\n\nHiroyuki Jinnai\nTakehiro Izushi\nHiroaki Tsuru\n\n$"
+ .string "\n"
+ .string "\nHiroyuki Jinnai\n"
+ .string "Takehiro Izushi\n"
+ .string "Hiroaki Tsuru\n"
+ .string "\n$"
.align 2
gCreditsString_Executive_Director:: @ 0x841DA08
- .string "\n\nExecutive Director\n\n\n\n$"
+ .string "\n"
+ .string "\nExecutive Director\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Satoshi_Tajiri:: @ 0x841DA24
- .string "\n\n\nSatoshi Tajiri\n\n\n$"
+ .string "\n"
+ .string "\n\n"
+ .string "Satoshi Tajiri\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Executive_Producer:: @ 0x841DA3C
- .string "\n\nExecutive Producer\n\n\n\n$"
+ .string "\n"
+ .string "\nExecutive Producer\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Satoru_Iwata:: @ 0x841DA58
- .string "\n\n\nSatoru Iwata\n\n\n$"
+ .string "\n"
+ .string "\n\n"
+ .string "Satoru Iwata\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Executive_Producer_2:: @ 0x841DA6C
- .string "\n\nExecutive Producer\n\n\n\n$"
+ .string "\n"
+ .string "\nExecutive Producer\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Tsunekaz_Ishihara:: @ 0x841DA88
- .string "\n\n\nTsunekaz Ishihara\n\n\n$"
+ .string "\n"
+ .string "\n\n"
+ .string "Tsunekaz Ishihara\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_English_Version_Coordinators:: @ 0x841DAA0
- .string "\nEnglish Version Coordinators\n\n\n\n\n$"
+ .string "\n"
+ .string "English Version Coordinators\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Hiro_Nakamura_Seth_McMahill:: @ 0x841DAC4
- .string "\n\nHiro Nakamura\nSeth McMahill\n\n\n$"
+ .string "\n"
+ .string "\nHiro Nakamura\n"
+ .string "Seth McMahill\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Translator_Text_Editor:: @ 0x841DAE8
- .string "\nTranslator\n\nText Editor\n\n\n$"
+ .string "\n"
+ .string "Translator\n"
+ .string "\nText Editor\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Nob_Ogasawara_Teresa_Lillygren:: @ 0x841DB04
- .string "\n\nNob Ogasawara\n\nTeresa Lillygren\n\n$"
+ .string "\n"
+ .string "\nNob Ogasawara\n"
+ .string "\nTeresa Lillygren\n"
+ .string "\n$"
.align 2
gCreditsString_Programmers_2:: @ 0x841DB28
- .string "Programmers\n\n\n\n\n\n$"
+ .string "Programmers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Yuichiro_Ito_Akira_Kinashi:: @ 0x841DB3C
- .string "\nTeruki Murakawa\nSouichi Yamamoto\nYuichiro Ito\nAkira Kinashi\n\n$"
+ .string "\n"
+ .string "Teruki Murakawa\n"
+ .string "Souichi Yamamoto\n"
+ .string "Yuichiro Ito\n"
+ .string "Akira Kinashi\n"
+ .string "\n$"
.align 2
gCreditsString_Environment_Tool_Programmers:: @ 0x841DB7C
- .string "\nEnvironment を Tool Programmers\n\n\n\n\n$"
+ .string "\n"
+ .string "Environment を Tool Programmers\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Kimiko_Nakamichi:: @ 0x841DBA4
- .string "\n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$"
+ .string "\n"
+ .string "\nTeruki Murakawa\n"
+ .string "Souichi Yamamoto\n"
+ .string "Kimiko Nakamichi\n"
+ .string "\n$"
.align 2
gCreditsString_NOA_Product_Testing:: @ 0x841DBDC
- .string "NOA Product Testing\n\n\n\n\n\n$"
+ .string "NOA Product Testing\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Thomas_Hertzog_Kathy_Huguenard_Mika_Kurosawa:: @ 0x841DBF8
- .string "\nThomas Hertzog\nKathy Huguenard\nMika Kurosawa\n\n\n$"
+ .string "\n"
+ .string "Thomas Hertzog\n"
+ .string "Kathy Huguenard\n"
+ .string "Mika Kurosawa\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_Braille_Code_Check_2:: @ 0x841DC2C
- .string "Braille Code Check\n\n\n\n\n\n$"
+ .string "Braille Code Check\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_National_Federation_of_the_Blind_Patricia_A_Maurer_Japan_Braille_Library_European_Blind_Union:: @ 0x841DC48
- .string "\nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$"
+ .string "\n"
+ .string "National Federation\n"
+ .string "{CLEAR_TO 0x13}of the Blind\n"
+ .string "Patricia A. Maurer\n"
+ .string "Japan Braille Library\n"
+ .string "European Blind Union\n"
+ .string "$"
.align 2
gCreditsString_Braille_Code_Check_3:: @ 0x841DCAC
- .string "\nBraille Code Check\n\n\n\n\n$"
+ .string "\n"
+ .string "Braille Code Check\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_National_Information_Library_Service_Margaret_Campion:: @ 0x841DCC8
- .string "\n\nNational Information Library\n{CLEAR_TO 0x2D}Service\nMargaret Campion\n\n$"
+ .string "\n"
+ .string "\nNational Information Library\n"
+ .string "{CLEAR_TO 0x2D}Service\n"
+ .string "Margaret Campion\n"
+ .string "\n$"
.align 2
gCreditsString_Special_Thanks_4:: @ 0x841DD08
- .string "Special Thanks\n\n\n\n\n\n$"
+ .string "Special Thanks\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Takehiro_Izushi_Motoyasu_Tojima_Hitoshi_Yamagami_Hiroyuki_Uesugi:: @ 0x841DD20
- .string "\nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$"
+ .string "\n"
+ .string "Takehiro Izushi\n"
+ .string "Motoyasu Tojima\n"
+ .string "Hitoshi Yamagami\n"
+ .string "Hiroyuki Uesugi\n"
+ .string "\n$"
.align 2
gCreditsString_Special_Thanks_5:: @ 0x841DD64
- .string "Special Thanks\n\n\n\n\n\n$"
+ .string "Special Thanks\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Nicola_Pratt_Barlow_Shellie_Dow_Anthony_Howitt_Naoko_Saeki_Kyoko_Onishi:: @ 0x841DD7C
- .string "\nNicola Pratt-Barlow\nShellie Dow\nAnthony Howitt\nNaoko Saeki\nKyoko Onishi\n$"
+ .string "\n"
+ .string "Nicola Pratt-Barlow\n"
+ .string "Shellie Dow\n"
+ .string "Anthony Howitt\n"
+ .string "Naoko Saeki\n"
+ .string "Kyoko Onishi\n"
+ .string "$"
.align 2
gCreditsString_Braille_Code_Check_4:: @ 0x841DDC8
- .string "\nBraille Code Check\n\n\n\n\n$"
+ .string "\n"
+ .string "Braille Code Check\n"
+ .string "\n\n"
+ .string "\n\n"
+ .string "$"
.align 2
gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Greg_Moran:: @ 0x841DDE4
- .string "\n\nThe Royal New Zealand\nFoundation of the Blind\nGreg Moran\n\n$"
+ .string "\n"
+ .string "\nThe Royal New Zealand\n"
+ .string "Foundation of the Blind\n"
+ .string "Greg Moran\n"
+ .string "\n$"
.align 2
gCreditsString_Graphic_Designer:: @ 0x841DE24
- .string "\n\nGraphic Designer\n\n\n\n$"
+ .string "\n"
+ .string "\nGraphic Designer\n"
+ .string "\n\n"
+ .string "\n$"
.align 2
gCreditsString_Akira_Kinashi:: @ 0x841DE3C
- .string "\n\n\nAkira Kinashi\n\n\n$"
+ .string "\n"
+ .string "\n\n"
+ .string "Akira Kinashi\n"
+ .string "\n\n"
+ .string "$"
gJPText_MysteryGift:: @ 841DE50
.string "$"
@@ -3679,7 +4214,8 @@ gUnknown_841DE54:: @ 841DE54
.string "$"
gUnknown_841DE55:: @ 841DE55
- .string "カ-ドeリ-ダ-{EXTRA_PLUS}の ‘つうしん'を\nえらんで Aボタンを おしてください$"
+ .string "カ-ドeリ-ダ-{EXTRA_PLUS}の ‘つうしん'を\n"
+ .string "えらんで Aボタンを おしてください$"
gUnknown_841DE7C:: @ 841DE7C
.string "$"
@@ -3688,7 +4224,8 @@ gUnknown_841DE7D:: @ 841DE7D
.string "$"
gUnknown_841DE7E:: @ 841DE7E
- .string "カ-ドeリ-ダ-{EXTRA_PLUS}と\nつうしん できません$"
+ .string "カ-ドeリ-ダ-{EXTRA_PLUS}と\n"
+ .string "つうしん できません$"
gUnknown_841DE95:: @ 841DE95
.string "$"
@@ -3935,7 +4472,8 @@ gUnknown_841E2EC:: @ 841E2EC
.string "{KEYGFX_B_BUTTON}CANCEL$"
gUnknown_841E2F5:: @ 841E2F5
- .string "{COLOR BLUE}{SHADOW YELLOW} たいせんの くみあわせ\n{COLOR RED}{SHADOW GREEN}じぶんの ばしょをきめて ください$"
+ .string "{COLOR BLUE}{SHADOW YELLOW} たいせんの くみあわせ\n"
+ .string "{COLOR RED}{SHADOW GREEN}じぶんの ばしょをきめて ください$"
gUnknown_841E322:: @ 841E322
.string "{EXTRA_ID}$"
@@ -3965,31 +4503,44 @@ gUnknown_841E3FB:: @ 841E3FB
.string "Teach {STR_VAR_2}?$"
gUnknown_841E405:: @ 841E405
- .string "{STR_VAR_1} learned\n{STR_VAR_2}.$"
+ .string "{STR_VAR_1} learned\n"
+ .string "{STR_VAR_2}.$"
gUnknown_841E414:: @ 841E414
- .string "{STR_VAR_1} is trying to learn\n{STR_VAR_2}.\pBut {STR_VAR_1} can't learn more\nthan four moves.\pDelete an older move to make\nroom for {STR_VAR_2}?$"
+ .string "{STR_VAR_1} is trying to learn\n"
+ .string "{STR_VAR_2}.\p"
+ .string "But {STR_VAR_1} can't learn more\n"
+ .string "than four moves.\p"
+ .string "Delete an older move to make\n"
+ .string "room for {STR_VAR_2}?$"
gUnknown_841E481:: @ 841E481
.string "Stop learning {STR_VAR_2}?$"
gUnknown_841E493:: @ 841E493
- .string "{PAUSE 0x20}1, {PAUSE 0x0F}2, and {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_KON}Poof!\p$"
+ .string "{PAUSE 0x20}1, {PAUSE 0x0F}2, and {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_KON}Poof!\p"
+ .string "$"
gUnknown_841E4C0:: @ 841E4C0
- .string "{STR_VAR_1} forgot {STR_VAR_3}.\pAnd‥\p{STR_VAR_1}\nlearned {STR_VAR_2}.$"
+ .string "{STR_VAR_1} forgot {STR_VAR_3}.\p"
+ .string "And‥\p"
+ .string "{STR_VAR_1}\n"
+ .string "learned {STR_VAR_2}.$"
gUnknown_841E4E2:: @ 841E4E2
- .string "Give up trying to teach a new\nmove to {STR_VAR_1}?$"
+ .string "Give up trying to teach a new\n"
+ .string "move to {STR_VAR_1}?$"
gUnknown_841E50C:: @ 841E50C
- .string "Which move should be forgotten?\p$"
+ .string "Which move should be forgotten?\p"
+ .string "$"
gUnknown_841E52D:: @ 0x841E52D
.string "----------$"
gUnknown_841E538:: @ 841E538
- .string "Communication standby‥\nAwaiting another player to choose.$"
+ .string "Communication standby‥\n"
+ .string "Awaiting another player to choose.$"
gUnknown_841E572:: @ 841E572
.string "The battle was refused.{PAUSE 0x3C}$"
diff --git a/data/tileset_anims.s b/data/tileset_anims.s
index 9881cdd3f..5f2320fd3 100644
--- a/data/tileset_anims.s
+++ b/data/tileset_anims.s
@@ -1,5 +1,8 @@
.section .rodata
.align 2
+gUnknown_83A73E0:: @ 83A73E0
+ .incbin "baserom.gba", 0x3A73E0, 0x280
+
gUnknown_83A7660:: @ 83A7660
.incbin "baserom.gba", 0x3A7660, 0x2FF4
diff --git a/graphics/battle_anims/sprites/unk_83E6C18.pal b/graphics/battle_anims/sprites/unk_83E6C18.pal
new file mode 100644
index 000000000..5e8dc6abe
--- /dev/null
+++ b/graphics/battle_anims/sprites/unk_83E6C18.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 148 139
+148 148 255
+189 197 255
+222 222 255
+238 238 255
+238 246 255
+255 255 255
+238 246 255
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+205 213 255
+205 205 255
+230 230 255
diff --git a/include/battle.h b/include/battle.h
index 1f7fc5bf6..754e92997 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -820,9 +820,6 @@ extern struct BattleSpriteData *gBattleSpritesDataPtr;
extern u8 *gLinkBattleSendBuffer;
extern u8 *gLinkBattleRecvBuffer;
-extern u8 *gUnknown_0202305C;
-extern u8 *gUnknown_02023060;
-
// Move this somewhere else
#include "sprite.h"
@@ -836,7 +833,7 @@ struct MonSpritesGfx
u8 field_F4[0x80];
u8 *barFontGfx;
void *field_178;
- void *field_17C;
+ u16 *field_17C;
};
extern u16 gBattle_BG0_X;
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 3536e89f4..feaa8816b 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -1,19 +1,9 @@
#ifndef GUARD_BATTLE_ANIM_H
#define GUARD_BATTLE_ANIM_H
-#include "global.h"
-
-#ifndef BATTLE_BANKS_COUNT
-#define BATTLE_BANKS_COUNT 4
-#endif // BATTLE_BANKS_COUNT
-
-enum
-{
- ANIM_BANK_ATTACKER,
- ANIM_BANK_TARGET,
- ANIM_BANK_ATK_PARTNER,
- ANIM_BANK_DEF_PARTNER,
-};
+#include "battle.h"
+#include "constants/battle_anim.h"
+#include "task.h"
enum
{
@@ -60,11 +50,39 @@ extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
extern u8 gAnimMoveTurn;
extern u8 gBattleAnimAttacker;
extern u8 gBattleAnimTarget;
-extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
-extern u8 gUnknown_02038440;
extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
extern u16 gAnimMovePower;
extern s32 gAnimMoveDmg;
+extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT];
+extern u8 gUnknown_2037F24;
+
+extern struct OamData gOamData_83ACA40;
+extern struct OamData gOamData_83AC9C8;
+extern struct OamData gOamData_83ACA38;
+extern struct OamData gOamData_83AC9D0;
+extern struct OamData gOamData_83AC9F8;
+extern struct OamData gOamData_83AC9D8;
+extern struct OamData gOamData_83ACB58;
+extern struct OamData gOamData_83ACAF8;
+extern struct OamData gOamData_83ACB60;
+extern struct OamData gOamData_83ACA30;
+extern struct OamData gOamData_83ACA98;
+extern struct OamData gOamData_83ACA90;
+extern struct OamData gOamData_83ACAF0;
+extern struct OamData gOamData_83ACB10;
+extern struct OamData gOamData_83ACB18;
+extern struct OamData gOamData_83ACB38;
+extern struct OamData gOamData_83ACA18;
+extern struct OamData gOamData_83ACB20;
+extern struct OamData gOamData_83ACB50;
+extern struct OamData gOamData_83ACAB8;
+extern struct OamData gOamData_83ACA00;
+extern struct OamData gOamData_83ACBC0;
+extern struct OamData gOamData_83ACB00;
+extern struct OamData gOamData_83AC9E0;
+extern struct OamData gOamData_83ACA20;
+extern struct OamData gOamData_83ACA80;
+extern struct OamData gOamData_83ACAA0;
void ClearBattleAnimationVars(void);
void DoMoveAnim(u16 move);
@@ -80,25 +98,22 @@ s8 BattleAnimAdjustPanning2(s8 pan);
s16 sub_80A52EC(s16 a);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
bool8 IsBattlerSpriteVisible(u8 battlerId);
+s16 KeepPanInRange(s16 a, s32 oldPan);
+void sub_80730C0(u16, const u16 *, s32, u8);
-// battle_anim_80FE840.s
+// battle_intro.c
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
-void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 bankIdentity, u8 arg4, void *arg5, u16 *arg6, u16 arg7);
-void HandleIntroSlide(u8 terrainId);
-
-// battle_anim_80A5C6C.s
-void sub_80A6EEC(struct Sprite *sprite);
-void sub_80A68D4(struct Sprite *sprite);
-void sub_80A6F3C(struct Sprite *sprite);
-void sub_80A8278(void);
-void sub_80A6B30(struct BattleAnimBgData *);
-void sub_80A6B90(struct BattleAnimBgData *, u32 arg1);
-u8 sub_80A82E4(u8 bank);
-bool8 AnimateBallThrow(struct Sprite *sprite);
-
-// battle_anim_special
+s32 GetAnimBgAttribute(u8 bgId, u8 attributeId);
+void HandleIntroSlide(u8 terrain);
+void sub_80BC41C(u8 taskId);
+void sub_80BCEF4(s32 bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset);
+
+// battle_anim_special.s
void sub_80F1720(u8 battler, struct Pokemon *mon);
+// battle_anim_effects_1.s
+void AnimMoveTwisterParticle(struct Sprite *sprite);
+
enum
{
BATTLER_COORD_X,
@@ -119,24 +134,24 @@ enum
BATTLER_COORD_ATTR_RAW_BOTTOM,
};
-u8 GetBattlerSpriteCoord(u8 bank, u8 attributeId);
+u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId);
-bool8 IsBankSpritePresent(u8 bank);
+bool8 IsBankSpritePresent(u8 battlerId);
void sub_80A6C68(u8 arg0);
-u8 GetAnimBankSpriteId(u8 wantedBank);
+u8 GetAnimBattlerSpriteId(u8 wantedBank);
bool8 IsDoubleBattle(void);
u8 sub_80A6D94(void);
u8 sub_80A8364(u8);
-void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
+void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite *));
void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite);
-u8 GetBattlerSpriteDefault_Y(u8 bank);
-u8 sub_80A82E4(u8 bank);
-u8 GetSubstituteSpriteDefault_Y(u8 bank);
+u8 GetBattlerSpriteDefault_Y(u8 battlerId);
+u8 sub_80A82E4(u8 battlerId);
+u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
u8 GetGhostSpriteDefault_Y(u8 battlerId);
-void sub_8072E48(u8 battlerId, u8);
+void MoveBattlerSpriteToBG(u8 battlerId, u8);
void sub_8073128(u8);
-// battle_anim_80A9C70.s
+// battle_anim_status_effects.s
#define STAT_ANIM_PLUS1 15
#define STAT_ANIM_PLUS2 39
#define STAT_ANIM_MINUS1 22
@@ -147,25 +162,114 @@ void sub_8073128(u8);
#define STAT_ANIM_MULTIPLE_MINUS2 58
void LaunchStatusAnimation(u8 bank, u8 statusAnimId);
-// battle_anim_8170478.s
+// battle_anim_special.s
u8 ItemIdToBallId(u16 itemId);
u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
-u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId);
+u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
-// battle_anim_mons.s
-void TranslateMonSpriteLinear(struct Sprite * sprite);
-void TranslateMonSpriteLinearFixedPoint(struct Sprite * sprite);
-void InitSpriteDataForLinearTranslation(struct Sprite * sprite);
-void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 b);
-void ResetSpriteRotScale(u8 spriteId);
-void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
-bool8 IsContest(void);
-void sub_80759DC(u8 spriteId);
+// battle_anim_mons.c
+u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType);
+u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType);
+u8 GetBattlerSpriteDefault_Y(u8 battlerId);
+u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
+u8 GetGhostSpriteDefault_Y(u8 battlerId);
+u8 GetBattlerYCoordWithElevation(u8 battlerId);
+u8 GetAnimBattlerSpriteId(u8 animBattler);
+void StoreSpriteCallbackInData6(struct Sprite *sprite, SpriteCallback callback);
+void TranslateSpriteInCircleOverDuration(struct Sprite *sprite);
+void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite);
+void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite);
+void WaitAnimForDuration(struct Sprite *sprite);
+void sub_8074C80(struct Sprite *sprite);
+void TranslateSpriteLinear(struct Sprite *sprite);
+void TranslateSpriteLinearFixedPoint(struct Sprite *sprite);
+void TranslateMonSpriteLinear(struct Sprite *sprite);
+void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite);
+void TranslateSpriteLinearAndFlicker(struct Sprite *sprite);
+void DestroySpriteAndMatrix(struct Sprite *sprite);
+void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite);
+void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite);
+void DestroyAnimSpriteAndDisableBlend(struct Sprite *sprite);
+void DestroyAnimVisualTaskAndDisableBlend(u8 taskId);
+void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite);
+void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset);
+void InitAnimArcTranslation(struct Sprite *sprite);
+bool8 TranslateAnimHorizontalArc(struct Sprite *sprite);
+bool8 TranslateAnimVerticalArc(struct Sprite *sprite);
+void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite);
+void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets);
+void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets);
+u8 GetBattlerSide(u8 battlerId);
+u8 GetBattlerPosition(u8 battlerId);
+u8 GetBattlerAtPosition(u8 position);
bool8 IsBattlerSpritePresent(u8 battlerId);
-u8 GetBattlerSpriteSubpriority(u8 battlerId);
+bool8 IsDoubleBattle(void);
+void sub_80752A0(struct BattleAnimBgData *animBgData);
+void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1);
+void sub_8075300(struct BattleAnimBgData *animBgData, u8 unused);
+void sub_8075358(u32 bgId);
+void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset);
+void InitAnimBgTilemapBuffer(u32 bgId, const void *src);
+void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src);
+u8 sub_8075454(void);
+void sub_8075458(bool8 arg0);
+void sub_8075490(struct Sprite *sprite);
+void InitSpriteDataForLinearTranslation(struct Sprite *sprite);
+void InitAnimLinearTranslation(struct Sprite *sprite);
void StartAnimLinearTranslation(struct Sprite *sprite);
void sub_80755B8(struct Sprite *sprite);
-u8 sub_80768B0(u8 battlerId);
+bool8 AnimTranslateLinear(struct Sprite *sprite);
+void sub_807563C(struct Sprite *sprite);
+void sub_8075678(struct Sprite *sprite);
+void sub_80756A4(struct Sprite *sprite);
+void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite);
+bool8 AnimFastTranslateLinear(struct Sprite *sprite);
+void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite);
+void sub_8075830(struct Sprite *sprite);
+void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
+void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode);
+void ResetSpriteRotScale(u8 spriteId);
+void SetBattlerSpriteYOffsetFromRotation(u8 spriteId);
+void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation);
+void sub_8075AD8(struct Sprite *sprite);
+u16 ArcTan2Neg(s16 a, s16 b);
+void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor);
+u32 sub_8075BE8(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7);
+u32 sub_8075CB8(u8 a1, u8 a2, u8 a3, u8 a4);
+u8 sub_8075D80(u8 a1);
+void sub_8075D9C(struct Sprite *sprite);
+void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
+void sub_8075E80(struct Sprite *sprite);
+void sub_8075F0C(struct Sprite *sprite);
+s16 CloneBattlerSpriteWithBlend(u8 animBattler);
+void obj_delete_but_dont_free_vram(struct Sprite *sprite);
+void sub_8076048(u8 taskId);
+void AnimTask_BlendMonInAndOut(u8 task);
+void sub_8076288(u8 taskId);
+void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds);
+bool8 RunAffineAnimFromTaskData(struct Task *task);
+void SetBattlerSpriteYOffsetFromYScale(u8 spriteId);
+void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId);
+void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr);
+void *LoadPointerFromVars(s16 lo, s16 hi);
+void sub_80765D4(struct Task *task, u8 spriteId, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7);
+u8 sub_8076640(struct Task *task);
+void AnimTask_GetFrustrationPowerLevel(u8 taskId);
+void sub_80767F0(void);
+u8 GetBattlerSpriteSubpriority(u8 battlerId);
+u8 GetBattlerSpriteBGPriority(u8 battlerId);
+u8 GetBattlerSpriteBGPriorityRank(u8 battlerId);
+u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10);
+void DestroySpriteAndFreeResources_(struct Sprite *sprite);
+s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr);
+void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y);
+u8 sub_8076E34(s32 battlerId, u8 spriteId, s32 species);
+void sub_8076ED8(struct Sprite *sprite);
+void sub_8076F58(struct Sprite *sprite);
+void sub_8076FD0(struct Sprite *sprite);
+void sub_8077030(u8 taskId);
+void sub_807729C(struct Sprite *sprite);
+void sub_8077350(struct Sprite *sprite);
// battle_anim_mon_movement.c
void AnimTask_ShakeMon(u8 taskId);
@@ -182,4 +286,102 @@ void sub_8099980(u8 taskId);
void sub_8099A78(u8 taskId);
void sub_8099BD4(u8 taskId);
+// normal.c
+extern const struct SpriteTemplate gUnknown_83E7C98;
+
+u32 UnpackSelectedBattleAnimPalettes(s16 selector);
+void sub_80B9BDC(u8 taskId);
+void sub_80B9CE4(u8 taskId);
+void sub_80B9E58(u8 taskId);
+void sub_80B9F6C(u8 taskId);
+void sub_80BA0E8(u8 taskId);
+void sub_80BA47C(u8 taskId);
+
+// ground.c
+void sub_80B8E94(u8 taskId);
+void sub_80B90EC(u8 taskId);
+void sub_80B94B4(u8 taskId);
+void AnimTask_IsPowerOver99(u8 taskId);
+void sub_80B9800(u8 taskId);
+
+// dragon.c
+void sub_80B75E0(u8 taskId);
+
+// ghost.c
+void sub_80B54E8(u8 taskId);
+void sub_80B58AC(u8 taskId);
+void sub_80B5AAC(u8 taskId);
+void sub_80B6020(u8 taskId);
+void sub_80B63B4(u8 taskId);
+void sub_80B68C8(u8 taskId);
+void sub_80B6BBC(u8 taskId);
+
+// rock.c
+void AnimTask_LoadSandstormBackground(u8 taskId);
+void sub_80B4BD0(u8 taskId);
+void AnimTask_GetSeismicTossDamageLevel(u8 taskId);
+void sub_80B5188(u8 taskId);
+void sub_80B51EC(u8 taskId);
+
+// psychic.c
+void sub_80B3418(u8 taskId);
+void sub_80B3480(u8 taskId);
+void sub_80B3584(u8 taskId);
+void sub_80B3834(u8 taskId);
+void sub_80B3A58(u8 taskId);
+void sub_80B3C78(u8 taskId);
+
+// dark.c
+void sub_80B78E0(u8 taskId);
+void sub_80B79DC(u8 taskId);
+void sub_80B7A80(u8 taskId);
+void sub_80B7DA4(u8 taskId);
+void sub_80B8070(u8 taskId);
+void sub_80B85B8(u8 taskId);
+void sub_80B8664(u8 taskId);
+void AnimTask_MetallicShine(u8 taskId);
+void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId);
+void sub_80B8B38(u8 taskId);
+
+// flying.c
+void sub_80B194C(u8 taskId);
+void sub_80B1D3C(struct Sprite *sprite);
+void sub_80B2868(u8 taskId);
+
+// water.s
+extern const union AnimCmd *const gUnknown_83E5958[];
+
+// fire.s
+extern const union AnimCmd *const gUnknown_83E5D48[];
+
+// battle_anim_utility_funcs.c
+void sub_80BA7F8(u8 taskId);
+void sub_80BA83C(u8 taskId);
+void AnimTask_SetCamouflageBlend(u8 taskId);
+void AnimTask_BlendParticle(u8 taskId);
+void sub_80BAB38(u8 taskId);
+void sub_80BAB98(u8 taskId);
+void sub_80BACEC(u8 taskId);
+void sub_80BB088(u8 taskId);
+void sub_80BB660(u8 taskId);
+void sub_80BB7DC(u8 taskId);
+void sub_80BB82C(u8 taskId);
+void AnimTask_GetAttackerSide(u8 taskId);
+void AnimTask_GetTargetSide(u8 taskId);
+void AnimTask_GetTargetIsAttackerPartner(u8 taskId);
+void sub_80BB9B0(u8 taskId);
+void sub_80BBA20(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette);
+void AnimTask_GetBattleTerrain(u8 taskId);
+void sub_80BBE10(u8 taskId);
+void sub_80BBE3C(u8 taskId);
+void sub_80BBE6C(u8 taskId);
+void sub_80BBF08(u8 taskId);
+void sub_80BBFA4(u8 taskId);
+void AnimTask_IsContest(u8 taskId);
+void sub_80BC060(u8 taskId);
+void AnimTask_IsTargetSameSide(u8 taskId);
+void sub_80BC0DC(u8 taskId);
+void sub_80BC0FC(u8 taskId);
+void sub_80BC12C(u8 taskId);
+
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_main.h b/include/battle_main.h
index 27aae9970..757ee3468 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -49,7 +49,7 @@ void CB2_QuitRecordedBattle(void);
void sub_8038528(struct Sprite* sprite);
void sub_8038A04(void); // unused
void VBlankCB_Battle(void);
-void sub_8038B74(struct Sprite *sprite);
+void sub_801182C(struct Sprite *sprite);
void sub_8011A1C(void);
u32 sub_80391E0(u8 arrayId, u8 caseId);
u32 sub_80397C4(u32 setId, u32 tableId);
@@ -67,7 +67,7 @@ void EndBounceEffect(u8 bank, bool8 b);
void sub_8039E44(struct Sprite *sprite);
void sub_8039E60(struct Sprite *sprite);
void sub_8039E84(struct Sprite *sprite);
-void sub_8039E9C(struct Sprite *sprite);
+void sub_801236C(struct Sprite *sprite);
void BeginBattleIntro(void);
void SwitchInClearSetData(void);
void FaintClearSetData(void);
diff --git a/include/bg.h b/include/bg.h
index 0f20bf1fd..8d7367871 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -59,13 +59,13 @@ enum BgTileAllocMode
struct BgTemplate
{
- u32 bg:2; // 0x1, 0x2 -> 0x3
- u32 charBaseIndex:2; // 0x4, 0x8 -> 0xC
- u32 mapBaseIndex:5; // 0x10, 0x20, 0x40, 0x80, 0x100 -> 0x1F0
- u32 screenSize:2; // 0x200, 0x400 -> 0x600
- u32 paletteMode:1; // 0x800
- u32 priority:2; // 0x1000, 0x2000 > 0x3000
- u32 baseTile:10;
+ u16 bg:2; // 0x1, 0x2 -> 0x3
+ u16 charBaseIndex:2; // 0x4, 0x8 -> 0xC
+ u16 mapBaseIndex:5; // 0x10, 0x20, 0x40, 0x80, 0x100 -> 0x1F0
+ u16 screenSize:2; // 0x200, 0x400 -> 0x600
+ u16 paletteMode:1; // 0x800
+ u16 priority:2; // 0x1000, 0x2000 > 0x3000
+ u16 baseTile:10;
};
void ResetBgs(void);
diff --git a/include/data.h b/include/data.h
index 6479237f2..d3bc77799 100644
--- a/include/data.h
+++ b/include/data.h
@@ -31,6 +31,8 @@ extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
+extern const struct MonCoords gMonFrontPicCoords[];
+extern const struct MonCoords gMonBackPicCoords[];
extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow;
extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 41a7a7bf2..99b453c85 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1158,4 +1158,14 @@ extern const u8 EventScript_ItemfinderDigUpUnderfootItem[];
// new_game
extern const u8 EventScript_ResetAllMapFlags[];
+// player_pc
+extern const u8 EventScript_PalletTown_PlayersHouse_2F_ShutDownPC[];
+
+// start_menu
+extern const u8 gText_WouldYouLikeToSaveTheGame[];
+extern const u8 gText_AlreadySaveFile_WouldLikeToOverwrite[];
+extern const u8 gText_SavingDontTurnOffThePower[];
+extern const u8 gText_PlayerSavedTheGame[];
+extern const u8 gText_DifferentGameFile[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index fe67fec30..22849a37d 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -15,6 +15,7 @@ void sub_807DF64(void);
void sub_807DC18(void);
void FieldCallback_ReturnToEventScript2(void);
void sub_807DC00(void);
+void FadeTransition_FadeInOnReturnToStartMenu(void);
bool32 sub_807E418(void);
diff --git a/include/field_weather.h b/include/field_weather.h
index 78d2f2412..96c1ce7cb 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -13,7 +13,7 @@ void DoCurrentWeather(void);
void SetSav1WeatherFromCurrMapHeader(void);
void sub_807B0C4(u16 *, u16 *, u32);
void PlayRainStoppingSoundEffect(void);
-bool8 sub_807AA70(void);
+bool8 field_weather_is_fade_finished(void);
void SetWeatherScreenFadeOut(void);
void sub_807B070(void);
u8 GetCurrentWeather(void);
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 7bedb1d94..dde05b7ed 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -26,4 +26,6 @@ u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8
const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection);
struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y);
+void save_serialize_map(void);
+
#endif //GUARD_FIELDMAP_H
diff --git a/include/gba/defines.h b/include/gba/defines.h
index c0eec12b1..65561f10a 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -77,8 +77,6 @@
#define RGB_BLACK RGB(0, 0, 0)
#define RGB_WHITE RGB(31, 31, 31)
-#define WIN_RANGE(a, b) (((a) << 8) | (b))
-
#define NAKED __attribute__((naked))
#define UNUSED __attribute__((unused))
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 6dbe5e8ed..6d54bc5fb 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -538,6 +538,40 @@
#define BGCNT_AFF512x512 0x8000
#define BGCNT_AFF1024x1024 0xC000
+// WININ/OUT
+#define WININ_WIN0_BG0 (1 << 0)
+#define WININ_WIN0_BG1 (1 << 1)
+#define WININ_WIN0_BG2 (1 << 2)
+#define WININ_WIN0_BG3 (1 << 3)
+#define WININ_WIN0_BG_ALL (WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3)
+#define WININ_WIN0_OBJ (1 << 4)
+#define WININ_WIN0_CLR (1 << 5)
+#define WININ_WIN1_BG0 (1 << 8)
+#define WININ_WIN1_BG1 (1 << 9)
+#define WININ_WIN1_BG2 (1 << 10)
+#define WININ_WIN1_BG3 (1 << 11)
+#define WININ_WIN1_BG_ALL (WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3)
+#define WININ_WIN1_OBJ (1 << 12)
+#define WININ_WIN1_CLR (1 << 13)
+
+#define WINOUT_WIN01_BG0 (1 << 0)
+#define WINOUT_WIN01_BG1 (1 << 1)
+#define WINOUT_WIN01_BG2 (1 << 2)
+#define WINOUT_WIN01_BG3 (1 << 3)
+#define WINOUT_WIN01_BG_ALL (WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3)
+#define WINOUT_WIN01_OBJ (1 << 4)
+#define WINOUT_WIN01_CLR (1 << 5)
+#define WINOUT_WINOBJ_BG0 (1 << 8)
+#define WINOUT_WINOBJ_BG1 (1 << 9)
+#define WINOUT_WINOBJ_BG2 (1 << 10)
+#define WINOUT_WINOBJ_BG3 (1 << 11)
+#define WINOUT_WINOBJ_BG_ALL (WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG1 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3)
+#define WINOUT_WINOBJ_OBJ (1 << 12)
+#define WINOUT_WINOBJ_CLR (1 << 13)
+
+#define WIN_RANGE(a, b) (((a) << 8) | (b))
+#define WIN_RANGE2(a, b) ((b) | ((a) << 8))
+
// BLDCNT
// Bits 0-5 select layers for the 1st target
#define BLDCNT_TGT1_BG0 (1 << 0)
@@ -558,9 +592,11 @@
#define BLDCNT_TGT2_BG3 (1 << 11)
#define BLDCNT_TGT2_OBJ (1 << 12)
#define BLDCNT_TGT2_BD (1 << 13)
+#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD)
// BLDALPHA
#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))
+#define BLDALPHA_BLEND2(target1, target2) ((target1) | ((target2) << 8))
// SOUNDCNT_H
#define SOUND_CGB_MIX_QUARTER 0x0000
diff --git a/include/gba/macro.h b/include/gba/macro.h
index c0a4e481b..01bb85b7a 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -121,10 +121,31 @@
} \
}
+#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \
+{ \
+ void *_dest = (void *)dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ DmaFill##bit(dmaNum, value, _dest, (block)); \
+ _dest += (block); \
+ _size -= (block); \
+ if (_size <= (block)) \
+ { \
+ DmaFill##bit(dmaNum, value, _dest, _size); \
+ break; \
+ } \
+ } \
+}
+
#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16)
#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32)
+#define DmaFillLarge16(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 16)
+
+#define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32)
+
#define DmaClearLarge16(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 16)
#define DmaClearLarge32(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 32)
@@ -139,4 +160,14 @@
#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16)
#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32)
+#define DmaFillDefvars(dmaNum, value, dest, size, bit) \
+{ \
+ void *_dest = (void *)dest; \
+ u32 _size = size; \
+ DmaFill##bit(dmaNum, value, _dest, _size); \
+}
+
+#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16)
+#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32)
+
#endif // GUARD_GBA_MACRO_H
diff --git a/include/global.h b/include/global.h
index 35f8de01b..5ddf9a0a8 100644
--- a/include/global.h
+++ b/include/global.h
@@ -76,6 +76,18 @@ extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
+struct Coords8
+{
+ s8 x;
+ s8 y;
+};
+
+struct UCoords8
+{
+ u8 x;
+ u8 y;
+};
+
struct Coords16
{
s16 x;
@@ -88,6 +100,18 @@ struct UCoords16
u16 y;
};
+struct Coords32
+{
+ s32 x;
+ s32 y;
+};
+
+struct UCoords32
+{
+ u32 x;
+ u32 y;
+};
+
struct Time
{
/*0x00*/ s16 days;
diff --git a/include/graphics.h b/include/graphics.h
index 5e133ee01..1c0612fd1 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -961,6 +961,36 @@ extern const u8 gFile_graphics_items_icon_palettes_sapphire_palette[];
extern const u8 gFile_graphics_items_icons_return_to_field_arrow_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_return_to_field_arrow_palette[];
+// battle_anim_utility_funcs
+extern const u32 gFile_graphics_battle_anims_masks_curse_sheet[];
+extern const u32 gFile_graphics_battle_anims_masks_curse_tilemap[];
+extern const u32 gBattleStatMask_Gfx[];
+extern const u32 gBattleStatMask1_Pal[];
+extern const u32 gBattleStatMask2_Pal[];
+extern const u32 gBattleStatMask3_Pal[];
+extern const u32 gBattleStatMask4_Pal[];
+extern const u32 gBattleStatMask5_Pal[];
+extern const u32 gBattleStatMask6_Pal[];
+extern const u32 gBattleStatMask7_Pal[];
+extern const u32 gBattleStatMask8_Pal[];
+extern const u32 gBattleStatMask1_Tilemap[];
+extern const u32 gBattleStatMask2_Tilemap[];
+
+// dark
+extern const u32 gMetalShineGfx[];
+extern const u32 gMetalShinePalette[];
+extern const u32 gMetalShineTilemap[];
+
+// ghost
+extern const u32 gFile_graphics_battle_anims_backgrounds_scary_face_sheet[];
+extern const u32 gFile_graphics_battle_anims_backgrounds_scary_face_palette[];
+extern const u32 gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap[];
+
+// rock
+extern const u32 gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap[];
+extern const u32 gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet[];
+extern const u32 gBattleAnimSpritePal_FlyingDirt[];
+
// title_screen
extern const u16 gGraphics_TitleScreen_PokemonFireRedLogoPals[];
extern const u8 gGraphics_TitleScreen_PokemonFireRedLogoTiles[];
@@ -974,6 +1004,7 @@ extern const u8 gGraphics_TitleScreen_CopyrightPressStartMap[];
extern const u16 gGraphics_TitleScreen_FirePals[];
extern const u8 gGraphics_TitleScreen_BlankObjTiles[];
+// battle_gfx_sfx_util
extern const u32 gHealthboxSinglesPlayerGfx[];
extern const u32 gHealthboxSinglesOpponentGfx[];
extern const u32 gHealthboxDoublesPlayerGfx[];
@@ -983,7 +1014,6 @@ extern const u32 gBlankGfxCompressed[];
extern const u16 gBattleInterface_BallStatusBarPal[];
extern const u16 gBattleInterface_BallDisplayPal[];
extern const u32 gFile_graphics_interface_hp_numbers[];
-
extern const u32 gGhostFrontPic[];
extern const u32 gGhostPalette[];
extern const u32 gSubstituteDollGfx[];
diff --git a/include/help_system.h b/include/help_system.h
index f28c168f7..53dc45014 100644
--- a/include/help_system.h
+++ b/include/help_system.h
@@ -29,7 +29,7 @@ extern bool8 gHelpSystemEnabled;
extern u8 gUnknown_203F175;
// help_system_812B1E0
-void sub_812B1E0(u8);
+void HelpSystem_SetSomeVariable(u8);
void HelpSystem_SetSomeVariable2(u8);
bool8 sub_812B40C(void);
bool8 sub_812B45C(void);
@@ -89,5 +89,7 @@ void HelpSystem_FillPanel3(void);
void PrintListMenuItems(void);
void PlaceListMenuCursor(void);
bool8 MoveCursor(u8 by, u8 dirn);
+void HelpSystem_BackupSomeVariable(void);
+void HelpSystem_RestoreSomeVariable(void);
#endif //GUARD_HELP_SYSTEM_H
diff --git a/include/item.h b/include/item.h
index 6e0af31bb..69560a0e5 100644
--- a/include/item.h
+++ b/include/item.h
@@ -77,5 +77,6 @@ u16 GetPcItemQuantity(u16 *);
void ItemPcCompaction(void);
void RemoveItemFromPC(u16 itemId, u16 quantity);
void SortAndCompactBagPocket(struct BagPocket * pocket);
+u8 CountItemsInPC(void);
#endif // GUARD_ITEM_H
diff --git a/include/item_menu.h b/include/item_menu.h
index ceaf277a3..166906ebe 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -28,7 +28,7 @@ void sub_81AAC70(void);
void sub_8108CF0(void);
void sub_81089BC(void);
void sub_810B108(u8);
-void ReturnToBagFromKeyItem(void);
+void CB2_BagMenuFromStartMenu(void);
void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2);
void ItemMenu_StartFadeToExitCallback(u8 taskId);
void sub_8108CB4(void);
@@ -38,5 +38,6 @@ void sub_810A1F8(u8 taskId);
void sub_8107ECC(void);
void sub_8108DC8(u8 pocketId);
void sub_81089F4(u8 pocketId);
+void sub_8107DB4(u8 menuType, u8 pocket, MainCallback callback);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 518c3fc65..c76758d4e 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -41,5 +41,6 @@ u32 GetRfuRecvQueueLength(void);
void sub_80F8DC0(void);
void sub_80FBB20(void);
bool8 sub_80FA484(bool32 a0);
+void var_800D_set_xB(void);
#endif //GUARD_LINK_RFU_H
diff --git a/include/load_save.h b/include/load_save.h
index bd33f89c8..2406b5f03 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -26,5 +26,7 @@ void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey);
void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey);
void ApplyNewEncryptionKeyToHword(u16 * hword, u32 encryptionKey);
+void sav2_gender2_inplace_and_xFE(void);
+void sub_804C1C0(void);
#endif // GUARD_LOAD_SAVE_H
diff --git a/include/mailbox_pc.h b/include/mailbox_pc.h
index c2d18fc4b..6d23648b3 100644
--- a/include/mailbox_pc.h
+++ b/include/mailbox_pc.h
@@ -1,12 +1,14 @@
#ifndef GUARD_MAILBOX_PC_H
#define GUARD_MAILBOX_PC_H
+#include "player_pc.h"
+
bool8 MailboxPC_InitBuffers(u8 num);
u8 MailboxPC_GetAddWindow(u8 winIdx);
void MailboxPC_RemoveWindow(u8 winIdx);
u8 MailboxPC_GetWindowId(u8 winIdx);
-u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct);
-void MailboxPC_AddScrollIndicatorArrows(struct PlayerPC_Unk_203AAC4 * playerPcStruct);
+u8 MailboxPC_InitListMenu(struct PlayerPCItemPageStruct * playerPcStruct);
+void MailboxPC_AddScrollIndicatorArrows(struct PlayerPCItemPageStruct * playerPcStruct);
void MailboxPC_DestroyListMenuBuffer(void);
#endif //GUARD_MAILBOX_PC_H
diff --git a/include/menu.h b/include/menu.h
index 6f358d34e..b6d757f85 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -21,7 +21,7 @@ struct MenuAction
void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const u8 * color, s8 speed, const u8 * str);
void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str);
void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
-void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y);
+void Menu_PrintFormatIntlPlayerName(u8 windowId, const u8 * src, u16 x, u16 y);
void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority);
bool8 IsBlendTaskActive(void);
u8 sub_812EA78(u16 species, u32 personality, u8 a2);
diff --git a/include/new_game.h b/include/new_game.h
index ed40546ba..bf048718a 100644
--- a/include/new_game.h
+++ b/include/new_game.h
@@ -3,6 +3,8 @@
#include "global.h"
+extern bool8 gDifferentSaveFile;
+
void SetTrainerId(u32 trainerId, u8 *dst);
void CopyTrainerId(u8 *dst, u8 *src);
void NewGameInitData(void);
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index a7555c505..644e65289 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -26,7 +26,7 @@ u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed
void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress);
void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
-void sub_80F6E9C(void);
+void LoadStdWindowFrameGfx(void);
void DrawDialogueFrame(u8 windowId, bool8 transfer);
void DrawStdWindowFrame(u8 windowId, bool8 copyNow);
void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
@@ -41,12 +41,12 @@ void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callb
void DisplayYesNoMenuDefaultYes(void);
void DisplayYesNoMenuDefaultNo(void);
u8 GetTextSpeedSetting(void);
-u8 sub_80F78E0(u8 height);
+u8 CreateStartMenuWindow(u8 height);
u8 GetStartMenuWindowId(void);
void RemoveStartMenuWindow(void);
u16 GetStdWindowBaseTileNum(void);
-void sub_80F7974(const u8 * text);
-void sub_80F7998(void);
+void DrawHelpMessageWindowWithText(const u8 * text);
+void DestroyHelpMessageWindow_(void);
void sub_80F79A4(void);
void SetDefaultFontsPointer(void);
diff --git a/include/option_menu.h b/include/option_menu.h
new file mode 100644
index 000000000..21a508973
--- /dev/null
+++ b/include/option_menu.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_OPTION_MENU_H
+#define GUARD_OPTION_MENU_H
+
+void CB2_OptionsMenuFromStartMenu(void);
+
+#endif //GUARD_OPTION_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index 77cacff94..38c213707 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -18,11 +18,6 @@ struct LinkPlayerMapObject
u8 mode;
};
-struct UCoords32
-{
- u32 x, y;
-};
-
struct CreditsOverworldCmd
{
s16 unk_0;
@@ -43,6 +38,7 @@ extern MainCallback gFieldCallback;
extern struct WarpData gUnknown_2031DBC;
extern u8 gUnknown_2031DE0;
+extern u8 gUnknown_300502C;
void IncrementGameStat(u8 index);
@@ -113,7 +109,6 @@ u32 sub_8054C04(void);
extern u8 gDisableMapMusicChangeOnMapLoad;
extern u8 gUnknown_2036E28;
-extern void (*gFieldCallback)(void);
extern bool8 (* gFieldCallback2)(void);
void SetLastHealLocationWarp(u8 healLocaionId);
@@ -144,4 +139,6 @@ bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd
bool32 sub_8058318(void);
+void CB2_ReturnToStartMenu(void);
+
#endif //GUARD_OVERWORLD_H
diff --git a/include/party_menu.h b/include/party_menu.h
index ad9d6eda6..ca8ac1754 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -83,5 +83,7 @@ void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex);
bool8 IsMultiBattle(void);
void sub_8126EDC(void);
void sub_812256C(u8 *partyCount, u8 *icons, u8 side);
+void PartyMenuInit_FromPlayerPc(void);
+void CB2_PartyMenuFromStartMenu(void);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/player_pc.h b/include/player_pc.h
index 06ab0cb0f..ecaf023e5 100644
--- a/include/player_pc.h
+++ b/include/player_pc.h
@@ -6,14 +6,16 @@
// Exported type declarations
-struct PlayerPC_Unk_203AAC4
+struct PlayerPCItemPageStruct
{
u16 selectedRow;
u16 scrollOffset;
- u8 unk_4;
- u8 unk_5;
- u8 filler_6[4];
- u8 unk_A;
+ u8 pageItems;
+ u8 count;
+ u8 filler_6[3];
+ u8 unk_9;
+ u8 scrollIndicatorId;
+ u8 filler_B[5];
};
// Exported RAM declarations
diff --git a/include/pokedex_screen.h b/include/pokedex_screen.h
new file mode 100644
index 000000000..8855a47fc
--- /dev/null
+++ b/include/pokedex_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_POKEDEX_SCREEN_H
+#define GUARD_POKEDEX_SCREEN_H
+
+void CB2_OpenPokedexFromStartMenu(void);
+
+#endif //GUARD_POKEDEX_SCREEN_H
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index a81961390..db45bba32 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -18,5 +18,6 @@ void sub_8097070(struct Sprite *);
u16 GetUnownLetterByPersonality(u32 personality);
void sub_809718C(void);
u8 CreateMonIcon(u16 species, void (*callback)(void), s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra);
+u8 UpdateMonIconFrame(struct Sprite *sprite);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/quest_log.h b/include/quest_log.h
index 8a2816c74..d3ccbe3da 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -28,14 +28,18 @@ u8 sub_8112CAC(void);
bool8 sub_81119D4(void (*func)(void));
void sub_8111F38(u16, u16);
void sub_8111134(void);
-void sub_8112EDC(u8 a0);
-u8 sub_8112EB4(void);
-void sub_8113018(const u8 * text, u8 mode);
+void DestroyHelpMessageWindow(u8 a0);
+u8 CreateHelpMessageWindow(void);
+void PrintTextOnHelpMessageWindow(const u8 * text, u8 mode);
void MapNamePopupWindowIdSetDummy(void);
void sub_8111CF0(void);
void sub_811089C(void);
void sub_8113044(void);
void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId);
+void sub_8112450(void);
+void sub_8112364(void);
+u8 sub_8112CAC(void);
+void sub_81138F8(void);
extern u8 gUnknown_203ADFA;
diff --git a/include/rom6.h b/include/rom6.h
deleted file mode 100644
index 753c07305..000000000
--- a/include/rom6.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef GUARD_ROM6_H
-#define GUARD_ROM6_H
-
-#include "global.h"
-
-void sub_81357FC(u8, void(void));
-u8 GetLeadMonIndex(void);
-u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y);
-void sub_813BADC(bool8);
-bool8 sub_813B9C0(void);
-void UpdateMirageRnd(u16 days);
-void UpdateBirchState(u16 days);
-void UpdateFrontierManiac(u16 days);
-void UpdateFrontierGambler(u16 days);
-void SetShoalItemFlag(u16 days);
-
-#endif //GUARD_ROM6_H
diff --git a/include/save.h b/include/save.h
index 7a74373c8..41d2ec666 100644
--- a/include/save.h
+++ b/include/save.h
@@ -84,7 +84,7 @@ extern u16 gSaveUnusedVar;
extern u16 gSaveFileStatus;
extern void (*gGameContinueCallback)(void);
extern struct SaveBlockChunk gRamSaveSectionLocations[0xE];
-extern u16 gUnknown_3005420;
+extern u16 gSaveSucceeded;
extern struct SaveSection gSaveDataBuffer;
diff --git a/include/save_menu_util.h b/include/save_menu_util.h
new file mode 100644
index 000000000..f2a18a777
--- /dev/null
+++ b/include/save_menu_util.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_SAVE_MENU_UTIL_H
+#define GUARD_SAVE_MENU_UTIL_H
+
+enum SaveStat
+{
+ SAVE_STAT_NAME = 0,
+ SAVE_STAT_POKEDEX,
+ SAVE_STAT_TIME,
+ SAVE_STAT_LOCATION,
+ SAVE_STAT_BADGES
+};
+
+void SaveStatToString(u8 a0, u8 *a1, u8 a2);
+
+#endif //GUARD_SAVE_MENU_UTIL_H
diff --git a/include/sprite.h b/include/sprite.h
index 27e5dc852..85722311f 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -116,6 +116,7 @@ union AffineAnimCmd
struct AffineAnimFrameCmd frame;
struct AffineAnimLoopCmd loop;
struct AffineAnimJumpCmd jump;
+ struct AffineAnimEndCmdAlt end;
};
#define AFFINEANIMCMDTYPE_LOOP 0x7FFD
@@ -251,6 +252,7 @@ extern s16 gSpriteCoordOffsetX;
extern s16 gSpriteCoordOffsetY;
extern const struct SpriteTemplate gDummySpriteTemplate;
extern struct Sprite gSprites[];
+extern struct OamMatrix gOamMatrices[];
void ResetSpriteData(void);
void AnimateSprites(void);
diff --git a/include/start_menu.h b/include/start_menu.h
index c4a3ce19d..90fe7109a 100644
--- a/include/start_menu.h
+++ b/include/start_menu.h
@@ -4,7 +4,10 @@
#include "global.h"
void AppendToList(u8* list, u8* pos, u8 newEntry);
-void sub_806F1F0(u8 taskId);
-void sub_806F1D4(void);
+void Task_StartMenuHandleInput(u8 taskId);
+void SetUpReturnToStartMenu(void);
+void ShowStartMenu(void);
+void Field_AskSaveTheGame(void);
+void CB2_SetUpSaveAfterLinkBattle(void);
#endif // GUARD_START_MENU_H
diff --git a/include/strings.h b/include/strings.h
index e7d40281d..2c2756eb5 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -77,8 +77,8 @@ extern const u8 gText_Ferry[];
extern const u8 gText_SecretBase[];
extern const u8 gText_Hideout[];
extern const u8 gText_FlyToWhere[];
-extern const u8 gText_PokemonLeague[];
-extern const u8 gText_PokemonCenter[];
+extern const u8 gStartMenuText_PokemonLeague[];
+extern const u8 gStartMenuText_PokemonCenter[];
extern const u8 gText_ApostropheSBase[];
extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
@@ -90,7 +90,7 @@ extern const u8 gText_IsThisTheCorrectTime[];
extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
extern const u8 gText_EggNickname[];
-extern const u8 gText_Pokemon[];
+extern const u8 gStartMenuText_Pokemon[];
extern const u8 gText_PkmnFainted3[];
extern const u8 gOtherText_Use[];
@@ -426,4 +426,50 @@ extern const u8 gText_HaventReceivedGiftOkayToDiscard[];
extern const u8 gText_SendingWonderCard[];
extern const u8 gText_SendingWonderNews[];
+// player_pc
+extern const u8 gText_WhatWouldYouLikeToDo[];
+extern const u8 gText_TakeOutItemsFromThePC[];
+extern const u8 gText_StoreItemsInThePC[];
+extern const u8 gText_GoBackToThePreviousMenu[];
+extern const u8 gText_ItemStorage[];
+extern const u8 gText_Mailbox[];
+extern const u8 gText_TurnOff[];
+extern const u8 gText_WithdrawItem2[];
+extern const u8 gText_DepositItem2[];
+extern const u8 gOtherText_Read[];
+extern const u8 gOtherText_MoveToBag[];
+extern const u8 gOtherText_Give2[];
+extern const u8 gText_TheresNoMailHere[];
+extern const u8 gText_ThereAreNoItems[];
+extern const u8 gText_WhatWouldYouLikeToDoWithPlayersMail[];
+extern const u8 gText_MessageWillBeLost[];
+extern const u8 gText_BagIsFull[];
+extern const u8 gText_MailReturnedToBagMessageErased[];
+
+// start_menu
+extern const u8 gStartMenuText_Pokedex[];
+extern const u8 gStartMenuText_Pokemon[];
+extern const u8 gStartMenuText_Bag[];
+extern const u8 gStartMenuText_Player[];
+extern const u8 gStartMenuText_Save[];
+extern const u8 gStartMenuText_Option[];
+extern const u8 gStartMenuText_Exit[];
+extern const u8 gStartMenuText_Retire[];
+extern const u8 gUnknown_84162A9[];
+extern const u8 gStartMenuDesc_Pokedex[];
+extern const u8 gStartMenuDesc_Pokemon[];
+extern const u8 gStartMenuDesc_Bag[];
+extern const u8 gStartMenuDesc_Player[];
+extern const u8 gStartMenuDesc_Save[];
+extern const u8 gStartMenuDesc_Option[];
+extern const u8 gStartMenuDesc_Exit[];
+extern const u8 gStartMenuDesc_Retire[];
+extern const u8 gStartMenuDesc_Player[];
+extern const u8 gText_SaveError_PleaseExchangeBackupMemory[];
+extern const u8 gText_SavingDontTurnOffThePower2[];
+extern const u8 gSaveStatName_Player[];
+extern const u8 gSaveStatName_Badges[];
+extern const u8 gSaveStatName_Pokedex[];
+extern const u8 gSaveStatName_Time[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/trainer_card.h b/include/trainer_card.h
index e8531cef5..b38754988 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -40,4 +40,7 @@ struct TrainerCard
extern struct TrainerCard gTrainerCards[4];
+void InitTrainerCard(MainCallback callback);
+void InitLinkPartnerTrainerCard(u8 whoseCard, MainCallback callback);
+
#endif //GUARD_TRAINER_CARD_H
diff --git a/ld_script.txt b/ld_script.txt
index 56525bce7..814d525da 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -107,12 +107,12 @@ SECTIONS {
asm/event_data.o(.text);
src/coord_event_weather.o(.text);
asm/field_tasks.o(.text);
- asm/start_menu.o(.text);
+ src/start_menu.o(.text);
src/tileset_anims.o(.text);
src/palette.o(.text);
src/sound.o(.text);
asm/battle_anim.o(.text);
- asm/battle_anim_mons.o(.text);
+ src/battle_anim_mons.o(.text);
src/task.o(.text);
src/reshow_battle_screen.o(.text);
asm/battle_anim_status_effects.o(.text);
@@ -162,16 +162,17 @@ SECTIONS {
asm/ice.o(.text);
asm/fighting.o(.text);
asm/poison.o(.text);
- asm/flying.o(.text);
- asm/psychic.o(.text);
- asm/bug.o(.text);
- asm/rock.o(.text);
- asm/ghost.o(.text);
- asm/dragon.o(.text);
- asm/dark.o(.text);
- asm/ground.o(.text);
- asm/normal.o(.text);
- asm/battle_anim_utility_funcs.o(.text);
+ src/flying.o(.text);
+ src/psychic.o(.text);
+ src/bug.o(.text);
+ src/rock.o(.text);
+ src/ghost.o(.text);
+ src/dragon.o(.text);
+ src/dark.o(.text);
+ src/ground.o(.text);
+ src/normal.o(.text);
+ src/battle_anim_utility_funcs.o(.text);
+ src/battle_intro.o(.text);
asm/bike.o(.text);
asm/easy_chat.o(.text);
asm/mon_markings.o(.text);
@@ -201,7 +202,7 @@ SECTIONS {
src/save.o(.text);
src/mystery_event_script.o(.text);
asm/field_effect_helpers.o(.text);
- asm/battle_anim_sound_tasks.o(.text);
+ src/battle_anim_sound_tasks.o(.text);
src/battle_controller_safari.o(.text);
src/fldeff_sweetscent.o(.text);
asm/battle_anim_effects_3.o(.text);
@@ -209,7 +210,7 @@ SECTIONS {
src/fldeff_softboiled.o(.text);
asm/battle_tower.o(.text);
asm/battle_controller_oak.o(.text);
- asm/player_pc.o(.text);
+ src/player_pc.o(.text);
src/intro.o(.text);
asm/battle_anim_special.o(.text);
asm/hall_of_fame.o(.text);
@@ -408,11 +409,12 @@ SECTIONS {
src/scrcmd.o(.rodata);
src/coord_event_weather.o(.rodata);
data/field_tasks.o(.rodata);
- data/start_menu.o(.rodata);
+ src/start_menu.o(.rodata);
data/tileset_anims.o(.rodata);
src/palette.o(.rodata);
src/sound.o(.rodata);
data/battle_anim.o(.rodata);
+ src/battle_anim_mons.o(.rodata);
data/map_events.o(.rodata);
data/battle_anim_status_effects.o(.rodata);
src/title_screen.o(.rodata);
@@ -422,6 +424,18 @@ SECTIONS {
src/battle_anim_mon_movement.o(.rodata);
src/item.o(.rodata);
data/data_835B488.o(.rodata.83DF09C);
+ src/flying.o(.rodata);
+ src/psychic.o(.rodata);
+ src/bug.o(.rodata);
+ src/rock.o(.rodata);
+ src/ghost.o(.rodata);
+ src/dragon.o(.rodata);
+ src/dark.o(.rodata);
+ src/ground.o(.rodata);
+ src/normal.o(.rodata);
+ src/battle_anim_utility_funcs.o(.rodata);
+ src/battle_intro.o(.rodata);
+ data/data_835B488.o(.rodata.83E7CFC);
src/heal_location.o(.rodata);
data/data_835B488.o(.rodata.83EEC98);
src/battle_ai_script_commands.o(.rodata);
@@ -435,6 +449,7 @@ SECTIONS {
data/data_83FECCC.o(.rodata);
src/battle_controller_safari.o(.rodata);
data/data_83FECCC.o(.rodata.83FEDE4);
+ src/player_pc.o(.rodata);
src/intro.o(.rodata);
data/data_83FECCC.o(.rodata.battle_anim_special);
src/credits.o(.rodata);
diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c
index 88fbce6da..21d07246f 100644
--- a/src/battle_anim_mon_movement.c
+++ b/src/battle_anim_mon_movement.c
@@ -92,7 +92,7 @@ const struct SpriteTemplate gUnknown_83D4EB4 =
// arg 4: frame delay
void AnimTask_ShakeMon(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (spriteId == 0xFF)
DestroyAnimVisualTask(taskId);
@@ -150,7 +150,7 @@ void AnimTask_ShakeMon2(u8 taskId)
if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT)
{
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (spriteId == 0xFF)
abort = TRUE;
}
@@ -228,7 +228,7 @@ static void AnimTask_ShakeMon2Step(u8 taskId)
// arg 4: delay
void AnimTask_ShakeMonInPlace(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (spriteId == 0xFF)
DestroyAnimVisualTask(taskId);
@@ -290,7 +290,7 @@ static void AnimTask_ShakeMonInPlaceStep(u8 taskId)
// arg 4: duration
void AnimTask_ShakeAndSinkMon(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
gTasks[taskId].data[0] = spriteId;
@@ -331,7 +331,7 @@ void AnimTask_TranslateMonElliptical(u8 taskId)
{
u8 wavePeriod = 1;
u8 i;
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (gBattleAnimArgs[4] > 5)
gBattleAnimArgs[4] = 5;
for (i = 0; i < gBattleAnimArgs[4]; i++)
@@ -414,7 +414,7 @@ static void DoVerticalDip(struct Sprite * sprite)
{
u8 spriteId;
sprite->invisible = TRUE;
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = 0;
sprite->data[2] = gBattleAnimArgs[1];
@@ -581,7 +581,7 @@ void AnimTask_WindUpLunge(u8 taskId)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[5] = -gBattleAnimArgs[5];
}
- gTasks[taskId].data[0] = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ gTasks[taskId].data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
gTasks[taskId].data[1] = gBattleAnimArgs[1] * 256 / gBattleAnimArgs[3];
gTasks[taskId].data[2] = gBattleAnimArgs[2];
gTasks[taskId].data[3] = gBattleAnimArgs[3];
@@ -627,7 +627,7 @@ void sub_80995FC(u8 taskId)
{
case 0:
case 1:
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
break;
case 2:
if (!IsBattlerSpriteVisible(gBattleAnimAttacker ^ BIT_FLANK))
@@ -678,7 +678,7 @@ void AnimTask_SwayMon(u8 taskId)
u8 spriteId;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]);
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[4]);
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1];
gTasks[taskId].data[2] = gBattleAnimArgs[2];
@@ -735,7 +735,7 @@ static void AnimTask_SwayMonStep(u8 taskId)
// arg 4: sprite object mode
void AnimTask_ScaleMonAndRestore(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]);
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1];
@@ -773,7 +773,7 @@ static void AnimTask_ScaleMonAndRestoreStep(u8 taskId)
void sub_8099980(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
PrepareBattlerSpriteForRotScale(spriteId, 0);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = gBattleAnimArgs[0];
@@ -806,7 +806,7 @@ void sub_8099980(u8 taskId)
void sub_8099A78(u8 taskId)
{
- u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
PrepareBattlerSpriteForRotScale(spriteId, 0);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = gBattleAnimArgs[0];
@@ -844,7 +844,7 @@ static void sub_8099B54(u8 taskId)
gTasks[taskId].data[3] += gTasks[taskId].data[4];
SetSpriteRotScale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]);
if (gTasks[taskId].data[7])
- sub_80759DC(gTasks[taskId].data[5]);
+ SetBattlerSpriteYOffsetFromRotation(gTasks[taskId].data[5]);
if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2])
{
switch (gTasks[taskId].data[6])
@@ -888,7 +888,7 @@ void sub_8099BD4(u8 taskId)
gTasks[taskId].data[12] = 0;
gTasks[taskId].data[10] = gBattleAnimArgs[3];
gTasks[taskId].data[11] = gBattleAnimArgs[4];
- gTasks[taskId].data[7] = GetAnimBankSpriteId(1);
+ gTasks[taskId].data[7] = GetAnimBattlerSpriteId(1);
gTasks[taskId].data[8] = gSprites[gTasks[taskId].data[7]].pos2.x;
gTasks[taskId].data[9] = gSprites[gTasks[taskId].data[7]].pos2.y;
gTasks[taskId].data[0] = 0;
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
new file mode 100644
index 000000000..e871937e7
--- /dev/null
+++ b/src/battle_anim_mons.c
@@ -0,0 +1,2254 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "bg.h"
+#include "data.h"
+#include "decompress.h"
+#include "dma3.h"
+#include "gpu_regs.h"
+#include "malloc.h"
+#include "palette.h"
+#include "pokemon_icon.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "util.h"
+#include "constants/battle_anim.h"
+#include "constants/species.h"
+
+#define GET_UNOWN_LETTER(personality) (( \
+ (((personality & 0x03000000) >> 24) << 6) \
+ | (((personality & 0x00030000) >> 16) << 4) \
+ | (((personality & 0x00000300) >> 8) << 2) \
+ | (((personality & 0x00000003) >> 0) << 0) \
+) % 28)
+
+#define IS_DOUBLE_BATTLE() (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+
+static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3);
+static void sub_8075658(struct Sprite *sprite);
+static void sub_80757E8(struct Sprite *sprite);
+static bool8 sub_80758DC(void);
+static void sub_8075EF0(struct Sprite *sprite);
+static void sub_80760D0(u8 taskId);
+static void AnimTask_BlendMonInAndOutSetup(struct Task *task);
+static void AnimTask_BlendMonInAndOutStep(u8 taskId);
+static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId);
+static void sub_8077118(u8 taskId);
+static void sub_80771E4(struct Task *task, u8 taskId);
+static void sub_8077268(struct Sprite *sprite);
+static void sub_80772F4(struct Sprite *sprite);
+
+static EWRAM_DATA union AffineAnimCmd *sAnimTaskAffineAnim = NULL;
+static EWRAM_DATA u32 gUnknown_2037F2C = 0; // not used
+
+static const struct UCoords8 sBattlerCoords[][4] =
+{
+ {
+ { 72, 80 },
+ { 176, 40 },
+ { 48, 40 },
+ { 112, 80 },
+ },
+ {
+ { 32, 80 },
+ { 200, 40 },
+ { 90, 88 },
+ { 152, 32 },
+ },
+};
+
+// One entry for each of the four Castform forms.
+const struct MonCoords gCastformFrontSpriteCoords[] =
+{
+ { .size = 0x44, .y_offset = 17 }, // NORMAL
+ { .size = 0x66, .y_offset = 9 }, // SUN
+ { .size = 0x46, .y_offset = 9 }, // RAIN
+ { .size = 0x86, .y_offset = 8 }, // HAIL
+};
+
+static const u8 sCastformElevations[] =
+{
+ 13, // NORMAL
+ 14, // SUN
+ 13, // RAIN
+ 13, // HAIL
+};
+
+// Y position of the backsprite for each of the four Castform forms.
+static const u8 sCastformBackSpriteYCoords[] =
+{
+ 0, // NORMAL
+ 0, // SUN
+ 0, // RAIN
+ 0, // HAIL
+};
+
+static const struct SpriteTemplate gUnknown_83AE054[] =
+{
+ {
+ .tileTag = 0xD755,
+ .paletteTag = 0xD755,
+ .oam = &gOamData_83ACA40,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 0xD756,
+ .paletteTag = 0xD756,
+ .oam = &gOamData_83ACA40,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ }
+};
+
+static const struct SpriteSheet gUnknown_83AE084[] =
+{
+ { gMiscBlank_Gfx, 0x800, 0xD755 },
+ { gMiscBlank_Gfx, 0x800, 0xD756 },
+};
+
+u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
+{
+ u8 retVal;
+ u16 species;
+ struct BattleSpriteInfo *spriteInfo;
+
+ switch (coordType)
+ {
+ case BATTLER_COORD_X:
+ case BATTLER_COORD_X_2:
+ retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].x;
+ break;
+ case BATTLER_COORD_Y:
+ retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y;
+ break;
+ case BATTLER_COORD_Y_PIC_OFFSET:
+ case BATTLER_COORD_Y_PIC_OFFSET_DEFAULT:
+ default:
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ else
+ species = spriteInfo[battlerId].transformSpecies;
+ }
+ else
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ else
+ species = spriteInfo[battlerId].transformSpecies;
+ }
+ if (coordType == BATTLER_COORD_Y_PIC_OFFSET)
+ retVal = GetBattlerSpriteFinal_Y(battlerId, species, TRUE);
+ else
+ retVal = GetBattlerSpriteFinal_Y(battlerId, species, FALSE);
+ break;
+ }
+ return retVal;
+}
+
+static u8 GetBattlerYDelta(u8 battlerId, u16 species)
+{
+ u16 letter;
+ u32 personality;
+ struct BattleSpriteInfo *spriteInfo;
+ u8 ret;
+ u16 coordSpecies;
+
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ {
+ if (species == SPECIES_UNOWN)
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY);
+ else
+ personality = gTransformedPersonalities[battlerId];
+ letter = GET_UNOWN_LETTER(personality);
+ if (!letter)
+ coordSpecies = species;
+ else
+ coordSpecies = letter + SPECIES_UNOWN_B - 1;
+ ret = gMonBackPicCoords[coordSpecies].y_offset;
+ }
+ else if (species == SPECIES_CASTFORM)
+ {
+ ret = sCastformBackSpriteYCoords[gBattleMonForms[battlerId]];
+ }
+ else if (species > NUM_SPECIES)
+ {
+ ret = gMonBackPicCoords[0].y_offset;
+ }
+ else
+ {
+ ret = gMonBackPicCoords[species].y_offset;
+ }
+ }
+ else
+ {
+ if (species == SPECIES_UNOWN)
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY);
+ else
+ personality = gTransformedPersonalities[battlerId];
+ letter = GET_UNOWN_LETTER(personality);
+ if (!letter)
+ coordSpecies = species;
+ else
+ coordSpecies = letter + SPECIES_UNOWN_B - 1;
+ ret = gMonFrontPicCoords[coordSpecies].y_offset;
+ }
+ else if (species == SPECIES_CASTFORM)
+ {
+ ret = gCastformFrontSpriteCoords[gBattleMonForms[battlerId]].y_offset;
+ }
+ else if (species > NUM_SPECIES)
+ {
+ ret = gMonFrontPicCoords[0].y_offset;
+ }
+ else
+ {
+ ret = gMonFrontPicCoords[species].y_offset;
+ }
+ }
+ return ret;
+}
+
+static u8 GetBattlerElevation(u8 battlerId, u16 species)
+{
+ u8 ret = 0;
+
+ if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
+ {
+ if (species == SPECIES_CASTFORM)
+ ret = sCastformElevations[gBattleMonForms[battlerId]];
+ else if (species > NUM_SPECIES)
+ ret = gEnemyMonElevation[0];
+ else
+ ret = gEnemyMonElevation[species];
+ }
+ return ret;
+}
+
+static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3)
+{
+ u16 offset;
+ u8 y;
+
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ {
+ offset = GetBattlerYDelta(battlerId, species);
+ }
+ else
+ {
+ offset = GetBattlerYDelta(battlerId, species);
+ offset -= GetBattlerElevation(battlerId, species);
+ }
+ y = offset + sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y;
+ if (a3)
+ {
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ y += 8;
+ if (y > 104)
+ y = 104;
+ }
+ return y;
+}
+
+u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType)
+{
+ u16 species;
+ struct BattleSpriteInfo *spriteInfo;
+
+ if (coordType == BATTLER_COORD_Y_PIC_OFFSET || coordType == BATTLER_COORD_Y_PIC_OFFSET_DEFAULT)
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ species = gAnimBattlerSpecies[battlerId];
+ else
+ species = spriteInfo[battlerId].transformSpecies;
+ if (coordType == BATTLER_COORD_Y_PIC_OFFSET)
+ return GetBattlerSpriteFinal_Y(battlerId, species, TRUE);
+ else
+ return GetBattlerSpriteFinal_Y(battlerId, species, FALSE);
+ }
+ else
+ {
+ return GetBattlerSpriteCoord(battlerId, coordType);
+ }
+}
+
+u8 GetBattlerSpriteDefault_Y(u8 battlerId)
+{
+ return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT);
+}
+
+u8 GetSubstituteSpriteDefault_Y(u8 battlerId)
+{
+ u16 y;
+
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 16;
+ else
+ y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 17;
+ return y;
+}
+
+u8 GetGhostSpriteDefault_Y(u8 battlerId)
+{
+ if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
+ return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT);
+ else
+ return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y);
+}
+
+u8 GetBattlerYCoordWithElevation(u8 battlerId)
+{
+ u16 species;
+ u8 y;
+ struct BattleSpriteInfo *spriteInfo;
+
+ y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y);
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ else
+ species = spriteInfo[battlerId].transformSpecies;
+ }
+ else
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ else
+ species = spriteInfo[battlerId].transformSpecies;
+ }
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ y -= GetBattlerElevation(battlerId, species);
+ return y;
+}
+
+u8 GetAnimBattlerSpriteId(u8 animBattler)
+{
+ u8 *sprites;
+
+ if (animBattler == ANIM_ATTACKER)
+ {
+ if (IsBattlerSpritePresent(gBattleAnimAttacker))
+ {
+ sprites = gBattlerSpriteIds;
+ return sprites[gBattleAnimAttacker];
+ }
+ else
+ {
+ return 0xFF;
+ }
+ }
+ else if (animBattler == ANIM_TARGET)
+ {
+ if (IsBattlerSpritePresent(gBattleAnimTarget))
+ {
+ sprites = gBattlerSpriteIds;
+ return sprites[gBattleAnimTarget];
+ }
+ else
+ {
+ return 0xFF;
+ }
+ }
+ else if (animBattler == ANIM_ATK_PARTNER)
+ {
+ if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
+ return 0xFF;
+ else
+ return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)];
+ }
+ else
+ {
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)))
+ return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimTarget)];
+ else
+ return 0xFF;
+ }
+}
+
+void StoreSpriteCallbackInData6(struct Sprite *sprite, SpriteCallback callback)
+{
+ sprite->data[6] = (u32)(callback) & 0xFFFF;
+ sprite->data[7] = (u32)(callback) >> 16;
+}
+
+static void SetCallbackToStoredInData6(struct Sprite *sprite)
+{
+ u32 callback = (u16)sprite->data[6] | (sprite->data[7] << 16);
+
+ sprite->callback = (SpriteCallback)callback;
+}
+
+void TranslateSpriteInCircleOverDuration(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->data[0] += sprite->data[2];
+ if (sprite->data[0] >= 0x100)
+ sprite->data[0] -= 0x100;
+ else if (sprite->data[0] < 0)
+ sprite->data[0] += 0x100;
+ --sprite->data[3];
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+}
+
+void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ sprite->pos2.x = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
+ sprite->data[0] += sprite->data[2];
+ sprite->data[5] += sprite->data[4];
+ if (sprite->data[0] >= 0x100)
+ sprite->data[0] -= 0x100;
+ else if (sprite->data[0] < 0)
+ sprite->data[0] += 0x100;
+ --sprite->data[3];
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+}
+
+// not used
+static void sub_8074B5C(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[4], sprite->data[1]);
+ sprite->data[0] += sprite->data[2];
+ sprite->data[4] += sprite->data[5];
+ if (sprite->data[0] >= 0x100)
+ sprite->data[0] -= 0x100;
+ else if (sprite->data[0] < 0)
+ sprite->data[0] += 0x100;
+ if (sprite->data[4] >= 0x100)
+ sprite->data[4] -= 0x100;
+ else if (sprite->data[4] < 0)
+ sprite->data[4] += 0x100;
+ --sprite->data[3];
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+}
+
+void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], sprite->data[4]);
+ sprite->data[0] += sprite->data[2];
+ if (sprite->data[0] >= 0x100)
+ sprite->data[0] -= 0x100;
+ else if (sprite->data[0] < 0)
+ sprite->data[0] += 0x100;
+ --sprite->data[3];
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+}
+
+// Simply waits until the sprite's data[0] hits zero.
+// This is used to let sprite anims or affine anims to run for a designated
+// duration.
+void WaitAnimForDuration(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ --sprite->data[0];
+ else
+ SetCallbackToStoredInData6(sprite);
+}
+
+static void sub_8074C64(struct Sprite *sprite)
+{
+ sub_8074C80(sprite);
+ sprite->callback = TranslateSpriteLinear;
+ sprite->callback(sprite);
+}
+
+void sub_8074C80(struct Sprite *sprite)
+{
+ s16 old;
+ s32 xDiff;
+
+ if (sprite->data[1] > sprite->data[2])
+ sprite->data[0] = -sprite->data[0];
+ xDiff = sprite->data[2] - sprite->data[1];
+ old = sprite->data[0];
+ sprite->data[0] = abs(xDiff / sprite->data[0]);
+ sprite->data[2] = (sprite->data[4] - sprite->data[3]) / sprite->data[0];
+ sprite->data[1] = old;
+}
+
+void TranslateSpriteLinear(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ sprite->pos2.x += sprite->data[1];
+ sprite->pos2.y += sprite->data[2];
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+}
+
+void TranslateSpriteLinearFixedPoint(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+}
+
+static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+
+ UpdateMonIconFrame(sprite);
+}
+
+// not used
+static void sub_8074D80(struct Sprite *sprite)
+{
+ sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
+ sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->callback = sub_8074C64;
+}
+
+void TranslateMonSpriteLinear(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ gSprites[sprite->data[3]].pos2.x += sprite->data[1];
+ gSprites[sprite->data[3]].pos2.y += sprite->data[2];
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+}
+
+void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ gSprites[sprite->data[5]].pos2.x = sprite->data[3] >> 8;
+ gSprites[sprite->data[5]].pos2.y = sprite->data[4] >> 8;
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+}
+
+void TranslateSpriteLinearAndFlicker(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ sprite->pos2.x = sprite->data[2] >> 8;
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->data[4] += sprite->data[3];
+ if (sprite->data[0] % sprite->data[5] == 0)
+ {
+ if (sprite->data[5])
+ sprite->invisible ^= 1;
+ }
+ }
+ else
+ {
+ SetCallbackToStoredInData6(sprite);
+ }
+}
+
+void DestroySpriteAndMatrix(struct Sprite *sprite)
+{
+ FreeSpriteOamMatrix(sprite);
+ DestroyAnimSprite(sprite);
+}
+
+// not used
+static void sub_8074EF4(struct Sprite *sprite)
+{
+ sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
+ sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->callback = sub_8074C64;
+}
+
+// not used
+static void sub_8074F38(struct Sprite *sprite)
+{
+ ResetPaletteStructByUid(sprite->data[5]);
+ DestroySpriteAndMatrix(sprite);
+}
+
+void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ SetCallbackToStoredInData6(sprite);
+}
+
+void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ SetCallbackToStoredInData6(sprite);
+}
+
+void DestroyAnimSpriteAndDisableBlend(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimSprite(sprite);
+}
+
+void DestroyAnimVisualTaskAndDisableBlend(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimVisualTask(taskId);
+}
+
+void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+}
+
+// Sets the initial x offset of the anim sprite depending on the horizontal orientation
+// of the two involved mons.
+void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset)
+{
+ u16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
+ u16 targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
+
+ if (attackerX > targetX)
+ {
+ sprite->pos1.x -= xOffset;
+ }
+ else if (attackerX < targetX)
+ {
+ sprite->pos1.x += xOffset;
+ }
+ else
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= xOffset;
+ else
+ sprite->pos1.x += xOffset;
+ }
+}
+
+void InitAnimArcTranslation(struct Sprite *sprite)
+{
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ InitAnimLinearTranslation(sprite);
+ sprite->data[6] = 0x8000 / sprite->data[0];
+ sprite->data[7] = 0;
+}
+
+bool8 TranslateAnimHorizontalArc(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ return TRUE;
+ sprite->data[7] += sprite->data[6];
+ sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
+ return FALSE;
+}
+
+bool8 TranslateAnimVerticalArc(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ return TRUE;
+ sprite->data[7] += sprite->data[6];
+ sprite->pos2.x += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
+ return FALSE;
+}
+
+void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+}
+
+void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets)
+{
+ // Battle anim sprites are automatically created at the anim target's center, which
+ // is why there is no else clause for the "respectMonPicOffsets" check.
+ if (!respectMonPicOffsets)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X);
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y);
+ }
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+}
+
+void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets)
+{
+ if (!respectMonPicOffsets)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X);
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+}
+
+u8 GetBattlerSide(u8 battlerId)
+{
+ return GET_BATTLER_SIDE2(battlerId);
+}
+
+u8 GetBattlerPosition(u8 battlerId)
+{
+ return GET_BATTLER_POSITION(battlerId);
+}
+
+u8 GetBattlerAtPosition(u8 position)
+{
+ u8 i;
+
+ for (i = 0; i < gBattlersCount; ++i)
+ if (gBattlerPositions[i] == position)
+ break;
+ return i;
+}
+
+bool8 IsBattlerSpritePresent(u8 battlerId)
+{
+ if (gBattlerPositions[battlerId] == 0xFF)
+ {
+ return FALSE;
+ }
+ else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ {
+ if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_HP) != 0)
+ return TRUE;
+ }
+ else
+ {
+ if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_HP) != 0)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 IsDoubleBattle(void)
+{
+ return IS_DOUBLE_BATTLE();
+}
+
+void sub_80752A0(struct BattleAnimBgData *animBgData)
+{
+ animBgData->bgTiles = gUnknown_2022BB8;
+ animBgData->bgTilemap = (u16 *)gUnknown_2022BBC;
+ animBgData->paletteId = 8;
+ animBgData->bgId = 1;
+ animBgData->tilesOffset = 0x200;
+ animBgData->unused = 0;
+}
+
+void sub_80752C8(struct BattleAnimBgData *animBgData, u32 arg1)
+{
+ if (arg1 == 1)
+ {
+ sub_80752A0(animBgData);
+ }
+ else
+ {
+ animBgData->bgTiles = gUnknown_2022BB8;
+ animBgData->bgTilemap = (u16 *)gUnknown_2022BBC;
+ animBgData->paletteId = 9;
+ animBgData->bgId = 2;
+ animBgData->tilesOffset = 0x300;
+ animBgData->unused = 0;
+ }
+}
+
+void sub_8075300(struct BattleAnimBgData *animBgData, u8 unused)
+{
+ animBgData->bgTiles = gUnknown_2022BB8;
+ animBgData->bgTilemap = (u16 *)gUnknown_2022BBC;
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
+ {
+ animBgData->paletteId = 8;
+ animBgData->bgId = 1;
+ animBgData->tilesOffset = 0x200;
+ animBgData->unused = 0;
+ }
+ else
+ {
+ animBgData->paletteId = 9;
+ animBgData->bgId = 2;
+ animBgData->tilesOffset = 0x300;
+ animBgData->unused = 0;
+ }
+}
+
+void sub_8075358(u32 bgId)
+{
+ struct BattleAnimBgData animBgData;
+
+ sub_80752C8(&animBgData, bgId);
+ CpuFill32(0, animBgData.bgTiles, 0x2000);
+ LoadBgTiles(bgId, animBgData.bgTiles, 0x2000, animBgData.tilesOffset);
+ FillBgTilemapBufferRect(bgId, 0, 0, 0, 32, 64, 17);
+ CopyBgTilemapBufferToVram(bgId);
+}
+
+void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset)
+{
+ CpuFill32(0, gUnknown_2022BB8, 0x2000);
+ LZDecompressWram(src, gUnknown_2022BB8);
+ LoadBgTiles(bgId, gUnknown_2022BB8, 0x2000, tilesOffset);
+}
+
+void InitAnimBgTilemapBuffer(u32 bgId, const void *src)
+{
+ FillBgTilemapBufferRect(bgId, 0, 0, 0, 32, 64, 17);
+ CopyToBgTilemapBuffer(bgId, src, 0, 0);
+}
+
+void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src)
+{
+ InitAnimBgTilemapBuffer(bgId, src);
+ CopyBgTilemapBufferToVram(bgId);
+}
+
+u8 sub_8075454(void)
+{
+ return 2;
+}
+
+void sub_8075458(bool8 arg0)
+{
+ if (!arg0)
+ {
+ SetAnimBgAttribute(3, BG_ANIM_SCREEN_SIZE, 0);
+ SetAnimBgAttribute(3, BG_ANIM_AREA_OVERFLOW_MODE, 1);
+ }
+ else
+ {
+ SetAnimBgAttribute(3, BG_ANIM_SCREEN_SIZE, 1);
+ SetAnimBgAttribute(3, BG_ANIM_AREA_OVERFLOW_MODE, 0);
+ }
+}
+
+void sub_8075490(struct Sprite *sprite)
+{
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ InitSpriteDataForLinearTranslation(sprite);
+ sprite->callback = TranslateSpriteLinearFixedPointIconFrame;
+ sprite->callback(sprite);
+}
+
+void InitSpriteDataForLinearTranslation(struct Sprite *sprite)
+{
+ s16 x = (sprite->data[2] - sprite->data[1]) << 8;
+ s16 y = (sprite->data[4] - sprite->data[3]) << 8;
+
+ sprite->data[1] = x / sprite->data[0];
+ sprite->data[2] = y / sprite->data[0];
+ sprite->data[4] = 0;
+ sprite->data[3] = 0;
+}
+
+void InitAnimLinearTranslation(struct Sprite *sprite)
+{
+ s32 x = sprite->data[2] - sprite->data[1];
+ s32 y = sprite->data[4] - sprite->data[3];
+ bool8 movingLeft = x < 0;
+ bool8 movingUp = y < 0;
+ u16 xDelta = abs(x) << 8;
+ u16 yDelta = abs(y) << 8;
+
+ xDelta = xDelta / sprite->data[0];
+ yDelta = yDelta / sprite->data[0];
+
+ if (movingLeft)
+ xDelta |= 1;
+ else
+ xDelta &= ~1;
+
+ if (movingUp)
+ yDelta |= 1;
+ else
+ yDelta &= ~1;
+
+ sprite->data[1] = xDelta;
+ sprite->data[2] = yDelta;
+ sprite->data[4] = 0;
+ sprite->data[3] = 0;
+}
+
+void StartAnimLinearTranslation(struct Sprite *sprite)
+{
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = sub_807563C;
+ sprite->callback(sprite);
+}
+
+void sub_80755B8(struct Sprite *sprite)
+{
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = sub_8075658;
+ sprite->callback(sprite);
+}
+
+bool8 AnimTranslateLinear(struct Sprite *sprite)
+{
+ u16 v1, v2, x, y;
+
+ if (!sprite->data[0])
+ return TRUE;
+ v1 = sprite->data[1];
+ v2 = sprite->data[2];
+ x = sprite->data[3];
+ y = sprite->data[4];
+ x += v1;
+ y += v2;
+ if (v1 & 1)
+ sprite->pos2.x = -(x >> 8);
+ else
+ sprite->pos2.x = x >> 8;
+
+ if (v2 & 1)
+ sprite->pos2.y = -(y >> 8);
+ else
+ sprite->pos2.y = y >> 8;
+ sprite->data[3] = x;
+ sprite->data[4] = y;
+ --sprite->data[0];
+ return FALSE;
+}
+
+void sub_807563C(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ SetCallbackToStoredInData6(sprite);
+}
+
+static void sub_8075658(struct Sprite *sprite)
+{
+ sub_801236C(sprite);
+ if (AnimTranslateLinear(sprite))
+ SetCallbackToStoredInData6(sprite);
+}
+
+void sub_8075678(struct Sprite *sprite)
+{
+ s32 v1 = abs(sprite->data[2] - sprite->data[1]) << 8;
+
+ sprite->data[0] = v1 / sprite->data[0];
+ InitAnimLinearTranslation(sprite);
+}
+
+void sub_80756A4(struct Sprite *sprite)
+{
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ sub_8075678(sprite);
+ sprite->callback = sub_807563C;
+ sprite->callback(sprite);
+}
+
+static void InitAnimFastLinearTranslation(struct Sprite *sprite)
+{
+ s32 xDiff = sprite->data[2] - sprite->data[1];
+ s32 yDiff = sprite->data[4] - sprite->data[3];
+ bool8 xSign = xDiff < 0;
+ bool8 ySign = yDiff < 0;
+ u16 x2 = abs(xDiff) << 4;
+ u16 y2 = abs(yDiff) << 4;
+
+ x2 /= sprite->data[0];
+ y2 /= sprite->data[0];
+ if (xSign)
+ x2 |= 1;
+ else
+ x2 &= ~1;
+ if (ySign)
+ y2 |= 1;
+ else
+ y2 &= ~1;
+ sprite->data[1] = x2;
+ sprite->data[2] = y2;
+ sprite->data[4] = 0;
+ sprite->data[3] = 0;
+}
+
+void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite)
+{
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ InitAnimFastLinearTranslation(sprite);
+ sprite->callback = sub_80757E8;
+ sprite->callback(sprite);
+}
+
+bool8 AnimFastTranslateLinear(struct Sprite *sprite)
+{
+ u16 v1, v2, x, y;
+
+ if (!sprite->data[0])
+ return TRUE;
+ v1 = sprite->data[1];
+ v2 = sprite->data[2];
+ x = sprite->data[3];
+ y = sprite->data[4];
+ x += v1;
+ y += v2;
+ if (v1 & 1)
+ sprite->pos2.x = -(x >> 4);
+ else
+ sprite->pos2.x = x >> 4;
+ if (v2 & 1)
+ sprite->pos2.y = -(y >> 4);
+ else
+ sprite->pos2.y = y >> 4;
+ sprite->data[3] = x;
+ sprite->data[4] = y;
+ --sprite->data[0];
+ return FALSE;
+}
+
+static void sub_80757E8(struct Sprite *sprite)
+{
+ if (AnimFastTranslateLinear(sprite))
+ SetCallbackToStoredInData6(sprite);
+}
+
+void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite)
+{
+ s32 xDiff = abs(sprite->data[2] - sprite->data[1]) << 4;
+
+ sprite->data[0] = xDiff / sprite->data[0];
+ InitAnimFastLinearTranslation(sprite);
+}
+
+void sub_8075830(struct Sprite *sprite)
+{
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ InitAnimFastLinearTranslationWithSpeed(sprite);
+ sprite->callback = sub_80757E8;
+ sprite->callback(sprite);
+}
+
+void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation)
+{
+ s32 i;
+ struct ObjAffineSrcData src;
+ struct OamMatrix matrix;
+
+ src.xScale = xScale;
+ src.yScale = yScale;
+ src.rotation = rotation;
+ if (sub_80758DC())
+ src.xScale = -src.xScale;
+ i = gSprites[spriteId].oam.matrixNum;
+ ObjAffineSet(&src, &matrix, 1, 2);
+ gOamMatrices[i].a = matrix.a;
+ gOamMatrices[i].b = matrix.b;
+ gOamMatrices[i].c = matrix.c;
+ gOamMatrices[i].d = matrix.d;
+}
+
+static bool8 sub_80758DC(void)
+{
+ return FALSE;
+}
+
+void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode)
+{
+ u8 battlerId = gSprites[spriteId].data[0];
+
+ if (IsBattlerSpriteVisible(battlerId))
+ gSprites[spriteId].invisible = FALSE;
+ gSprites[spriteId].oam.objMode = objMode;
+ gSprites[spriteId].affineAnimPaused = TRUE;
+ if (!gSprites[spriteId].oam.affineMode)
+ gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battlerId].matrixNum;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
+}
+
+void ResetSpriteRotScale(u8 spriteId)
+{
+ SetSpriteRotScale(spriteId, 0x100, 0x100, 0);
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.objMode = 0;
+ gSprites[spriteId].affineAnimPaused = FALSE;
+ CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
+}
+
+// Sets the sprite's y offset equal to the y displacement caused by the
+// matrix's rotation.
+void SetBattlerSpriteYOffsetFromRotation(u8 spriteId)
+{
+ u16 matrixNum = gSprites[spriteId].oam.matrixNum;
+ // The "c" component of the battler sprite matrix contains the sine of the rotation angle divided by some scale amount.
+ s16 c = gOamMatrices[matrixNum].c;
+
+ if (c < 0)
+ c = -c;
+ gSprites[spriteId].pos2.y = c >> 3;
+}
+
+void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation)
+{
+ s32 i;
+ struct ObjAffineSrcData src;
+ struct OamMatrix matrix;
+
+ if (sprite->oam.affineMode & 1)
+ {
+ sprite->affineAnimPaused = TRUE;
+ if (recalcCenterVector)
+ CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
+ src.xScale = xScale;
+ src.yScale = yScale;
+ src.rotation = rotation;
+ if (sub_80758DC())
+ src.xScale = -src.xScale;
+ i = sprite->oam.matrixNum;
+ ObjAffineSet(&src, &matrix, 1, 2);
+ gOamMatrices[i].a = matrix.a;
+ gOamMatrices[i].b = matrix.b;
+ gOamMatrices[i].c = matrix.c;
+ gOamMatrices[i].d = matrix.d;
+ }
+}
+
+void sub_8075AD8(struct Sprite *sprite)
+{
+ TrySetSpriteRotScale(sprite, TRUE, 0x100, 0x100, 0);
+ sprite->affineAnimPaused = FALSE;
+ CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
+}
+
+static u16 ArcTan2_(s16 a, s16 b)
+{
+ return ArcTan2(a, b);
+}
+
+u16 ArcTan2Neg(s16 a, s16 b)
+{
+ u16 var = ArcTan2_(a, b);
+ return -var;
+}
+
+void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor)
+{
+ s32 i;
+ struct PlttData *originalColor;
+ struct PlttData *destColor;
+ u16 average;
+
+ paletteNum *= 16;
+
+ if (!restoreOriginalColor)
+ {
+ for (i = 0; i < 16; ++i)
+ {
+ originalColor = (struct PlttData *)&gPlttBufferUnfaded[paletteNum + i];
+ average = originalColor->r + originalColor->g + originalColor->b;
+ average /= 3;
+ destColor = (struct PlttData *)&gPlttBufferFaded[paletteNum + i];
+ destColor->r = average;
+ destColor->g = average;
+ destColor->b = average;
+ }
+ }
+ else
+ {
+ CpuCopy32(&gPlttBufferUnfaded[paletteNum], &gPlttBufferFaded[paletteNum], 32);
+ }
+}
+
+u32 sub_8075BE8(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7)
+{
+ u32 selectedPalettes = 0;
+ u32 shift;
+
+ if (battleBackground)
+ {
+ selectedPalettes = 0xe;
+ }
+ if (attacker)
+ {
+ shift = gBattleAnimAttacker + 16;
+ selectedPalettes |= 1 << shift;
+ }
+ if (target)
+ {
+ shift = gBattleAnimTarget + 16;
+ selectedPalettes |= 1 << shift;
+ }
+ if (attackerPartner)
+ {
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
+ {
+ shift = BATTLE_PARTNER(gBattleAnimAttacker) + 16;
+ selectedPalettes |= 1 << shift;
+ }
+ }
+ if (targetPartner)
+ {
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)))
+ {
+ shift = BATTLE_PARTNER(gBattleAnimTarget) + 16;
+ selectedPalettes |= 1 << shift;
+ }
+ }
+ if (a6)
+ {
+ selectedPalettes |= 0x100;
+ }
+ if (a7)
+ {
+ selectedPalettes |= 0x200;
+ }
+ return selectedPalettes;
+}
+
+u32 sub_8075CB8(u8 a1, u8 a2, u8 a3, u8 a4)
+{
+ u32 var = 0;
+ u32 shift;
+
+ if (a1)
+ {
+ if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)))
+ {
+ var |= 1 << (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) + 16);
+ }
+ }
+ if (a2)
+ {
+ if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)))
+ {
+ shift = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT) + 16;
+ var |= 1 << shift;
+ }
+ }
+ if (a3)
+ {
+ if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)))
+ {
+ shift = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT) + 16;
+ var |= 1 << shift;
+ }
+ }
+ if (a4)
+ {
+ if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)))
+ {
+ shift = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT) + 16;
+ var |= 1 << shift;
+ }
+ }
+ return var;
+}
+
+u8 sub_8075D80(u8 a1)
+{
+ return a1;
+}
+
+// not used
+static u8 GetBattlerAtPosition_(u8 position)
+{
+ return GetBattlerAtPosition(position);
+}
+
+void sub_8075D9C(struct Sprite *sprite)
+{
+ bool8 var;
+
+ if (!sprite->data[0])
+ {
+ if (!gBattleAnimArgs[3])
+ var = TRUE;
+ else
+ var = FALSE;
+ if (!gBattleAnimArgs[2])
+ InitSpritePosToAnimAttacker(sprite, var);
+ else
+ InitSpritePosToAnimTarget(sprite, var);
+ ++sprite->data[0];
+
+ }
+ else if (sprite->animEnded || sprite->affineAnimEnded)
+ {
+ DestroySpriteAndMatrix(sprite);
+ }
+}
+
+// Linearly translates a sprite to a target position on the
+// other mon's sprite.
+// arg 0: initial x offset
+// arg 1: initial y offset
+// arg 2: target x offset
+// arg 3: target y offset
+// arg 4: duration
+// arg 5: lower 8 bits = location on attacking mon, upper 8 bits = location on target mon pick to target
+void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
+{
+ bool8 respectMonPicOffsets;
+ u8 coordType;
+
+ if (!(gBattleAnimArgs[5] & 0xFF00))
+ respectMonPicOffsets = TRUE;
+ else
+ respectMonPicOffsets = FALSE;
+ if (!(gBattleAnimArgs[5] & 0xFF))
+ coordType = BATTLER_COORD_Y_PIC_OFFSET;
+ else
+ coordType = BATTLER_COORD_Y;
+ InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_8075E80(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, 1);
+ if (GetBattlerSide(gBattleAnimAttacker))
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[5];
+ InitAnimArcTranslation(sprite);
+ sprite->callback = sub_8075EF0;
+}
+
+static void sub_8075EF0(struct Sprite *sprite)
+{
+ if (TranslateAnimHorizontalArc(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8075F0C(struct Sprite *sprite)
+{
+ bool8 r4;
+ u8 battlerId, coordType;
+
+ if (!gBattleAnimArgs[6])
+ {
+ r4 = TRUE;
+ coordType = BATTLER_COORD_Y_PIC_OFFSET;
+ }
+ else
+ {
+ r4 = FALSE;
+ coordType = BATTLER_COORD_Y;
+ }
+ if (!gBattleAnimArgs[5])
+ {
+ InitSpritePosToAnimAttacker(sprite, r4);
+ battlerId = gBattleAnimAttacker;
+ }
+ else
+ {
+ InitSpritePosToAnimTarget(sprite, r4);
+ battlerId = gBattleAnimTarget;
+ }
+ if (GetBattlerSide(gBattleAnimAttacker))
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ InitSpritePosToAnimTarget(sprite, r4);
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(battlerId, coordType) + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+s16 CloneBattlerSpriteWithBlend(u8 animBattler)
+{
+ u16 i;
+ u8 spriteId = GetAnimBattlerSpriteId(animBattler);
+
+ if (spriteId != 0xFF)
+ {
+ for (i = 0; i < MAX_SPRITES; ++i)
+ {
+ if (!gSprites[i].inUse)
+ {
+ gSprites[i] = gSprites[spriteId];
+ gSprites[i].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[i].invisible = FALSE;
+ return i;
+ }
+ }
+ }
+ return -1;
+}
+
+void obj_delete_but_dont_free_vram(struct Sprite *sprite)
+{
+ sprite->usingSheet = TRUE;
+ DestroySprite(sprite);
+}
+
+void sub_8076048(u8 taskId)
+{
+ s16 v1 = 0, v2 = 0;
+
+ if (gBattleAnimArgs[2] > gBattleAnimArgs[0])
+ v2 = 1;
+ if (gBattleAnimArgs[2] < gBattleAnimArgs[0])
+ v2 = -1;
+ if (gBattleAnimArgs[3] > gBattleAnimArgs[1])
+ v1 = 1;
+ if (gBattleAnimArgs[3] < gBattleAnimArgs[1])
+ v1 = -1;
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = gBattleAnimArgs[4];
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = gBattleAnimArgs[0];
+ gTasks[taskId].data[4] = gBattleAnimArgs[1];
+ gTasks[taskId].data[5] = v2;
+ gTasks[taskId].data[6] = v1;
+ gTasks[taskId].data[7] = gBattleAnimArgs[2];
+ gTasks[taskId].data[8] = gBattleAnimArgs[3];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gBattleAnimArgs[0], gBattleAnimArgs[1]));
+ gTasks[taskId].func = sub_80760D0;
+}
+
+static void sub_80760D0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (++task->data[0] > task->data[1])
+ {
+ task->data[0] = 0;
+ if (++task->data[2] & 1)
+ {
+ if (task->data[3] != task->data[7])
+ task->data[3] += task->data[5];
+ }
+ else
+ {
+ if (task->data[4] != task->data[8])
+ task->data[4] += task->data[6];
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4]));
+ if (task->data[3] == task->data[7] && task->data[4] == task->data[8])
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ }
+}
+
+// Linearly blends a mon's sprite colors with a target color with increasing
+// strength, and then blends out to the original color.
+// arg 0: anim bank
+// arg 1: blend color
+// arg 2: target blend coefficient
+// arg 3: initial delay
+// arg 4: number of times to blend in and out
+void AnimTask_BlendMonInAndOut(u8 task)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+
+ if (spriteId == 0xFF)
+ {
+ DestroyAnimVisualTask(task);
+ return;
+ }
+ gTasks[task].data[0] = (gSprites[spriteId].oam.paletteNum * 0x10) + 0x101;
+ AnimTask_BlendMonInAndOutSetup(&gTasks[task]);
+}
+
+static void AnimTask_BlendMonInAndOutSetup(struct Task *task)
+{
+ task->data[1] = gBattleAnimArgs[1];
+ task->data[2] = 0;
+ task->data[3] = gBattleAnimArgs[2];
+ task->data[4] = 0;
+ task->data[5] = gBattleAnimArgs[3];
+ task->data[6] = 0;
+ task->data[7] = gBattleAnimArgs[4];
+ task->func = AnimTask_BlendMonInAndOutStep;
+}
+
+static void AnimTask_BlendMonInAndOutStep(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (++task->data[4] >= task->data[5])
+ {
+ task->data[4] = 0;
+ if (!task->data[6])
+ {
+ ++task->data[2];
+ BlendPalette(task->data[0], 15, task->data[2], task->data[1]);
+ if (task->data[2] == task->data[3])
+ task->data[6] = 1;
+ }
+ else
+ {
+ --task->data[2];
+ BlendPalette(task->data[0], 15, task->data[2], task->data[1]);
+ if (!task->data[2])
+ {
+ if (--task->data[7])
+ {
+ task->data[4] = 0;
+ task->data[6] = 0;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ }
+ }
+ }
+}
+
+void sub_8076288(u8 taskId)
+{
+ u8 palette = IndexOfSpritePaletteTag(gBattleAnimArgs[0]);
+
+ if (palette == 0xFF)
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ gTasks[taskId].data[0] = (palette * 0x10) + 0x101;
+ AnimTask_BlendMonInAndOutSetup(&gTasks[taskId]);
+}
+
+void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds)
+{
+ task->data[7] = 0;
+ task->data[8] = 0;
+ task->data[9] = 0;
+ task->data[15] = spriteId;
+ task->data[10] = 0x100;
+ task->data[11] = 0x100;
+ task->data[12] = 0;
+ StorePointerInVars(&task->data[13], &task->data[14], affineAnimCmds);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
+}
+
+bool8 RunAffineAnimFromTaskData(struct Task *task)
+{
+ sAnimTaskAffineAnim = LoadPointerFromVars(task->data[13], task->data[14]) + (task->data[7] << 3);
+ switch (sAnimTaskAffineAnim->type)
+ {
+ default:
+ if (!sAnimTaskAffineAnim->frame.duration)
+ {
+ task->data[10] = sAnimTaskAffineAnim->frame.xScale;
+ task->data[11] = sAnimTaskAffineAnim->frame.yScale;
+ task->data[12] = sAnimTaskAffineAnim->frame.rotation;
+ ++task->data[7];
+ ++sAnimTaskAffineAnim;
+ }
+ task->data[10] += sAnimTaskAffineAnim->frame.xScale;
+ task->data[11] += sAnimTaskAffineAnim->frame.yScale;
+ task->data[12] += sAnimTaskAffineAnim->frame.rotation;
+ SetSpriteRotScale(task->data[15], task->data[10], task->data[11], task->data[12]);
+ SetBattlerSpriteYOffsetFromYScale(task->data[15]);
+ if (++task->data[8] >= sAnimTaskAffineAnim->frame.duration)
+ {
+ task->data[8] = 0;
+ ++task->data[7];
+ }
+ break;
+ case AFFINEANIMCMDTYPE_JUMP:
+ task->data[7] = sAnimTaskAffineAnim->jump.target;
+ break;
+ case AFFINEANIMCMDTYPE_LOOP:
+ if (sAnimTaskAffineAnim->loop.count)
+ {
+ if (task->data[9])
+ {
+ if (!--task->data[9])
+ {
+ ++task->data[7];
+ break;
+ }
+ }
+ else
+ {
+ task->data[9] = sAnimTaskAffineAnim->loop.count;
+ }
+ if (!task->data[7])
+ {
+ break;
+ }
+ while (TRUE)
+ {
+ --task->data[7];
+ --sAnimTaskAffineAnim;
+ if (sAnimTaskAffineAnim->type == AFFINEANIMCMDTYPE_LOOP)
+ {
+ ++task->data[7];
+ return TRUE;
+ }
+ if (!task->data[7])
+ return TRUE;
+ }
+ }
+ ++task->data[7];
+ break;
+ case AFFINEANIMCMDTYPE_END:
+ gSprites[task->data[15]].pos2.y = 0;
+ ResetSpriteRotScale(task->data[15]);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+// Sets the sprite's y offset equal to the y displacement caused by the
+// matrix's scale in the y dimension.
+void SetBattlerSpriteYOffsetFromYScale(u8 spriteId)
+{
+ s32 var = 64 - GetBattlerYDeltaFromSpriteId(spriteId) * 2;
+ u16 matrix = gSprites[spriteId].oam.matrixNum;
+ s32 var2 = (var << 8) / gOamMatrices[matrix].d;
+
+ if (var2 > 128)
+ var2 = 128;
+ gSprites[spriteId].pos2.y = (var - var2) / 2;
+}
+
+// Sets the sprite's y offset equal to the y displacement caused by another sprite
+// matrix's scale in the y dimension.
+void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId)
+{
+ s32 var = 64 - GetBattlerYDeltaFromSpriteId(otherSpriteId) * 2;
+ u16 matrix = gSprites[spriteId].oam.matrixNum;
+ s32 var2 = (var << 8) / gOamMatrices[matrix].d;
+
+ if (var2 > 128)
+ var2 = 128;
+ gSprites[spriteId].pos2.y = (var - var2) / 2;
+}
+
+static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
+{
+ struct BattleSpriteInfo *spriteInfo;
+ u8 battlerId = gSprites[spriteId].data[0];
+ u16 species;
+ u16 i;
+
+ for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
+ {
+ if (gBattlerSpriteIds[i] == spriteId)
+ {
+ if (GetBattlerSide(i) == B_SIDE_PLAYER)
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
+ else
+ species = spriteInfo[battlerId].transformSpecies;
+ return gMonBackPicCoords[species].y_offset;
+ }
+ else
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
+ else
+ species = spriteInfo[battlerId].transformSpecies;
+ return gMonFrontPicCoords[species].y_offset;
+ }
+ }
+ }
+ return 64;
+}
+
+void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr)
+{
+ *lo = ((intptr_t)ptr) & 0xffff;
+ *hi = (((intptr_t)ptr) >> 16) & 0xffff;
+}
+
+void *LoadPointerFromVars(s16 lo, s16 hi)
+{
+ return (void *)((u16)lo | ((u16)hi << 16));
+}
+
+void sub_80765D4(struct Task *task, u8 spriteId, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7)
+{
+ task->data[8] = a7;
+ task->data[15] = spriteId;
+ task->data[9] = a3;
+ task->data[10] = a4;
+ task->data[13] = a5;
+ task->data[14] = a6;
+ task->data[11] = (a5 - a3) / a7;
+ task->data[12] = (a6 - a4) / a7;
+}
+
+u8 sub_8076640(struct Task *task)
+{
+ if (!task->data[8])
+ return 0;
+ if (--task->data[8] != 0)
+ {
+ task->data[9] += task->data[11];
+ task->data[10] += task->data[12];
+ }
+ else
+ {
+ task->data[9] = task->data[13];
+ task->data[10] = task->data[14];
+ }
+ SetSpriteRotScale(task->data[15], task->data[9], task->data[10], 0);
+ if (task->data[8])
+ SetBattlerSpriteYOffsetFromYScale(task->data[15]);
+ else
+ gSprites[task->data[15]].pos2.y = 0;
+ return task->data[8];
+}
+
+void AnimTask_GetFrustrationPowerLevel(u8 taskId)
+{
+ u16 powerLevel;
+
+ if (gAnimFriendship <= 30)
+ powerLevel = 0;
+ else if (gAnimFriendship <= 100)
+ powerLevel = 1;
+ else if (gAnimFriendship <= 200)
+ powerLevel = 2;
+ else
+ powerLevel = 3;
+ gBattleAnimArgs[7] = powerLevel;
+ DestroyAnimVisualTask(taskId);
+}
+
+// not used
+static void sub_80766EC(u8 priority)
+{
+ if (IsBattlerSpriteVisible(gBattleAnimTarget))
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority;
+ if (IsBattlerSpriteVisible(gBattleAnimAttacker))
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].oam.priority = priority;
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)))
+ gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimTarget)]].oam.priority = priority;
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
+ gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority;
+}
+
+void sub_80767F0(void)
+{
+ s32 i;
+
+ for (i = 0; i < gBattlersCount; ++i)
+ {
+ if (IsBattlerSpriteVisible(i))
+ {
+ gSprites[gBattlerSpriteIds[i]].subpriority = GetBattlerSpriteSubpriority(i);
+ gSprites[gBattlerSpriteIds[i]].oam.priority = 2;
+ }
+ }
+}
+
+u8 GetBattlerSpriteSubpriority(u8 battlerId)
+{
+ u8 subpriority;
+ u8 position = GetBattlerPosition(battlerId);
+
+ if (position == B_POSITION_PLAYER_LEFT)
+ subpriority = 30;
+ else if (position == B_POSITION_PLAYER_RIGHT)
+ subpriority = 20;
+ else if (position == B_POSITION_OPPONENT_LEFT)
+ subpriority = 40;
+ else
+ subpriority = 50;
+ return subpriority;
+}
+
+u8 GetBattlerSpriteBGPriority(u8 battlerId)
+{
+ u8 position = GetBattlerPosition(battlerId);
+
+ if (position == B_POSITION_PLAYER_LEFT || position == B_POSITION_OPPONENT_RIGHT)
+ return GetAnimBgAttribute(2, BG_ANIM_PRIORITY);
+ else
+ return GetAnimBgAttribute(1, BG_ANIM_PRIORITY);
+}
+
+u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
+{
+ u8 position = GetBattlerPosition(battlerId);
+
+ if (position == B_POSITION_PLAYER_LEFT || position == B_POSITION_OPPONENT_RIGHT)
+ return 2;
+ else
+ return 1;
+}
+
+u8 sub_80768D0(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10)
+{
+ u8 spriteId;
+ u16 sheet = LoadSpriteSheet(&gUnknown_83AE084[a3]);
+ u16 palette = AllocSpritePalette(gUnknown_83AE054[a3].paletteTag);
+
+ if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->field_17C == NULL)
+ gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
+ if (!isBackpic)
+ {
+ LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
+ if (a10 == 1 || sub_804455C(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
+ LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
+ gMonSpritesGfxPtr->field_17C,
+ species,
+ personality,
+ TRUE);
+ else
+ LoadSpecialPokePic(&gMonFrontPicTable[species],
+ gMonSpritesGfxPtr->field_17C,
+ species,
+ personality,
+ TRUE);
+ }
+ else
+ {
+ LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
+ if (a10 == 1 || sub_804455C(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
+ LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
+ gMonSpritesGfxPtr->field_17C,
+ species,
+ personality,
+ FALSE);
+ else
+ LoadSpecialPokePic(&gMonBackPicTable[species],
+ gMonSpritesGfxPtr->field_17C,
+ species,
+ personality,
+ FALSE);
+ }
+ RequestDma3Copy(gMonSpritesGfxPtr->field_17C, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1);
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C);
+ if (!isBackpic)
+ spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
+ else
+ spriteId = CreateSprite(&gUnknown_83AE054[a3], x, y + gMonBackPicCoords[species].y_offset, subpriority);
+ return spriteId;
+}
+
+void DestroySpriteAndFreeResources_(struct Sprite *sprite)
+{
+ DestroySpriteAndFreeResources(sprite);
+}
+
+s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
+{
+ u16 species;
+ u32 personality;
+ u16 letter;
+ u16 unownSpecies;
+ s32 ret;
+ const struct MonCoords *coords;
+ struct BattleSpriteInfo *spriteInfo;
+
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ {
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY);
+ }
+ else
+ {
+ species = spriteInfo[battlerId].transformSpecies;
+ personality = gTransformedPersonalities[battlerId];
+ }
+ if (species == SPECIES_UNOWN)
+ {
+ letter = GET_UNOWN_LETTER(personality);
+ if (!letter)
+ unownSpecies = SPECIES_UNOWN;
+ else
+ unownSpecies = letter + SPECIES_UNOWN_B - 1;
+ coords = &gMonBackPicCoords[unownSpecies];
+ }
+ else if (species > NUM_SPECIES)
+ {
+ coords = &gMonBackPicCoords[0];
+ }
+ else
+ {
+ coords = &gMonBackPicCoords[species];
+ }
+ }
+ else
+ {
+ spriteInfo = gBattleSpritesDataPtr->battlerData;
+ if (!spriteInfo[battlerId].transformSpecies)
+ {
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY);
+ }
+ else
+ {
+ species = spriteInfo[battlerId].transformSpecies;
+ personality = gTransformedPersonalities[battlerId];
+ }
+
+ if (species == SPECIES_UNOWN)
+ {
+ letter = GET_UNOWN_LETTER(personality);
+ if (!letter)
+ unownSpecies = SPECIES_UNOWN;
+ else
+ unownSpecies = letter + SPECIES_UNOWN_B - 1;
+ coords = &gMonFrontPicCoords[unownSpecies];
+ }
+ else if (species == SPECIES_CASTFORM)
+ {
+ coords = &gCastformFrontSpriteCoords[gBattleMonForms[battlerId]];
+ }
+ else if (species > NUM_SPECIES)
+ {
+ coords = &gMonFrontPicCoords[0];
+ }
+ else
+ {
+ coords = &gMonFrontPicCoords[species];
+ }
+ }
+ switch (attr)
+ {
+ case BATTLER_COORD_ATTR_HEIGHT:
+ return (coords->size & 0xf) * 8;
+ case BATTLER_COORD_ATTR_WIDTH:
+ return (coords->size >> 4) * 8;
+ case BATTLER_COORD_ATTR_LEFT:
+ return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - ((coords->size >> 4) * 4);
+ case BATTLER_COORD_ATTR_RIGHT:
+ return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + ((coords->size >> 4) * 4);
+ case BATTLER_COORD_ATTR_TOP:
+ return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - ((coords->size & 0xf) * 4);
+ case BATTLER_COORD_ATTR_BOTTOM:
+ return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + ((coords->size & 0xf) * 4);
+ case BATTLER_COORD_ATTR_RAW_BOTTOM:
+ ret = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 31;
+ return ret - coords->y_offset;
+ default:
+ return 0;
+ }
+}
+
+void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y)
+{
+ u8 xCoordType, yCoordType;
+ s16 battlerX, battlerY;
+ s16 partnerX, partnerY;
+
+ if (!respectMonPicOffsets)
+ {
+ xCoordType = BATTLER_COORD_X;
+ yCoordType = BATTLER_COORD_Y;
+ }
+ else
+ {
+ xCoordType = BATTLER_COORD_X_2;
+ yCoordType = BATTLER_COORD_Y_PIC_OFFSET;
+ }
+ battlerX = GetBattlerSpriteCoord(battlerId, xCoordType);
+ battlerY = GetBattlerSpriteCoord(battlerId, yCoordType);
+ if (IsDoubleBattle())
+ {
+ partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), xCoordType);
+ partnerY = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), yCoordType);
+ }
+ else
+ {
+ partnerX = battlerX;
+ partnerY = battlerY;
+ }
+ *x = (battlerX + partnerX) / 2;
+ *y = (battlerY + partnerY) / 2;
+}
+
+u8 sub_8076E34(s32 battlerId, u8 spriteId, s32 species)
+{
+ u8 newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+
+ gSprites[newSpriteId] = gSprites[spriteId];
+ gSprites[newSpriteId].usingSheet = TRUE;
+ gSprites[newSpriteId].oam.priority = 0;
+ gSprites[newSpriteId].oam.objMode = 2;
+ gSprites[newSpriteId].oam.tileNum = gSprites[spriteId].oam.tileNum;
+ gSprites[newSpriteId].callback = SpriteCallbackDummy;
+ return newSpriteId;
+}
+
+void sub_8076ED8(struct Sprite *sprite)
+{
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ if (GetBattlerSide(gBattleAnimAttacker))
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ sprite->hFlip = TRUE;
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ }
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = TranslateSpriteLinearAndFlicker;
+}
+
+void sub_8076F58(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ gBattleAnimArgs[3] *= -1;
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ }
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ StartSpriteAnim(sprite, gBattleAnimArgs[6]);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = TranslateSpriteLinearAndFlicker;
+}
+
+void sub_8076FD0(struct Sprite *sprite)
+{
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ if (GetBattlerSide(gBattleAnimAttacker))
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_8077030(u8 taskId)
+{
+ u16 src;
+ u16 dest;
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ task->data[1] = ((GetBattlerSide(gBattleAnimAttacker)) != B_SIDE_PLAYER) ? -8 : 8;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ gSprites[task->data[0]].pos2.x -= task->data[0];
+ task->data[4] = AllocSpritePalette(10097);
+ task->data[5] = 0;
+ dest = (task->data[4] + 0x10) * 0x10;
+ src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10;
+ task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
+ if (task->data[6] == 20 || task->data[6] == 40)
+ task->data[6] = 2;
+ else
+ task->data[6] = 3;
+ CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20);
+ BlendPalette(dest, 16, gBattleAnimArgs[1], gBattleAnimArgs[0]);
+ task->func = sub_8077118;
+}
+
+static void sub_8077118(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[2])
+ {
+ case 0:
+ sub_80771E4(task, taskId);
+ gSprites[task->data[0]].pos2.x += task->data[1];
+ if (++task->data[3] == 5)
+ {
+ --task->data[3];
+ ++task->data[2];
+ }
+ break;
+ case 1:
+ sub_80771E4(task, taskId);
+ gSprites[task->data[0]].pos2.x -= task->data[1];
+ if (--task->data[3] == 0)
+ {
+ gSprites[task->data[0]].pos2.x = 0;
+ ++task->data[2];
+ }
+ break;
+ case 2:
+ if (!task->data[5])
+ {
+ FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON);
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_80771E4(struct Task *task, u8 taskId)
+{
+ s16 spriteId = CloneBattlerSpriteWithBlend(0);
+
+ if (spriteId >= 0)
+ {
+ gSprites[spriteId].oam.priority = task->data[6];
+ gSprites[spriteId].oam.paletteNum = task->data[4];
+ gSprites[spriteId].data[0] = 8;
+ gSprites[spriteId].data[1] = taskId;
+ gSprites[spriteId].data[2] = spriteId;
+ gSprites[spriteId].pos2.x = gSprites[task->data[0]].pos2.x;
+ gSprites[spriteId].callback = sub_8077268;
+ ++task->data[5];
+ }
+}
+
+static void sub_8077268(struct Sprite *sprite)
+{
+ if (--sprite->data[0] == 0)
+ {
+ --gTasks[sprite->data[1]].data[5];
+ obj_delete_but_dont_free_vram(sprite);
+ }
+}
+
+void sub_807729C(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ if (!GetBattlerSide(gBattleAnimAttacker))
+ sprite->data[0] = 5;
+ else
+ sprite->data[0] = -10;
+ sprite->data[1] = -40;
+ sprite->callback = sub_80772F4;
+}
+
+static void sub_80772F4(struct Sprite *sprite)
+{
+ sprite->data[2] += sprite->data[0];
+ sprite->data[3] += sprite->data[1];
+ sprite->pos2.x = sprite->data[2] / 10;
+ sprite->pos2.y = sprite->data[3] / 10;
+ if (sprite->data[1] < -20)
+ ++sprite->data[1];
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_8077350(struct Sprite *sprite)
+{
+ s32 x;
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[4];
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[5];
+ if (!GetBattlerSide(gBattleAnimTarget))
+ {
+ x = (u16)gBattleAnimArgs[4] + 30;
+ sprite->pos1.x += x;
+ sprite->pos1.y = gBattleAnimArgs[5] - 20;
+ }
+ else
+ {
+ x = (u16)gBattleAnimArgs[4] - 30;
+ sprite->pos1.x += x;
+ sprite->pos1.y = gBattleAnimArgs[5] - 80;
+ }
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c
new file mode 100644
index 000000000..d74b743e8
--- /dev/null
+++ b/src/battle_anim_sound_tasks.c
@@ -0,0 +1,313 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "sound.h"
+#include "task.h"
+#include "constants/battle_anim.h"
+#include "constants/species.h"
+
+static void sub_80DCE78(u8 taskId);
+static void sub_80DCEE4(u8 taskId);
+static void sub_80DCFE8(u8 taskId);
+static void sub_80DD270(u8 taskId);
+static void sub_80DD390(u8 taskId);
+static void sub_80DD4D4(u8 taskId);
+
+void sub_80DCE10(u8 taskId)
+{
+ s8 pan1, pan2, panIncrement;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
+ pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
+ panIncrement = CalculatePanIncrement(pan1, pan2, 2);
+ gTasks[taskId].data[2] = pan1;
+ gTasks[taskId].data[3] = pan2;
+ gTasks[taskId].data[4] = panIncrement;
+ gTasks[taskId].data[10] = 10;
+ gTasks[taskId].func = sub_80DCE78;
+}
+
+static void sub_80DCE78(u8 taskId)
+{
+ s16 pan = gTasks[taskId].data[2];
+ s8 panIncrement = gTasks[taskId].data[4];
+
+ if (++gTasks[taskId].data[11] == 111)
+ {
+ gTasks[taskId].data[10] = 5;
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].func = sub_80DCEE4;
+ }
+ else
+ {
+ if (++gTasks[taskId].data[10] == 11)
+ {
+ gTasks[taskId].data[10] = 0;
+ PlaySE12WithPanning(gTasks[taskId].data[0], pan);
+ }
+ pan += panIncrement;
+ gTasks[taskId].data[2] = KeepPanInRange(pan, panIncrement);
+ }
+}
+
+static void sub_80DCEE4(u8 taskId)
+{
+ if (++gTasks[taskId].data[10] == 6)
+ {
+ s8 pan;
+
+ gTasks[taskId].data[10] = 0;
+ pan = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
+ PlaySE12WithPanning(gTasks[taskId].data[1], pan);
+ if (++gTasks[taskId].data[11] == 2)
+ DestroyAnimSoundTask(taskId);
+ }
+}
+
+void mas_80DCF38(u8 taskId)
+{
+ u16 songId = gBattleAnimArgs[0];
+ s8 targetPan = gBattleAnimArgs[2];
+ s8 panIncrement = gBattleAnimArgs[3];
+ u8 r10 = gBattleAnimArgs[4];
+ u8 r7 = gBattleAnimArgs[5];
+ u8 r9 = gBattleAnimArgs[6];
+ s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
+
+ targetPan = BattleAnimAdjustPanning(targetPan);
+ panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement);
+ gTasks[taskId].data[0] = songId;
+ gTasks[taskId].data[1] = sourcePan;
+ gTasks[taskId].data[2] = targetPan;
+ gTasks[taskId].data[3] = panIncrement;
+ gTasks[taskId].data[4] = r10;
+ gTasks[taskId].data[5] = r7;
+ gTasks[taskId].data[6] = r9;
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11] = sourcePan;
+ gTasks[taskId].data[12] = r9;
+ gTasks[taskId].func = sub_80DCFE8;
+ sub_80DCFE8(taskId);
+}
+
+static void sub_80DCFE8(u8 taskId)
+{
+ if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6])
+ {
+ gTasks[taskId].data[12] = 0;
+ PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[11]);
+ if (--gTasks[taskId].data[4] == 0)
+ {
+ DestroyAnimSoundTask(taskId);
+ return;
+ }
+ }
+ if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
+ {
+ u16 dPan, oldPan;
+
+ gTasks[taskId].data[10] = 0;
+ dPan = gTasks[taskId].data[3];
+ oldPan = gTasks[taskId].data[11];
+ gTasks[taskId].data[11] = dPan + oldPan;
+ gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
+ }
+}
+
+void sub_80DD06C(u8 taskId)
+{
+ u16 species = SPECIES_NONE;
+ u8 battlerId;
+ s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
+
+ // Get wanted battler.
+ if (gBattleAnimArgs[0] == ANIM_ATTACKER)
+ battlerId = gBattleAnimAttacker;
+ else if (gBattleAnimArgs[0] == ANIM_TARGET)
+ battlerId = gBattleAnimTarget;
+ else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
+ battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
+ else
+ battlerId = BATTLE_PARTNER(gBattleAnimTarget);
+ // Check if battler is visible.
+ if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER)
+ && !IsBattlerSpriteVisible(battlerId))
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ if (species != SPECIES_NONE)
+ PlayCry3(species, pan, 3);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80DD148(u8 taskId)
+{
+ u16 species = SPECIES_NONE;
+ u8 battlerId;
+ s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
+
+ // Get wanted battler.
+ if (gBattleAnimArgs[0] == ANIM_ATTACKER)
+ battlerId = gBattleAnimAttacker;
+ else if (gBattleAnimArgs[0] == ANIM_TARGET)
+ battlerId = gBattleAnimTarget;
+ else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
+ battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
+ else
+ battlerId = BATTLE_PARTNER(gBattleAnimTarget);
+ // Check if battler is visible.
+ if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER)
+ && !IsBattlerSpriteVisible(battlerId))
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[1] = species;
+ gTasks[taskId].data[2] = pan;
+ if (species != SPECIES_NONE)
+ {
+ if (gBattleAnimArgs[1] == TASK_NONE)
+ PlayCry3(species, pan, 9);
+ else
+ PlayCry3(species, pan, 7);
+ gTasks[taskId].func = sub_80DD270;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80DD270(u8 taskId)
+{
+ u16 species = gTasks[taskId].data[1];
+ s8 pan = gTasks[taskId].data[2];
+
+ if (gTasks[taskId].data[9] < 2)
+ {
+ ++gTasks[taskId].data[9];
+ }
+ else if (gTasks[taskId].data[0] == TASK_NONE)
+ {
+ if (!IsCryPlaying())
+ {
+ PlayCry3(species, pan, 10);
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else if (!IsCryPlaying())
+ {
+ PlayCry3(species, pan, 8);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80DD2F4(u8 taskId)
+{
+ if (gTasks[taskId].data[9] < 2)
+ ++gTasks[taskId].data[9];
+ else if (!IsCryPlaying())
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80DD334(u8 taskId)
+{
+ u16 species;
+ s8 pan;
+
+ pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
+ species = gAnimBattlerSpecies[gBattleAnimAttacker];
+ gTasks[taskId].data[1] = species;
+ gTasks[taskId].data[2] = pan;
+ if (species != SPECIES_NONE)
+ {
+ PlayCry3(species, pan, 4);
+ gTasks[taskId].func = sub_80DD390;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80DD390(u8 taskId)
+{
+
+ if (gTasks[taskId].data[9] < 2)
+ {
+ ++gTasks[taskId].data[9];
+ }
+ else if (!IsCryPlaying())
+ {
+ u16 species = gTasks[taskId].data[1];
+ s8 pan = gTasks[taskId].data[2];
+
+ PlayCry3(species, pan, 6);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80DD3DC(u8 taskId)
+{
+ u16 songId = gBattleAnimArgs[0];
+ s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
+
+ PlaySE1WithPanning(songId, pan);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80DD410(u8 taskId)
+{
+ u16 songId = gBattleAnimArgs[0];
+ s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
+
+ PlaySE2WithPanning(songId, pan);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80DD444(u8 taskId)
+{
+ s8 targetPan = gBattleAnimArgs[1];
+ s8 panIncrement = gBattleAnimArgs[2];
+ u16 r9 = gBattleAnimArgs[3];
+ s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[0]);
+
+ targetPan = BattleAnimAdjustPanning(targetPan);
+ panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement);
+ gTasks[taskId].data[1] = sourcePan;
+ gTasks[taskId].data[2] = targetPan;
+ gTasks[taskId].data[3] = panIncrement;
+ gTasks[taskId].data[5] = r9;
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11] = sourcePan;
+ gTasks[taskId].func = sub_80DD4D4;
+ sub_80DD4D4(taskId);
+}
+
+static void sub_80DD4D4(u8 taskId)
+{
+ u16 oldPan, panIncrement = gTasks[taskId].data[3];
+
+ if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
+ {
+ gTasks[taskId].data[10] = 0;
+ oldPan = gTasks[taskId].data[11];
+ gTasks[taskId].data[11] = panIncrement + oldPan;
+ gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
+ }
+ gUnknown_2037F24 = gTasks[taskId].data[11];
+ if (gTasks[taskId].data[11] == gTasks[taskId].data[2])
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
new file mode 100644
index 000000000..14c5ef6c8
--- /dev/null
+++ b/src/battle_anim_utility_funcs.c
@@ -0,0 +1,946 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "malloc.h"
+#include "palette.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "util.h"
+#include "constants/songs.h"
+
+struct AnimStatsChangeData
+{
+ u8 battler1;
+ u8 battler2;
+ u8 higherPriority;
+ s16 data[8];
+ u16 species;
+};
+
+static void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes);
+static void AnimTask_BlendSpriteColor_Step2(u8 taskId);
+static void sub_80BAB78(u8 taskId);
+static void sub_80BABD0(u8 taskId);
+static void sub_80BACA8(struct Sprite *sprite);
+static void sub_80BAF38(u8 taskId);
+static void sub_80BB0D8(u8 taskId);
+static void sub_80BB2A0(u8 taskId);
+static void sub_80BB4B8(u8 taskId);
+static void sub_80BB6CC(u8 taskId);
+static void sub_80BB790(u32 selectedPalettes, u16 color);
+static void sub_80BB8A4(u8 taskId);
+static void sub_80BBC2C(u8 taskId);
+static void sub_80BC19C(u8 taskId);
+
+static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = NULL;
+
+static const u16 gUnknown_83E7CC8[] = { RGB(31, 31, 31) };
+const u8 gUnknown_83E7CCA[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
+const u8 gUnknown_83E7CCE[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT };
+
+void sub_80BA7F8(u8 taskId)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
+
+ selectedPalettes |= sub_8075CB8((gBattleAnimArgs[0] >> 7) & 1,
+ (gBattleAnimArgs[0] >> 8) & 1,
+ (gBattleAnimArgs[0] >> 9) & 1,
+ (gBattleAnimArgs[0] >> 10) & 1);
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+void sub_80BA83C(u8 taskId)
+{
+ u8 battler;
+ u32 selectedPalettes;
+ u8 animBattlers[2];
+
+ animBattlers[1] = 0xFF;
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(1);
+ switch (gBattleAnimArgs[0])
+ {
+ case 2:
+ selectedPalettes = 0;
+ // fall through
+ case 0:
+ animBattlers[0] = gBattleAnimAttacker;
+ break;
+ case 3:
+ selectedPalettes = 0;
+ // fall through
+ case 1:
+ animBattlers[0] = gBattleAnimTarget;
+ break;
+ case 4:
+ animBattlers[0] = gBattleAnimAttacker;
+ animBattlers[1] = gBattleAnimTarget;
+ break;
+ case 5:
+ animBattlers[0] = 0xFF;
+ break;
+ case 6:
+ selectedPalettes = 0;
+ animBattlers[0] = BATTLE_PARTNER(gBattleAnimAttacker);
+ break;
+ case 7:
+ selectedPalettes = 0;
+ animBattlers[0] = BATTLE_PARTNER(gBattleAnimTarget);
+ break;
+ }
+ for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler)
+ {
+ if (battler != animBattlers[0]
+ && battler != animBattlers[1]
+ && IsBattlerSpriteVisible(battler))
+ selectedPalettes |= 0x10000 << sub_8075D80(battler);
+ }
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+void AnimTask_SetCamouflageBlend(u8 taskId)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
+
+ switch (gBattleTerrain)
+ {
+ case BATTLE_TERRAIN_GRASS:
+ gBattleAnimArgs[4] = RGB(12, 24, 2);
+ break;
+ case BATTLE_TERRAIN_LONG_GRASS:
+ gBattleAnimArgs[4] = RGB(0, 15, 2);
+ break;
+ case BATTLE_TERRAIN_SAND:
+ gBattleAnimArgs[4] = RGB(30, 24, 11);
+ break;
+ case BATTLE_TERRAIN_UNDERWATER:
+ gBattleAnimArgs[4] = RGB(0, 0, 18);
+ break;
+ case BATTLE_TERRAIN_WATER:
+ gBattleAnimArgs[4] = RGB(11, 22, 31);
+ break;
+ case BATTLE_TERRAIN_POND:
+ gBattleAnimArgs[4] = RGB(11, 22, 31);
+ break;
+ case BATTLE_TERRAIN_MOUNTAIN:
+ gBattleAnimArgs[4] = RGB(22, 16, 10);
+ break;
+ case BATTLE_TERRAIN_CAVE:
+ gBattleAnimArgs[4] = RGB(14, 9, 3);
+ break;
+ case BATTLE_TERRAIN_BUILDING:
+ gBattleAnimArgs[4] = RGB(31, 31, 31);
+ break;
+ case BATTLE_TERRAIN_PLAIN:
+ gBattleAnimArgs[4] = RGB(31, 31, 31);
+ break;
+ }
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+void AnimTask_BlendParticle(u8 taskId)
+{
+ u8 paletteIndex = IndexOfSpritePaletteTag(gBattleAnimArgs[0]);
+ u32 selectedPalettes = 1 << (paletteIndex + 16);
+
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+static void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes)
+{
+ gTasks[taskId].data[0] = selectedPalettes;
+ gTasks[taskId].data[1] = selectedPalettes >> 16;
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ gTasks[taskId].data[4] = gBattleAnimArgs[3];
+ gTasks[taskId].data[5] = gBattleAnimArgs[4];
+ gTasks[taskId].data[10] = gBattleAnimArgs[2];
+ gTasks[taskId].func = AnimTask_BlendSpriteColor_Step2;
+ gTasks[taskId].func(taskId);
+}
+
+static void AnimTask_BlendSpriteColor_Step2(u8 taskId)
+{
+ u32 selectedPalettes;
+ u16 singlePaletteMask = 0;
+
+ if (gTasks[taskId].data[9] == gTasks[taskId].data[2])
+ {
+ gTasks[taskId].data[9] = 0;
+ selectedPalettes = gTasks[taskId].data[0] | (gTasks[taskId].data[1] << 16);
+ while (selectedPalettes)
+ {
+ if (selectedPalettes & 1)
+ BlendPalette(singlePaletteMask, 16, gTasks[taskId].data[10], gTasks[taskId].data[5]);
+ singlePaletteMask += 0x10;
+ selectedPalettes >>= 1;
+ }
+ if (gTasks[taskId].data[10] < gTasks[taskId].data[4])
+ ++gTasks[taskId].data[10];
+ else if (gTasks[taskId].data[10] > gTasks[taskId].data[4])
+ --gTasks[taskId].data[10];
+ else
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ ++gTasks[taskId].data[9];
+ }
+}
+
+void sub_80BAB38(u8 taskId)
+{
+ BeginHardwarePaletteFade(gBattleAnimArgs[0],
+ gBattleAnimArgs[1],
+ gBattleAnimArgs[2],
+ gBattleAnimArgs[3],
+ gBattleAnimArgs[4]);
+ gTasks[taskId].func = sub_80BAB78;
+}
+
+static void sub_80BAB78(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BAB98(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = gBattleAnimArgs[0];
+ task->data[1] = 0;
+ task->data[2] = gBattleAnimArgs[1];
+ task->data[3] = gBattleAnimArgs[2];
+ task->data[4] = gBattleAnimArgs[3];
+ task->data[5] = 0;
+ task->func = sub_80BABD0;
+}
+static void sub_80BABD0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (task->data[4])
+ {
+ if (task->data[1])
+ {
+ --task->data[1];
+ }
+ else
+ {
+ task->data[6] = CloneBattlerSpriteWithBlend(task->data[0]);
+ if (task->data[6] >= 0)
+ {
+ gSprites[task->data[6]].oam.priority = task->data[0] ? 1 : 2;
+ gSprites[task->data[6]].data[0] = task->data[3];
+ gSprites[task->data[6]].data[1] = taskId;
+ gSprites[task->data[6]].data[2] = 5;
+ gSprites[task->data[6]].callback = sub_80BACA8;
+ ++task->data[5];
+ }
+ --task->data[4];
+ task->data[1] = task->data[2];
+ }
+ }
+ else if (task->data[5] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80BACA8(struct Sprite *sprite)
+{
+ if (sprite->data[0])
+ {
+ --sprite->data[0];
+ }
+ else
+ {
+ --gTasks[sprite->data[1]].data[sprite->data[2]];
+ obj_delete_but_dont_free_vram(sprite);
+ }
+}
+
+void sub_80BACEC(u8 taskId)
+{
+ u16 species;
+ s32 newSpriteId;
+ u16 var0;
+ u16 bg1Cnt;
+ u8 spriteId;
+ struct BattleAnimBgData animBgData;
+
+ var0 = 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_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_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 12));
+ bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
+ ((struct BgCnt *)&bg1Cnt)->priority = 0;
+ ((struct BgCnt *)&bg1Cnt)->screenSize = 0;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ if (!IsContest())
+ {
+ ((struct BgCnt *)&bg1Cnt)->charBaseBlock = 1;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ }
+ if (IsDoubleBattle() && !IsContest())
+ {
+ if (GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_OPPONENT_RIGHT
+ || GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_PLAYER_LEFT)
+ {
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)) == TRUE)
+ {
+ gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority -= 1;
+ ((struct BgCnt *)&bg1Cnt)->priority = 1;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ var0 = 1;
+ }
+ }
+ }
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ spriteId = GetAnimBattlerSpriteId(0);
+ newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species);
+ sub_80752A0(&animBgData);
+ AnimLoadCompressedBgTilemap(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_tilemap);
+ if (IsContest())
+ sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0);
+ AnimLoadCompressedBgGfx(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_sheet, animBgData.tilesOffset);
+ LoadPalette(gUnknown_83E7CC8, animBgData.paletteId * 16 + 1, 2);
+ gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32;
+ gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
+ gTasks[taskId].data[0] = newSpriteId;
+ gTasks[taskId].data[6] = var0;
+ gTasks[taskId].func = sub_80BAF38;
+}
+
+static void sub_80BAF38(u8 taskId)
+{
+ struct BattleAnimBgData animBgData;
+ struct Sprite *sprite;
+ u16 bg1Cnt;
+
+ gTasks[taskId].data[10] += 4;
+ gBattle_BG1_Y -= 4;
+ if (gTasks[taskId].data[10] == 64)
+ {
+ gTasks[taskId].data[10] = 0;
+ gBattle_BG1_Y += 64;
+ if (++gTasks[taskId].data[11] == 4)
+ {
+ sub_8073128(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())
+ {
+ bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
+ ((struct BgCnt *)&bg1Cnt)->charBaseBlock = 0;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ }
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ sprite = &gSprites[GetAnimBattlerSpriteId(0)]; // unused
+ sprite = &gSprites[gTasks[taskId].data[0]];
+ DestroySprite(sprite);
+ sub_80752A0(&animBgData);
+ sub_8075358(animBgData.bgId);
+ if (gTasks[taskId].data[6] == 1)
+ ++gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority;
+ gBattle_BG1_Y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_80BB088(u8 taskId)
+{
+ u8 i;
+
+ sAnimStatsChangeData = AllocZeroed(sizeof(struct AnimStatsChangeData));
+ for (i = 0; i < 8; ++i)
+ sAnimStatsChangeData->data[i] = gBattleAnimArgs[i];
+ gTasks[taskId].func = sub_80BB0D8;
+}
+
+static void sub_80BB0D8(u8 taskId)
+{
+ if (sAnimStatsChangeData->data[2] == 0)
+ sAnimStatsChangeData->battler1 = gBattleAnimAttacker;
+ else
+ sAnimStatsChangeData->battler1 = gBattleAnimTarget;
+ sAnimStatsChangeData->battler2 = BATTLE_PARTNER(sAnimStatsChangeData->battler1);
+ if (IsContest() || (sAnimStatsChangeData->data[3] && !IsBattlerSpriteVisible(sAnimStatsChangeData->battler2)))
+ sAnimStatsChangeData->data[3] = 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_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_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+ if (IsDoubleBattle() && sAnimStatsChangeData->data[3] == 0)
+ {
+ if (GetBattlerPosition(sAnimStatsChangeData->battler1) == B_POSITION_OPPONENT_RIGHT
+ || GetBattlerPosition(sAnimStatsChangeData->battler1) == B_POSITION_PLAYER_LEFT)
+ {
+ if (IsBattlerSpriteVisible(sAnimStatsChangeData->battler2) == TRUE)
+ {
+ gSprites[gBattlerSpriteIds[sAnimStatsChangeData->battler2]].oam.priority -= 1;
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ sAnimStatsChangeData->higherPriority = 1;
+ }
+ }
+ }
+ if (GetBattlerSide(sAnimStatsChangeData->battler1) != B_SIDE_PLAYER)
+ sAnimStatsChangeData->species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[sAnimStatsChangeData->battler1]], MON_DATA_SPECIES);
+ else
+ sAnimStatsChangeData->species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[sAnimStatsChangeData->battler1]], MON_DATA_SPECIES);
+ gTasks[taskId].func = sub_80BB2A0;
+}
+
+static void sub_80BB2A0(u8 taskId)
+{
+ struct BattleAnimBgData animBgData;
+ u8 spriteId, newSpriteId = 0;
+ u8 battlerSpriteId;
+
+ battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler1];
+ spriteId = sub_8076E34(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species);
+ if (sAnimStatsChangeData->data[3])
+ {
+ battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
+ newSpriteId = sub_8076E34(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species);
+ }
+ sub_80752A0(&animBgData);
+ if (sAnimStatsChangeData->data[0] == 0)
+ AnimLoadCompressedBgTilemap(animBgData.bgId, gBattleStatMask1_Tilemap);
+ else
+ AnimLoadCompressedBgTilemap(animBgData.bgId, gBattleStatMask2_Tilemap);
+ if (IsContest())
+ sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0);
+ AnimLoadCompressedBgGfx(animBgData.bgId, gBattleStatMask_Gfx, animBgData.tilesOffset);
+ switch (sAnimStatsChangeData->data[1])
+ {
+ case 0:
+ LoadCompressedPalette(gBattleStatMask2_Pal, animBgData.paletteId * 16, 32);
+ break;
+ case 1:
+ LoadCompressedPalette(gBattleStatMask1_Pal, animBgData.paletteId * 16, 32);
+ break;
+ case 2:
+ LoadCompressedPalette(gBattleStatMask3_Pal, animBgData.paletteId * 16, 32);
+ break;
+ case 3:
+ LoadCompressedPalette(gBattleStatMask4_Pal, animBgData.paletteId * 16, 32);
+ break;
+ case 4:
+ LoadCompressedPalette(gBattleStatMask6_Pal, animBgData.paletteId * 16, 32);
+ break;
+ case 5:
+ LoadCompressedPalette(gBattleStatMask7_Pal, animBgData.paletteId * 16, 32);
+ break;
+ case 6:
+ LoadCompressedPalette(gBattleStatMask8_Pal, animBgData.paletteId * 16, 32);
+ break;
+ default:
+ LoadCompressedPalette(gBattleStatMask5_Pal, animBgData.paletteId * 16, 32);
+ break;
+ }
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ if (sAnimStatsChangeData->data[0] == 1)
+ {
+ gBattle_BG1_X = 64;
+ gTasks[taskId].data[1] = -3;
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 3;
+ }
+
+ if (sAnimStatsChangeData->data[4] == 0)
+ {
+ gTasks[taskId].data[4] = 10;
+ gTasks[taskId].data[5] = 20;
+ }
+ else
+ {
+ gTasks[taskId].data[4] = 13;
+ gTasks[taskId].data[5] = 30;
+ }
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[2] = sAnimStatsChangeData->data[3];
+ gTasks[taskId].data[3] = newSpriteId;
+ gTasks[taskId].data[6] = sAnimStatsChangeData->higherPriority;
+ gTasks[taskId].data[7] = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
+ gTasks[taskId].func = sub_80BB4B8;
+ if (sAnimStatsChangeData->data[0] == 0)
+ PlaySE12WithPanning(SE_W287, BattleAnimAdjustPanning2(PAN_SIDE_PLAYER));
+ else
+ PlaySE12WithPanning(SE_W287B, BattleAnimAdjustPanning2(PAN_SIDE_PLAYER));
+}
+
+static void sub_80BB4B8(u8 taskId)
+{
+ gBattle_BG1_Y += gTasks[taskId].data[1];
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (gTasks[taskId].data[11]++ > 0)
+ {
+ 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] == gTasks[taskId].data[4])
+ ++gTasks[taskId].data[15];
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[10] == gTasks[taskId].data[5])
+ ++gTasks[taskId].data[15];
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ > 0)
+ {
+ 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_8073128(0);
+ ++gTasks[taskId].data[15];
+ }
+ }
+ break;
+ case 3:
+ 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, 0);
+ DestroySprite(&gSprites[gTasks[taskId].data[0]]);
+ if (gTasks[taskId].data[2])
+ DestroySprite(&gSprites[gTasks[taskId].data[3]]);
+ if (gTasks[taskId].data[6] == 1)
+ ++gSprites[gTasks[taskId].data[7]].oam.priority;
+ Free(sAnimStatsChangeData);
+ sAnimStatsChangeData = NULL;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80BB660(u8 taskId)
+{
+ u32 selectedPalettes = sub_8075CB8(1, 1, 1, 1);
+
+ sub_80BB790(selectedPalettes, 0);
+ gTasks[taskId].data[14] = selectedPalettes >> 16;
+ selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0) & 0xFFFF;
+ sub_80BB790(selectedPalettes, 0xFFFF);
+ gTasks[taskId].data[15] = selectedPalettes;
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].func = sub_80BB6CC;
+}
+
+static void sub_80BB6CC(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 6)
+ {
+ task->data[1] = 0;
+ task->data[2] = 16;
+ ++task->data[0];
+ }
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ --task->data[2];
+ for (i = 0; i < 16; ++i)
+ {
+ if ((task->data[15] >> i) & 1)
+ {
+ u16 paletteOffset = i * 16;
+ BlendPalette(paletteOffset, 16, task->data[2], 0xFFFF);
+ }
+
+ if ((task->data[14] >> i) & 1)
+ {
+ u16 paletteOffset = i * 16 + 0x100;
+ BlendPalette(paletteOffset, 16, task->data[2], 0);
+ }
+ }
+
+ if (task->data[2] == 0)
+ ++task->data[0];
+ }
+ break;
+ case 2:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80BB790(u32 selectedPalettes, u16 color)
+{
+ u16 i, curOffset, paletteOffset;
+
+ for (i = 0; i < 32; selectedPalettes >>= 1, ++i)
+ if (selectedPalettes & 1)
+ for (curOffset = i * 16, paletteOffset = curOffset; curOffset < paletteOffset + 16; ++curOffset)
+ gPlttBufferFaded[curOffset] = color;
+}
+
+void sub_80BB7DC(u8 taskId)
+{
+ s32 j;
+ u32 battler, selectedPalettes = 0;
+
+ for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler)
+ if (gBattleAnimAttacker != battler)
+ selectedPalettes |= 1 << (battler + 16);
+ for (j = 5; j != 0; --j)
+ gBattleAnimArgs[j] = gBattleAnimArgs[j - 1];
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+void sub_80BB82C(u8 taskId)
+{
+ u8 newTaskId;
+
+ sub_8075458(0);
+ newTaskId = CreateTask(sub_80BB8A4, 5);
+ if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ }
+ gTasks[newTaskId].data[1] = gBattleAnimArgs[0];
+ gTasks[newTaskId].data[2] = gBattleAnimArgs[1];
+ gTasks[newTaskId].data[3] = gBattleAnimArgs[3];
+ ++gTasks[newTaskId].data[0];
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_80BB8A4(u8 taskId)
+{
+ gTasks[taskId].data[10] += gTasks[taskId].data[1];
+ gTasks[taskId].data[11] += gTasks[taskId].data[2];
+ gBattle_BG3_X += gTasks[taskId].data[10] >> 8;
+ gBattle_BG3_Y += gTasks[taskId].data[11] >> 8;
+ gTasks[taskId].data[10] &= 0xFF;
+ gTasks[taskId].data[11] &= 0xFF;
+ if (gBattleAnimArgs[7] == gTasks[taskId].data[3])
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ sub_8075458(1);
+ DestroyTask(taskId);
+ }
+}
+
+void AnimTask_GetAttackerSide(u8 taskId)
+{
+ gBattleAnimArgs[7] = GetBattlerSide(gBattleAnimAttacker);
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_GetTargetSide(u8 taskId)
+{
+ gBattleAnimArgs[7] = GetBattlerSide(gBattleAnimTarget);
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_GetTargetIsAttackerPartner(u8 taskId)
+{
+ gBattleAnimArgs[7] = BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BB9B0(u8 taskId)
+{
+ u16 battler;
+
+ for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler)
+ if (battler != gBattleAnimAttacker && IsBattlerSpriteVisible(battler))
+ gSprites[gBattlerSpriteIds[battler]].invisible = gBattleAnimArgs[0];
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BBA20(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette)
+{
+ u16 species;
+ u8 spriteId, newSpriteId = 0;
+ u16 bg1Cnt;
+ struct BattleAnimBgData animBgData;
+ u8 battler2 = BATTLE_PARTNER(battler1);
+
+ if (IsContest() || (arg4 && !IsBattlerSpriteVisible(battler2)))
+ arg4 = 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_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_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
+ ((vBgCnt *)&bg1Cnt)->priority = 0;
+ ((vBgCnt *)&bg1Cnt)->screenSize = 0;
+ ((vBgCnt *)&bg1Cnt)->areaOverflowMode = 1;
+ if (!IsContest())
+ ((vBgCnt *)&bg1Cnt)->charBaseBlock = 1;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ if (GetBattlerSide(battler1) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
+ spriteId = sub_8076E34(battler1, gBattlerSpriteIds[battler1], species);
+ if (arg4)
+ newSpriteId = sub_8076E34(battler2, gBattlerSpriteIds[battler2], species);
+ sub_80752A0(&animBgData);
+ AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap);
+ if (IsContest())
+ sub_80730C0(animBgData.paletteId, animBgData.bgTilemap, 0, 0);
+ AnimLoadCompressedBgGfx(animBgData.bgId, gfx, animBgData.tilesOffset);
+ LoadCompressedPalette(palette, animBgData.paletteId * 16, 32);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gTasks[taskId].data[1] = arg2;
+ gTasks[taskId].data[4] = arg5;
+ gTasks[taskId].data[5] = arg7;
+ gTasks[taskId].data[6] = arg6;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[2] = arg4;
+ gTasks[taskId].data[3] = newSpriteId;
+ gTasks[taskId].func = sub_80BBC2C;
+}
+
+static void sub_80BBC2C(u8 taskId)
+{
+ gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1];
+ if (gTasks[taskId].data[1] < 0)
+ gBattle_BG1_Y -= gTasks[taskId].data[13] >> 8;
+ else
+ gBattle_BG1_Y += gTasks[taskId].data[13] >> 8;
+ gTasks[taskId].data[13] &= 0xFF;
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6])
+ {
+ 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] == gTasks[taskId].data[4])
+ ++gTasks[taskId].data[15];
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[10] == gTasks[taskId].data[5])
+ ++gTasks[taskId].data[15];
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6])
+ {
+ 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_8073128(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())
+ {
+ u16 bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
+ ((vBgCnt *)&bg1Cnt)->charBaseBlock = 0;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ }
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroySprite(&gSprites[gTasks[taskId].data[0]]);
+ if (gTasks[taskId].data[2])
+ DestroySprite(&gSprites[gTasks[taskId].data[3]]);
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+void AnimTask_GetBattleTerrain(u8 taskId)
+{
+ gBattleAnimArgs[0] = gBattleTerrain;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BBE10(u8 taskId)
+{
+ gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BBE3C(u8 taskId)
+{
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BBE6C(u8 taskId)
+{
+ u32 selectedPalettes;
+ s32 paletteIndex = 0;
+
+ if (gBattleAnimArgs[0] == 0)
+ for (selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0);
+ (selectedPalettes & 1) == 0;
+ ++paletteIndex)
+ selectedPalettes >>= 1;
+ else if (gBattleAnimArgs[0] == 1)
+ paletteIndex = gBattleAnimAttacker + 16;
+ else if (gBattleAnimArgs[0] == 2)
+ paletteIndex = gBattleAnimTarget + 16;
+ memcpy(&gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BBF08(u8 taskId)
+{
+ u32 selectedPalettes;
+ s32 paletteIndex = 0;
+
+ if (gBattleAnimArgs[0] == 0)
+ for (selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0);
+ (selectedPalettes & 1) == 0;
+ ++paletteIndex)
+ selectedPalettes >>= 1;
+ else if (gBattleAnimArgs[0] == 1)
+ paletteIndex = gBattleAnimAttacker + 16;
+ else if (gBattleAnimArgs[0] == 2)
+ paletteIndex = gBattleAnimTarget + 16;
+ memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], 32);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BBFA4(u8 taskId)
+{
+ u32 selectedPalettes;
+ s32 paletteIndex = 0;
+
+ if (gBattleAnimArgs[0] == 0)
+ for (selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0);
+ (selectedPalettes & 1) == 0;
+ ++paletteIndex)
+ selectedPalettes >>= 1;
+ else if (gBattleAnimArgs[0] == 1)
+ paletteIndex = gBattleAnimAttacker + 16;
+ else if (gBattleAnimArgs[0] == 2)
+ paletteIndex = gBattleAnimTarget + 16;
+ memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gPlttBufferFaded[paletteIndex * 16], 32);
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_IsContest(u8 taskId)
+{
+ if (IsContest())
+ gBattleAnimArgs[7] = 1;
+ else
+ gBattleAnimArgs[7] = 0;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BC060(u8 taskId)
+{
+ gBattleAnimAttacker = gBattlerTarget;
+ gBattleAnimTarget = gEffectBattler;
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_IsTargetSameSide(u8 taskId)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
+ gBattleAnimArgs[7] = 1;
+ else
+ gBattleAnimArgs[7] = 0;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BC0DC(u8 taskId)
+{
+ gBattleAnimTarget = gBattlerTarget;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BC0FC(u8 taskId)
+{
+ gBattleAnimAttacker = gBattlerAttacker;
+ gBattleAnimTarget = gEffectBattler;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80BC12C(u8 taskId)
+{
+ if (IsContest())
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[0] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible;
+ gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = 1;
+ gTasks[taskId].func = sub_80BC19C;
+ --gAnimVisualTaskCount;
+ }
+}
+
+static void sub_80BC19C(u8 taskId)
+{
+ if (gBattleAnimArgs[7] == 0x1000)
+ {
+ gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = (u8)gTasks[taskId].data[0] & 1;
+ DestroyTask(taskId);
+ }
+}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 0d827c8db..a9bb5bc6e 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -1191,7 +1191,7 @@ static void sub_80303A8(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u8 battlerId = tExpTask_battler;
- u16 v5 = sub_80768B0(battlerId);
+ u16 v5 = GetBattlerSpriteBGPriorityRank(battlerId);
bool32 v6 = ((v5 ^ BIT_SIDE)) != B_SIDE_PLAYER;
struct Sprite *sprite = &gSprites[gBattlerSpriteIds[battlerId]];
@@ -1222,7 +1222,7 @@ static void sub_80303A8(u8 taskId)
u32 battlerIdAlt = battlerId;
bool32 v6Alt = v6;
- sub_8072E48(battlerIdAlt, v6Alt);
+ MoveBattlerSpriteToBG(battlerIdAlt, v6Alt);
}
++data[15];
break;
diff --git a/src/battle_intro.c b/src/battle_intro.c
new file mode 100644
index 000000000..93141f2ca
--- /dev/null
+++ b/src/battle_intro.c
@@ -0,0 +1,495 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.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"
+
+static EWRAM_DATA u16 sBgCnt = 0;
+
+extern const u8 gUnknown_83E7CCA[];
+extern const u8 gUnknown_83E7CCE[];
+
+static void BattleIntroSlide1(u8 taskId);
+static void BattleIntroSlide2(u8 taskId);
+static void BattleIntroSlide3(u8 taskId);
+static void BattleIntroSlideLink(u8 taskId);
+
+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_83E7CCA[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_83E7CCA[bgId], sBgCnt);
+ }
+}
+
+s32 GetAnimBgAttribute(u8 bgId, u8 attributeId)
+{
+ u16 bgCnt;
+
+ if (bgId < 4)
+ {
+ bgCnt = GetGpuReg(gUnknown_83E7CCE[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_LINK)
+ {
+ taskId = CreateTask(BattleIntroSlideLink, 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_80BC41C(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)
+{
+ s32 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];
+ while (i < 160)
+ 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_ATTR_CHARBASEINDEX, 0);
+ SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 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_80BC41C(taskId);
+ break;
+ }
+}
+
+static void BattleIntroSlide2(u8 taskId)
+{
+ s32 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];
+ while (i < 160)
+ 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_ATTR_CHARBASEINDEX, 0);
+ SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 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_80BC41C(taskId);
+ break;
+ }
+ if (gTasks[taskId].data[0] != 4)
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0));
+}
+
+static void BattleIntroSlide3(u8 taskId)
+{
+ s32 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)
+ {
+ 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];
+ while (i < 160)
+ 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_ATTR_CHARBASEINDEX, 0);
+ SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 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_80BC41C(taskId);
+ break;
+ }
+ if (gTasks[taskId].data[0] != 4)
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0));
+}
+
+static void BattleIntroSlideLink(u8 taskId)
+{
+ s32 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->linkBattleVsSpriteId_V].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].callback = sub_801182C;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].callback = sub_801182C;
+ 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];
+ while (i < 160)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i++] = -gTasks[taskId].data[2];
+ if (!gTasks[taskId].data[2])
+ {
+ gScanlineEffect.state = 3;
+ ++gTasks[taskId].data[0];
+ SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
+ SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 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_80BC41C(taskId);
+ break;
+ }
+}
+
+void sub_80BCEF4(s32 bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset)
+{
+ s32 i, j;
+ u8 battler = GetBattlerAtPosition(battlerPosition);
+ s32 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);
+ LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0);
+}
+
+// not used
+static void sub_80BCFCC(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
+{
+ s32 i, j, 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 << 10))) = offset++ | (arg4 << 12);
+}
diff --git a/src/battle_transition.c b/src/battle_transition.c
index d391b3ed4..19d76fed1 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -857,14 +857,14 @@ static bool8 BT_Phase2BigPokeball_Init(struct Task *task)
task->tEva = 0;
task-> tTheta = 0;
task-> tAmplitude = 0x4000;
- sTransitionStructPtr->winIn = 0x3F;
+ sTransitionStructPtr->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
sTransitionStructPtr->winOut = 0;
- sTransitionStructPtr->win0H = 240;
- sTransitionStructPtr->win0V = 160;
+ sTransitionStructPtr->win0H = WIN_RANGE(0, 0xF0);
+ sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0);
sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD;
sTransitionStructPtr->bldAlpha = (task->tEvb << 8) | task->tEva;
for (i = 0; i < 160; ++i)
- gScanlineEffectRegBuffers[1][i] = 240;
+ gScanlineEffectRegBuffers[1][i] = 0xF0;
SetVBlankCallback(VBCB_BT_Phase2BigPokeball1);
BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr);
CpuFill16(0, tilemapAddr, 0x800);
@@ -897,7 +897,7 @@ static bool8 BT_Phase2BigPokeball_UpdateWave1IncEva(struct Task *task)
++task->tEva;
task->tInterval = 1; // Broken logic. This makes the condition always TRUE.
}
- sTransitionStructPtr->bldAlpha = (task->tEvb << 8) | task->tEva;
+ sTransitionStructPtr->bldAlpha = BLDALPHA_BLEND(task->tEva, task->tEvb);
// Increment eva until it reaches 50% coeff
if (task->tEva > 15)
++task->tState;
@@ -1148,13 +1148,11 @@ static bool8 BT_Phase2ClockwiseBlackFade_Init(struct Task *task)
BT_InitCtrlBlk();
ScanlineEffect_Clear();
sTransitionStructPtr->winIn = 0;
- sTransitionStructPtr->winOut = 0x3F;
- sTransitionStructPtr->win0H = 0xF0F1;
- sTransitionStructPtr->win0V = 0x00A0;
+ sTransitionStructPtr->winOut = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR;
+ sTransitionStructPtr->win0H = WIN_RANGE(0xF0, 0xF1);
+ sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0);
for (i = 0; i < 160; ++i)
- {
- gScanlineEffectRegBuffers[1][i] = 0xF3F4;
- }
+ gScanlineEffectRegBuffers[1][i] = WIN_RANGE(0xF3, 0xF4);
SetVBlankCallback(VBCB_BT_Phase2ClockwiseBlackFade);
sTransitionStructPtr->trEndPtX = 120;
++task->tState;
@@ -1167,7 +1165,7 @@ static bool8 BT_Phase2ClockwiseBlackFade_Step1(struct Task *task)
BT_DiagonalSegment_InitParams(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->trEndPtX, -1, 1, 1);
do
{
- gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = (sTransitionStructPtr->trCurrentPtX + 1) | 0x7800;
+ gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = WIN_RANGE(0x78, sTransitionStructPtr->trCurrentPtX + 1);
}
while (!BT_DiagonalSegment_ComputePointOnSegment(sTransitionStructPtr->data, TRUE, TRUE));
@@ -1197,7 +1195,7 @@ static bool8 BT_Phase2ClockwiseBlackFade_Step2(struct Task *task)
left = sTransitionStructPtr->trCurrentPtX;
right = 240;
}
- gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = right | (left << 8);
+ gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = WIN_RANGE2(left, right);
if (finished)
break;
finished = BT_DiagonalSegment_ComputePointOnSegment(sTransitionStructPtr->data, TRUE, TRUE);
@@ -1211,7 +1209,7 @@ static bool8 BT_Phase2ClockwiseBlackFade_Step2(struct Task *task)
else
{
while (sTransitionStructPtr->trCurrentPtY < sTransitionStructPtr->trEndPtY)
- gScanlineEffectRegBuffers[0][++sTransitionStructPtr->trCurrentPtY] = right | (left << 8);
+ gScanlineEffectRegBuffers[0][++sTransitionStructPtr->trCurrentPtY] = WIN_RANGE2(left, right);
}
++sTransitionStructPtr->vblankDma;
return FALSE;
@@ -1265,7 +1263,7 @@ static bool8 BT_Phase2ClockwiseBlackFade_Step4(struct Task *task)
left = 120;
right = sTransitionStructPtr->trCurrentPtX;
}
- win0H = right | (left << 8);
+ win0H = WIN_RANGE2(left, right);
gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = win0H;
if (finished)
break;
@@ -1280,7 +1278,7 @@ static bool8 BT_Phase2ClockwiseBlackFade_Step4(struct Task *task)
else
{
while (sTransitionStructPtr->trCurrentPtY > sTransitionStructPtr->trEndPtY)
- gScanlineEffectRegBuffers[0][--sTransitionStructPtr->trCurrentPtY] = right | (left << 8);
+ gScanlineEffectRegBuffers[0][--sTransitionStructPtr->trCurrentPtY] = WIN_RANGE2(left, right);
}
++sTransitionStructPtr->vblankDma;
return FALSE;
@@ -1301,7 +1299,7 @@ static bool8 BT_Phase2ClockwiseBlackFade_Step5(struct Task *task)
left = 0;
right = 240;
}
- gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = right | (left << 8);
+ gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = WIN_RANGE2(left, right);
}
while (!BT_DiagonalSegment_ComputePointOnSegment(sTransitionStructPtr->data, TRUE, TRUE));
sTransitionStructPtr->trEndPtX += 32;
@@ -1431,12 +1429,12 @@ static bool8 BT_Phase2BlackWaveToRight_Init(struct Task *task)
BT_InitCtrlBlk();
ScanlineEffect_Clear();
- sTransitionStructPtr->winIn = 0x3F;
+ sTransitionStructPtr->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
sTransitionStructPtr->winOut = 0;
- sTransitionStructPtr->win0H = 240;
- sTransitionStructPtr->win0V = 160;
+ sTransitionStructPtr->win0H = WIN_RANGE(0, 0xF0);
+ sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0);
for (i = 0; i < 160; ++i)
- gScanlineEffectRegBuffers[1][i] = 242;
+ gScanlineEffectRegBuffers[1][i] = WIN_RANGE(0, 0xF2);
SetVBlankCallback(VBCB_BT_Phase2BlackWaveToRight);
++task->tState;
return TRUE;
@@ -1460,7 +1458,7 @@ static bool8 BT_Phase2BlackWaveToRight_UpdateWave(struct Task *task)
left = 0;
if (left > 240)
left = 240;
- *winVal = (left << 8) | (0xF1);
+ *winVal = WIN_RANGE(left, 0xF1);
if (left < 240)
nextFunc = FALSE;
}
@@ -2529,10 +2527,10 @@ static bool8 BT_Phase2AntiClockwiseSpiral_Init(struct Task *task)
BT_InitCtrlBlk();
ScanlineEffect_Clear();
sTransitionStructPtr->winIn = 0;
- sTransitionStructPtr->winOut = 0x3F;
- sTransitionStructPtr->win0H = 0x7878;
- sTransitionStructPtr->win0V = 0x3070;
- sTransitionStructPtr->win1V = 0x1090;
+ sTransitionStructPtr->winOut = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
+ sTransitionStructPtr->win0H = WIN_RANGE(0x78, 0x78);
+ sTransitionStructPtr->win0V = WIN_RANGE(0x30, 0x70);
+ sTransitionStructPtr->win1V = WIN_RANGE(0x10, 0x90);
sTransitionStructPtr->counter = 0;
sub_80D1F64(0, 0, FALSE);
sub_80D1F64(0, 0, TRUE);
@@ -2665,11 +2663,11 @@ static bool8 BT_Phase2Mugshot_Init(struct Task *task)
task->tTheta = 0;
task->tbg0HOfsOpponent = 1;
task->tbg0HOfsPlayer = 239;
- sTransitionStructPtr->winIn = 0x3F;
- sTransitionStructPtr->winOut = 0x3E;
- sTransitionStructPtr->win0V = 160;
+ sTransitionStructPtr->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
+ sTransitionStructPtr->winOut = WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR;
+ sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0);
for (i = 0; i < 160; ++i)
- gScanlineEffectRegBuffers[1][i] = 0xF0F1;
+ gScanlineEffectRegBuffers[1][i] = WIN_RANGE(0xF0, 0xF1);
SetVBlankCallback(VBCB_BT_Phase2Mugshot1_Slide);
++task->tState;
return FALSE;
@@ -2784,7 +2782,7 @@ static bool8 BT_Phase2Mugshot_WaitForPlayerInPlace(struct Task *task)
DmaStop(0);
memset(gScanlineEffectRegBuffers[0], 0, 320);
memset(gScanlineEffectRegBuffers[1], 0, 320);
- SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 0xF0));
SetGpuReg(REG_OFFSET_BLDY, 0);
++task->tState;
task->tCounter = 0;
@@ -3026,9 +3024,9 @@ static bool8 BT_Phase2SlicedScreen_Init(struct Task *task)
ScanlineEffect_Clear();
task->tAcc = 256;
task->tJerk = 1;
- sTransitionStructPtr->winIn = 0x3F;
+ sTransitionStructPtr->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
sTransitionStructPtr->winOut = 0;
- sTransitionStructPtr->win0V = 160;
+ sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0);
for (i = 0; i < 160; ++i)
{
gScanlineEffectRegBuffers[1][i] = sTransitionStructPtr->bg123HOfs;
@@ -3065,7 +3063,7 @@ static bool8 BT_Phase2SlicedScreen_UpdateOffsets(struct Task *task)
else
{
*ofsBuffer = sTransitionStructPtr->bg123HOfs - task->tSpeed;
- *win0HBuffer = (task->tSpeed << 8) | 0xF1;
+ *win0HBuffer = WIN_RANGE(task->tSpeed, 0xF1);
}
}
if (task->tSpeed > 0xEF)
@@ -3126,9 +3124,9 @@ static bool8 BT_Phase2WhiteFadeInStripes_Init(struct Task *task)
ScanlineEffect_Clear();
sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_LIGHTEN;
sTransitionStructPtr->bldY = 0;
- sTransitionStructPtr->winIn = 0x1E;
- sTransitionStructPtr->winOut = 0x3F;
- sTransitionStructPtr->win0V = 160;
+ sTransitionStructPtr->winIn = WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ;
+ sTransitionStructPtr->winOut = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WININ_WIN0_CLR;
+ sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0);
for (i = 0; i < 160; ++i)
{
gScanlineEffectRegBuffers[1][i] = 0;
@@ -3180,7 +3178,7 @@ static bool8 BT_Phase2WhiteFadeInStripes_Stop(struct Task *task)
sTransitionStructPtr->win0H = 240;
sTransitionStructPtr->bldY = 0;
sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN;
- sTransitionStructPtr->winIn = 0x3F;
+ sTransitionStructPtr->winIn = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WININ_WIN0_CLR;
sTransitionStructPtr->counter = 0;
SetVBlankCallback(VBCB_BT_Phase2WhiteFadeInStripes2);
++task->tState;
@@ -3351,11 +3349,11 @@ static bool8 BT_Phase2BlackDoodles_Init(struct Task *task)
BT_InitCtrlBlk();
ScanlineEffect_Clear();
- sTransitionStructPtr->winIn = 0x3F;
+ sTransitionStructPtr->winIn = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR;
sTransitionStructPtr->winOut = 0;
- sTransitionStructPtr->win0V = 0xA0;
+ sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0);
for (i = 0; i < 160; ++i)
- gScanlineEffectRegBuffers[0][i] = 0x00F0;
+ gScanlineEffectRegBuffers[0][i] = WIN_RANGE(0, 0xF0);
CpuSet(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 160);
SetVBlankCallback(VBCB_BT_Phase2BlackDoodles);
++task->tState;
@@ -3394,7 +3392,7 @@ static bool8 BT_Phase2BlackDoodles_DrawSingleBrush(struct Task *task)
if (right <= left)
right = left;
}
- gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = right | (left << 8);
+ gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] = WIN_RANGE2(left, right);
if (nextFunc)
{
++task->tState;
diff --git a/src/bg.c b/src/bg.c
index 33a462707..4ad2bebd6 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -356,7 +356,6 @@ void ResetBgsAndClearDma3BusyFlags(bool32 enableWindowTileAutoAlloc)
}
}
-#ifdef NONMATCHING
void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates)
{
int i;
@@ -390,121 +389,6 @@ void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numT
}
}
}
-#else
-NAKED
-void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x10\n\
- adds r5, r1, 0\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r2, 24\n\
- lsrs r4, r2, 24\n\
- bl SetBgModeInternal\n\
- bl ResetBgControlStructs\n\
- cmp r4, 0\n\
- beq _08001712\n\
- movs r7, 0\n\
- ldr r0, _08001724 @ =sGpuBgConfigs2\n\
- mov r9, r0\n\
- adds r6, r5, 0\n\
- ldr r2, _08001728 @ =gpu_tile_allocation_map_bg\n\
- mov r10, r2\n\
- mov r8, r4\n\
-_08001688:\n\
- ldr r4, [r6]\n\
- lsls r0, r4, 30\n\
- lsrs r5, r0, 30\n\
- cmp r5, 0x3\n\
- bhi _08001704\n\
- lsls r1, r4, 28\n\
- lsrs r1, 30\n\
- lsls r2, r4, 23\n\
- lsrs r2, 27\n\
- lsls r3, r4, 21\n\
- lsrs r3, 30\n\
- lsls r0, r4, 20\n\
- lsrs r0, 31\n\
- str r0, [sp]\n\
- lsls r0, r4, 18\n\
- lsrs r0, 30\n\
- str r0, [sp, 0x4]\n\
- str r7, [sp, 0x8]\n\
- str r7, [sp, 0xC]\n\
- adds r0, r5, 0\n\
- bl SetBgControlAttributes\n\
- lsls r4, r5, 4\n\
- mov r5, r9\n\
- adds r3, r4, r5\n\
- ldr r2, [r6]\n\
- lsls r2, 8\n\
- lsrs r2, 22\n\
- ldrh r0, [r3]\n\
- ldr r5, _0800172C @ =0xfffffc00\n\
- adds r1, r5, 0\n\
- ands r0, r1\n\
- orrs r0, r2\n\
- strh r0, [r3]\n\
- ldrb r0, [r3, 0x1]\n\
- movs r2, 0x3D\n\
- negs r2, r2\n\
- adds r1, r2, 0\n\
- ands r0, r1\n\
- strb r0, [r3, 0x1]\n\
- ldr r0, [r3]\n\
- ldr r1, _08001730 @ =0x00003fff\n\
- ands r0, r1\n\
- str r0, [r3]\n\
- mov r0, r9\n\
- adds r0, 0x4\n\
- adds r0, r4, r0\n\
- str r7, [r0]\n\
- mov r0, r9\n\
- adds r0, 0x8\n\
- adds r0, r4, r0\n\
- str r7, [r0]\n\
- ldr r5, _08001734 @ =sGpuBgConfigs2 + 0xC\n\
- adds r4, r5\n\
- str r7, [r4]\n\
- ldr r0, [r6]\n\
- lsls r0, 28\n\
- lsrs r0, 30\n\
- lsls r0, 6\n\
- add r0, r10\n\
- movs r1, 0x1\n\
- strb r1, [r0]\n\
-_08001704:\n\
- adds r6, 0x4\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- add r8, r0\n\
- mov r2, r8\n\
- cmp r2, 0\n\
- bne _08001688\n\
-_08001712:\n\
- add sp, 0x10\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\
- .align 2, 0\n\
-_08001724: .4byte sGpuBgConfigs2\n\
-_08001728: .4byte gpu_tile_allocation_map_bg\n\
-_0800172C: .4byte 0xfffffc00\n\
-_08001730: .4byte 0x00003fff\n\
-_08001734: .4byte sGpuBgConfigs2 + 0xC\n\
-.syntax divided");
-}
-#endif // NONMATCHING
void InitBgFromTemplate(const struct BgTemplate *template)
{
diff --git a/src/bug.c b/src/bug.c
new file mode 100644
index 000000000..9b8935744
--- /dev/null
+++ b/src/bug.c
@@ -0,0 +1,462 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "trig.h"
+
+static void sub_80B3FAC(struct Sprite *sprite);
+static void sub_80B407C(struct Sprite *sprite);
+static void AnimTranslateWebThread(struct Sprite *sprite);
+static void sub_80B41F8(struct Sprite *sprite);
+static void sub_80B42C0(struct Sprite *sprite);
+static void AnimTranslateStinger(struct Sprite *sprite);
+static void AnimMissileArc(struct Sprite *sprite);
+static void sub_80B45D8(struct Sprite *sprite);
+static void sub_80B41C0(struct Sprite *sprite);
+static void sub_80B4274(struct Sprite *sprite);
+static void sub_80B42E8(struct Sprite *sprite);
+static void sub_80B4344(struct Sprite *sprite);
+static void AnimMissileArcStep(struct Sprite *sprite);
+
+static const union AffineAnimCmd gUnknown_83E71E8[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 30, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E71F8[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -99, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E7208[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 94, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7218[] =
+{
+ gUnknown_83E71E8,
+ gUnknown_83E71F8,
+ gUnknown_83E7208,
+};
+
+const struct SpriteTemplate gUnknown_83E7224 =
+{
+ .tileTag = ANIM_TAG_HORN_HIT_2,
+ .paletteTag = ANIM_TAG_HORN_HIT_2,
+ .oam = &gOamData_83ACAB8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7218,
+ .callback = sub_80B3FAC,
+};
+
+static const union AffineAnimCmd gUnknown_83E723C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -33, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E724C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E725C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E726C[] =
+{
+ gUnknown_83E723C,
+ gUnknown_83E724C,
+ gUnknown_83E725C,
+};
+
+const struct SpriteTemplate gUnknown_83E7278 =
+{
+ .tileTag = ANIM_TAG_NEEDLE,
+ .paletteTag = ANIM_TAG_NEEDLE,
+ .oam = &gOamData_83ACA30,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E726C,
+ .callback = sub_80B407C,
+};
+
+const struct SpriteTemplate gWebThreadSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_WEB_THREAD,
+ .paletteTag = ANIM_TAG_WEB_THREAD,
+ .oam = &gOamData_83AC9C8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimTranslateWebThread,
+};
+
+const struct SpriteTemplate gUnknown_83E72A8 =
+{
+ .tileTag = ANIM_TAG_STRING,
+ .paletteTag = ANIM_TAG_STRING,
+ .oam = &gOamData_83ACA00,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B41F8,
+};
+
+static const union AffineAnimCmd gUnknown_83E72C0[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+static const union AffineAnimCmd *const gUnknown_83E72D8[] =
+{
+ gUnknown_83E72C0,
+};
+
+const struct SpriteTemplate gSpiderWebSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SPIDER_WEB,
+ .paletteTag = ANIM_TAG_SPIDER_WEB,
+ .oam = &gOamData_83ACBC0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E72D8,
+ .callback = sub_80B42C0,
+};
+
+const struct SpriteTemplate gLinearStingerSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_NEEDLE,
+ .paletteTag = ANIM_TAG_NEEDLE,
+ .oam = &gOamData_83ACA30,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimTranslateStinger,
+};
+
+const struct SpriteTemplate gPinMissileSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_NEEDLE,
+ .paletteTag = ANIM_TAG_NEEDLE,
+ .oam = &gOamData_83ACA30,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMissileArc,
+};
+
+const struct SpriteTemplate gIcicleSpearSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ICICLE_SPEAR,
+ .paletteTag = ANIM_TAG_ICICLE_SPEAR,
+ .oam = &gOamData_83ACA38,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMissileArc,
+};
+
+static const union AffineAnimCmd gUnknown_83E733C[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 18),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 8),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 8),
+ AFFINEANIMCMD_LOOP(5),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7374[] =
+{
+ gUnknown_83E733C,
+};
+
+const struct SpriteTemplate gUnknown_83E7378 =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gOamData_83ACB60,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7374,
+ .callback = sub_80B45D8,
+};
+
+static void sub_80B3FAC(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ StartSpriteAffineAnim(sprite, 2);
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+ else if (!GetBattlerSide(gBattleAnimTarget))
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+static void sub_80B407C(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ StartSpriteAffineAnim(sprite, 2);
+ }
+ else if (!GetBattlerSide(gBattleAnimTarget))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Creates a single web thread that travels from attacker to target.
+// Used by MOVE_STRING_SHOT and MOVE_SPIDER_WEB in their first move phase.
+// arg 0: x
+// arg 1: y
+// arg 2: controls the left-to-right movement
+// arg 3: amplitude
+// arg 4: if targets both opponents
+static void AnimTranslateWebThread(struct Sprite *sprite)
+{
+ if (IsContest())
+ gBattleAnimArgs[2] /= 2;
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+ if (!gBattleAnimArgs[4])
+ {
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ }
+ else
+ {
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
+ }
+ sub_8075678(sprite);
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_80B41C0;
+}
+
+static void sub_80B41C0(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ return;
+ }
+ sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]);
+ sprite->data[6] = (sprite->data[6] + 13) & 0xFF;
+}
+
+static void sub_80B41F8(struct Sprite *sprite)
+{
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ if (GetBattlerSide(gBattleAnimAttacker))
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ if (!GetBattlerSide(gBattleAnimTarget))
+ sprite->pos1.y += 8;
+ sprite->callback = sub_80B4274;
+}
+
+static void sub_80B4274(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 3)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ }
+ if (++sprite->data[1] == 51)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_80B42C0(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+ sprite->data[0] = 16;
+ sprite->callback = sub_80B42E8;
+}
+
+static void sub_80B42E8(struct Sprite *sprite)
+{
+ if (sprite->data[2] < 20)
+ {
+ ++sprite->data[2];
+ }
+ else if (sprite->data[1]++ & 1)
+ {
+ --sprite->data[0];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0]));
+
+ if (sprite->data[0] == 0)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80B4344;
+ }
+ }
+}
+
+static void sub_80B4344(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimSprite(sprite);
+}
+
+// Translates a stinger sprite linearly to a destination location. The sprite is
+// initially rotated so that it appears to be traveling in a straight line.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+static void AnimTranslateStinger(struct Sprite *sprite)
+{
+ s16 lVarX, lVarY;
+ u16 rot;
+
+ if (IsContest())
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+ else if (GetBattlerSide(gBattleAnimAttacker))
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+ if (!IsContest() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
+ {
+ if (GetBattlerPosition(gBattleAnimTarget) == B_POSITION_PLAYER_LEFT
+ || GetBattlerPosition(gBattleAnimTarget) == B_POSITION_OPPONENT_LEFT)
+ {
+ s16 temp1, temp2;
+
+ temp1 = gBattleAnimArgs[2];
+ gBattleAnimArgs[2] = -temp1;
+
+ temp2 = gBattleAnimArgs[0];
+ gBattleAnimArgs[0] = -temp2;
+ }
+ }
+ InitSpritePosToAnimAttacker(sprite, 1);
+ lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
+ rot += 0xC000;
+ TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot);
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = lVarX;
+ sprite->data[4] = lVarY;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Rotates sprite and moves it in an arc, so that it appears like a missle or arrow traveling.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+// arg 5: wave amplitude
+static void AnimMissileArc(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, 1);
+ if (GetBattlerSide(gBattleAnimAttacker))
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[5];
+ InitAnimArcTranslation(sprite);
+ sprite->callback = AnimMissileArcStep;
+ sprite->invisible = TRUE;
+}
+
+static void AnimMissileArcStep(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+
+ if (TranslateAnimHorizontalArc(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ s16 tempData[8];
+ u16 *data = sprite->data;
+ u16 x1 = sprite->pos1.x;
+ s16 x2 = sprite->pos2.x;
+ u16 y1 = sprite->pos1.y;
+ s16 y2 = sprite->pos2.y;
+ s32 i;
+
+ for (i = 0; i < 8; ++i)
+ tempData[i] = data[i];
+ x2 += x1;
+ y2 += y1;
+ if (!TranslateAnimHorizontalArc(sprite))
+ {
+ u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
+ sprite->pos1.y + sprite->pos2.y - y2);
+
+ rotation += 0xC000;
+ TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation);
+ for (i = 0; i < 8; ++i)
+ data[i] = tempData[i];
+ }
+ }
+}
+
+static void sub_80B45D8(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
+ }
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+}
diff --git a/src/dark.c b/src/dark.c
new file mode 100644
index 000000000..cb34b991e
--- /dev/null
+++ b/src/dark.c
@@ -0,0 +1,921 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "palette.h"
+#include "scanline_effect.h"
+#include "trig.h"
+#include "util.h"
+
+static void sub_80B7ACC(struct Sprite *sprite);
+static void sub_80B7BD4(struct Sprite *sprite);
+static void sub_80B7C88(struct Sprite *sprite);
+static void sub_80B86B0(struct Sprite *sprite);
+static void sub_80B7954(u8 taskId);
+static void sub_80B7A14(u8 taskId);
+static void sub_80B7B48(struct Sprite *sprite);
+static void sub_80B7C10(struct Sprite *sprite);
+static void sub_80B7C50(struct Sprite *sprite);
+static void sub_80B7D88(struct Sprite *sprite);
+static void sub_80B856C(u8 priority);
+static void sub_80B7F58(u8 taskId);
+static void sub_80B843C(struct Task *task);
+static void sub_80B82C0(u8 taskId);
+static void sub_80B8920(u8 taskId);
+
+const struct SpriteTemplate gUnknown_83E7878 =
+{
+ .tileTag = ANIM_TAG_TIED_BAG,
+ .paletteTag = ANIM_TAG_TIED_BAG,
+ .oam = &gOamData_83AC9D0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B7ACC,
+};
+
+static const union AffineAnimCmd gUnknown_83E7890[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E78A0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 32, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E78B0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 64, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E78C0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E78D0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -128, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E78E0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E78F0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -64, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E7900[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -32, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7910[] =
+{
+ gUnknown_83E7890,
+ gUnknown_83E78A0,
+ gUnknown_83E78B0,
+ gUnknown_83E78C0,
+ gUnknown_83E78D0,
+ gUnknown_83E78E0,
+ gUnknown_83E78F0,
+ gUnknown_83E7900,
+};
+
+const struct SpriteTemplate gUnknown_83E7930 =
+{
+ .tileTag = ANIM_TAG_SHARP_TEETH,
+ .paletteTag = ANIM_TAG_SHARP_TEETH,
+ .oam = &gOamData_83ACB60,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7910,
+ .callback = sub_80B7BD4,
+};
+
+const struct SpriteTemplate gUnknown_83E7948 =
+{
+ .tileTag = ANIM_TAG_CLAMP,
+ .paletteTag = ANIM_TAG_CLAMP,
+ .oam = &gOamData_83ACB60,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7910,
+ .callback = sub_80B7BD4,
+};
+
+static const union AffineAnimCmd gUnknown_83E7960[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, 80, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 8),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E7978[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, -80, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 8),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7990[] =
+{
+ gUnknown_83E7960,
+ gUnknown_83E7978,
+};
+
+const struct SpriteTemplate gUnknown_83E7998 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gOamData_83ACA30,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7990,
+ .callback = sub_80B7C88,
+};
+
+static const union AnimCmd gUnknown_83E79B0[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_83E79C8[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E79E0[] =
+{
+ gUnknown_83E79B0,
+ gUnknown_83E79C8,
+};
+
+const struct SpriteTemplate gUnknown_83E79E8 =
+{
+ .tileTag = ANIM_TAG_CLAW_SLASH,
+ .paletteTag = ANIM_TAG_CLAW_SLASH,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E79E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B86B0,
+};
+
+void sub_80B78E0(u8 taskId)
+{
+ s32 battler;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ battler = gBattleAnimAttacker;
+ gTasks[taskId].data[1] = 16;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+ if (GetBattlerSpriteBGPriorityRank(battler) == 1)
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
+ else
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2);
+ gTasks[taskId].func = sub_80B7954;
+}
+
+static void sub_80B7954(u8 taskId)
+{
+ u8 blendA = gTasks[taskId].data[1] >> 8;
+ u8 blendB = gTasks[taskId].data[1];
+
+ if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0])
+ {
+ ++blendA;
+ --blendB;
+ gTasks[taskId].data[1] = BLDALPHA_BLEND(blendB, blendA);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].data[1]);
+ gTasks[taskId].data[2] = 0;
+ if (blendA == 16)
+ {
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = TRUE;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ {
+ ++gTasks[taskId].data[2];
+ }
+}
+
+void sub_80B79DC(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = BLDALPHA_BLEND(0, 16);
+ gTasks[taskId].func = sub_80B7A14;
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].data[1]);
+}
+
+static void sub_80B7A14(u8 taskId)
+{
+ u8 blendA = gTasks[taskId].data[1] >> 8;
+ u8 blendB = gTasks[taskId].data[1];
+
+ if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0])
+ {
+ --blendA;
+ ++blendB;
+ gTasks[taskId].data[1] = (blendA << 8) | blendB;
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].data[1]);
+ gTasks[taskId].data[2] = 0;
+ if (blendA == 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ {
+ ++gTasks[taskId].data[2];
+ }
+}
+
+void sub_80B7A80(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
+ else
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2);
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_80B7ACC(struct Sprite *sprite)
+{
+ sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->data[3] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->data[0] = 0x7E;
+ InitSpriteDataForLinearTranslation(sprite);
+ sprite->data[3] = -sprite->data[1];
+ sprite->data[4] = -sprite->data[2];
+ sprite->data[6] = 0xFFD8;
+ sprite->callback = sub_80B7B48;
+ sprite->callback(sprite);
+}
+
+static void sub_80B7B48(struct Sprite *sprite)
+{
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ if (sprite->data[7] == 0)
+ {
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ --sprite->data[0];
+ }
+ sprite->pos2.y += Sin(sprite->data[5], sprite->data[6]);
+ sprite->data[5] = (sprite->data[5] + 3) & 0xFF;
+ if (sprite->data[5] > 0x7F)
+ {
+ sprite->data[5] = 0;
+ sprite->data[6] += 20;
+ ++sprite->data[7];
+ }
+ if (--sprite->data[0] == 0)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80B7BD4(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]);
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = gBattleAnimArgs[4];
+ sprite->data[2] = gBattleAnimArgs[5];
+ sprite->callback = sub_80B7C10;
+}
+
+static void sub_80B7C10(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[0];
+ sprite->data[5] += sprite->data[1];
+ sprite->pos2.x = sprite->data[4] >> 8;
+ sprite->pos2.y = sprite->data[5] >> 8;
+ if (++sprite->data[3] == sprite->data[2])
+ sprite->callback = sub_80B7C50;
+}
+
+static void sub_80B7C50(struct Sprite *sprite)
+{
+ sprite->data[4] -= sprite->data[0];
+ sprite->data[5] -= sprite->data[1];
+ sprite->pos2.x = sprite->data[4] >> 8;
+ sprite->pos2.y = sprite->data[5] >> 8;
+ if (--sprite->data[3] == 0)
+ DestroySpriteAndMatrix(sprite);
+}
+
+static void sub_80B7C88(struct Sprite *sprite)
+{
+ u8 battler;
+ s8 xOffset;
+
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+ xOffset = 20;
+ sprite->oam.tileNum += 4;
+ switch (gBattleAnimArgs[1])
+ {
+ case 0:
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 8;
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
+ break;
+ case 1:
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 14;
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
+ break;
+ case 2:
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 8;
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
+ StartSpriteAffineAnim(sprite, 1);
+ xOffset = -20;
+ break;
+ case 3:
+ sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 14;
+ sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
+ StartSpriteAffineAnim(sprite, 1);
+ xOffset = -20;
+ break;
+ }
+ sprite->data[0] = 32;
+ sprite->data[2] = sprite->pos1.x + xOffset;
+ sprite->data[4] = sprite->pos1.y + 12;
+ sprite->data[5] = -12;
+ InitAnimArcTranslation(sprite);
+ sprite->callback = sub_80B7D88;
+}
+
+static void sub_80B7D88(struct Sprite *sprite)
+{
+ if (TranslateAnimHorizontalArc(sprite))
+ DestroySpriteAndMatrix(sprite);
+}
+
+void sub_80B7DA4(u8 taskId)
+{
+ struct ScanlineEffectParams scanlineParams;
+ struct BattleAnimBgData animBg;
+ u16 i;
+ u8 pos;
+ s32 var0;
+ struct Task *task = &gTasks[taskId];
+
+ task->data[7] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 31;
+ task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP) - 7;
+ task->data[5] = task->data[7];
+ task->data[4] = task->data[6];
+ task->data[13] = (task->data[7] - task->data[6]) << 8;
+ pos = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
+ task->data[14] = pos - 32;
+ task->data[15] = pos + 32;
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ task->data[8] = -12;
+ else
+ task->data[8] = -64;
+ task->data[3] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
+ if (task->data[3] == 1)
+ {
+ sub_80752A0(&animBg);
+ task->data[10] = gBattle_BG1_Y;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
+ FillPalette(0, animBg.paletteId * 16, 32);
+ scanlineParams.dmaDest = &REG_BG1VOFS;
+ var0 = WINOUT_WIN01_BG1;
+ if (!IsContest())
+ gBattle_BG2_X += 240;
+ }
+ else
+ {
+ task->data[10] = gBattle_BG2_Y;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2);
+ FillPalette(0, 144, 32);
+ scanlineParams.dmaDest = &REG_BG2VOFS;
+ var0 = WINOUT_WIN01_BG2;
+ if (!IsContest())
+ gBattle_BG1_X += 240;
+ }
+ scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ task->data[11] = 0;
+ task->data[12] = 16;
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ sub_80B856C(3);
+ for (i = 0; i < 112; ++i)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[10];
+ gScanlineEffectRegBuffers[1][i] = task->data[10];
+ }
+ ScanlineEffect_SetParams(scanlineParams);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | (var0 ^ (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR)));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
+ gBattle_WIN0V = 160;
+
+ task->func = sub_80B7F58;
+}
+
+static void sub_80B7F58(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if (++task->data[2] & 1)
+ {
+ if (task->data[11] != 12)
+ ++task->data[11];
+ }
+ else if (task->data[12] != 8)
+ {
+ --task->data[12];
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[11], task->data[12]));
+ if (task->data[11] == 12 && task->data[12] == 8)
+ ++task->data[0];
+ }
+ break;
+ case 1:
+ task->data[4] -= 8;
+ sub_80B843C(task);
+ if (task->data[4] < task->data[8])
+ ++task->data[0];
+ break;
+ case 2:
+ task->data[4] -= 8;
+ sub_80B843C(task);
+ task->data[14] += 4;
+ task->data[15] -= 4;
+ if (task->data[14] >= task->data[15])
+ task->data[14] = task->data[15];
+ gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
+ if (task->data[14] == task->data[15])
+ ++task->data[0];
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ ++task->data[0];
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80B8070(u8 taskId)
+{
+ struct BattleAnimBgData animBg;
+ struct ScanlineEffectParams scanlineParams;
+ u8 x;
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (IsContest() == TRUE)
+ {
+ 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_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ task->data[3] = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
+ if (task->data[3] == 1)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
+ gBattle_BG2_X += 240;
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2);
+ gBattle_BG1_X += 240;
+ }
+ ++task->data[0];
+ }
+ break;
+ case 1:
+ if (task->data[3] == 1)
+ {
+ sub_80752A0(&animBg);
+ task->data[10] = gBattle_BG1_Y;
+ FillPalette(0, animBg.paletteId * 16, 32);
+ }
+ else
+ {
+ task->data[10] = gBattle_BG2_Y;
+ FillPalette(0, 9 * 16, 32);
+ }
+ sub_80B856C(3);
+ ++task->data[0];
+ break;
+ case 2:
+ task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 31;
+ task->data[6] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP) - 7;
+ task->data[13] = (task->data[7] - task->data[6]) << 8;
+ x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
+ task->data[14] = x - 4;
+ task->data[15] = x + 4;
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ task->data[8] = -12;
+ else
+ task->data[8] = -64;
+ task->data[4] = task->data[8];
+ task->data[5] = task->data[8];
+ task->data[11] = 12;
+ task->data[12] = 8;
+ ++task->data[0];
+ break;
+ case 3:
+ if (task->data[3] == 1)
+ scanlineParams.dmaDest = &REG_BG1VOFS;
+ else
+ scanlineParams.dmaDest = &REG_BG2VOFS;
+ for (i = 0; i < 112; ++i)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[10] + (159 - i);
+ gScanlineEffectRegBuffers[1][i] = task->data[10] + (159 - i);
+ }
+ scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ ScanlineEffect_SetParams(scanlineParams);
+ ++task->data[0];
+ break;
+ case 4:
+ if (task->data[3] == 1)
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
+ else
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
+ gBattle_WIN0V = 160;
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 8));
+ task->func = sub_80B82C0;
+ break;
+ }
+}
+
+static void sub_80B82C0(u8 taskId)
+{
+ u8 pos;
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[5] += 8;
+ if (task->data[5] >= task->data[7])
+ task->data[5] = task->data[7];
+ sub_80B843C(task);
+ if (task->data[5] == task->data[7])
+ ++task->data[0];
+ break;
+ case 1:
+ if (task->data[15] - task->data[14] < 0x40)
+ {
+ task->data[14] -= 4;
+ task->data[15] += 4;
+ }
+ else
+ {
+ task->data[1] = 1;
+ }
+ gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
+ task->data[4] += 8;
+ if (task->data[4] >= task->data[6])
+ task->data[4] = task->data[6];
+ sub_80B843C(task);
+ if (task->data[4] == task->data[6] && task->data[1])
+ {
+ task->data[1] = 0;
+ ++task->data[0];
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ ++task->data[2];
+ if (task->data[2] & 1)
+ {
+ if (task->data[11])
+ --task->data[11];
+ }
+ else if (task->data[12] < 16)
+ {
+ ++task->data[12];
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[11], task->data[12]));
+ if (task->data[11] == 0 && task->data[12] == 16)
+ ++task->data[0];
+ }
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ ++task->data[0];
+ break;
+ case 4:
+ 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_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B843C(struct Task *task)
+{
+ s32 var0, var1, var4;
+ s16 var2, i;
+
+ var2 = task->data[5] - task->data[4];
+ if (var2 != 0)
+ {
+ var0 = task->data[13] / var2;
+ var1 = task->data[6] << 8;
+ for (i = 0; i < task->data[4]; ++i)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[10] - (i - 159);
+ for (i = task->data[4]; i <= task->data[5]; ++i)
+ {
+ if (i >= 0)
+ {
+ s16 var3 = (var1 >> 8) - i;
+
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = var3 + task->data[10];
+ }
+ var1 += var0;
+ }
+ var4 = task->data[10] - (i - 159);
+ for (; i < task->data[7]; ++i)
+ if (i >= 0)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = var4--;
+ }
+ else
+ {
+ var4 = task->data[10] + 159;
+ for (i = 0; i < 112; ++i)
+ {
+ gScanlineEffectRegBuffers[0][i] = var4;
+ gScanlineEffectRegBuffers[1][i] = var4;
+ --var4;
+ }
+ }
+}
+
+static void sub_80B856C(u8 priority)
+{
+ u16 i;
+
+ for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(i);
+
+ if (spriteId != 0xFF)
+ gSprites[spriteId].oam.priority = priority;
+ }
+}
+
+void sub_80B85B8(u8 taskId)
+{
+ bool8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? TRUE : FALSE;
+
+ MoveBattlerSpriteToBG(gBattleAnimAttacker, toBG2);
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = FALSE;
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
+ {
+ MoveBattlerSpriteToBG(gBattleAnimAttacker ^ 2, toBG2 ^ 1);
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].invisible = FALSE;
+ }
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80B8664(u8 taskId)
+{
+ bool8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? TRUE : FALSE;
+
+ sub_8073128(toBG2);
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
+ sub_8073128(toBG2 ^ 1);
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_80B86B0(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ StartSpriteAnim(sprite, gBattleAnimArgs[2]);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Makes the attacker metallic and shining.
+// Used by MOVE_HARDEN and MOVE_IRON_DEFENSE.
+// arg0: if true won't change battler's palette back
+// arg1: if true, use custom color
+// arg2: custom color
+// Custom color argument is used in MOVE_POISON_TAIL to make the mon turn purplish/pinkish as if became cloaked in poison.
+void AnimTask_MetallicShine(u8 taskId)
+{
+ u16 species;
+ u8 spriteId, newSpriteId;
+ u16 paletteNum;
+ struct BattleAnimBgData animBg;
+ bool32 priorityChanged = FALSE;
+
+ 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_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 12));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+ if (IsDoubleBattle() && !IsContest())
+ {
+ if (GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_OPPONENT_RIGHT || GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_PLAYER_LEFT)
+ {
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)) == TRUE)
+ {
+ gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority--;
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ priorityChanged = TRUE;
+ }
+ }
+ }
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ newSpriteId = sub_8076E34(gBattleAnimAttacker, spriteId, species);
+ sub_80752A0(&animBg);
+ AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap);
+ AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset);
+ LoadCompressedPalette(gMetalShinePalette, animBg.paletteId * 16, 32);
+ gBattle_BG1_X = -gSprites[spriteId].pos1.x + 96;
+ gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
+ paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
+ if (gBattleAnimArgs[1] == 0)
+ SetGreyscaleOrOriginalPalette(paletteNum, FALSE);
+ else
+ BlendPalette(paletteNum * 16, 16, 11, gBattleAnimArgs[2]);
+ gTasks[taskId].data[0] = newSpriteId;
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ gTasks[taskId].data[6] = priorityChanged;
+ gTasks[taskId].func = sub_80B8920;
+}
+
+static void sub_80B8920(u8 taskId)
+{
+ struct BattleAnimBgData animBg;
+ u16 paletteNum;
+ u8 spriteId;
+
+ gTasks[taskId].data[10] += 4;
+ gBattle_BG1_X -= 4;
+ if (gTasks[taskId].data[10] == 128)
+ {
+ gTasks[taskId].data[10] = 0;
+ gBattle_BG1_X += 128;
+ gTasks[taskId].data[11]++;
+ if (gTasks[taskId].data[11] == 2)
+ {
+ spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
+ if (gTasks[taskId].data[1] == 0)
+ SetGreyscaleOrOriginalPalette(paletteNum, 1);
+ DestroySprite(&gSprites[gTasks[taskId].data[0]]);
+ sub_80752A0(&animBg);
+ sub_8075358(animBg.bgId);
+ if (gTasks[taskId].data[6] == 1)
+ gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority++;
+ }
+ else if (gTasks[taskId].data[11] == 3)
+ {
+ 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_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_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, 0);
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+// Changes battler's palette to either greyscale or original.
+// arg0: which battler
+// arg1: 0 grayscale, 1 original
+void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
+{
+ u8 spriteId, battler;
+ bool8 calcSpriteId = FALSE;
+ u8 position = B_POSITION_PLAYER_LEFT;
+
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ break;
+ case 4:
+ position = B_POSITION_PLAYER_LEFT;
+ calcSpriteId = TRUE;
+ break;
+ case 5:
+ position = B_POSITION_PLAYER_RIGHT;
+ calcSpriteId = TRUE;
+ break;
+ case 6:
+ position = B_POSITION_OPPONENT_LEFT;
+ calcSpriteId = TRUE;
+ break;
+ case 7:
+ position = B_POSITION_OPPONENT_RIGHT;
+ calcSpriteId = TRUE;
+ break;
+ default:
+ spriteId = 0xFF;
+ break;
+ }
+ if (calcSpriteId)
+ {
+ battler = GetBattlerAtPosition(position);
+ if (IsBattlerSpriteVisible(battler))
+ spriteId = gBattlerSpriteIds[battler];
+ else
+ spriteId = 0xFF;
+ }
+ if (spriteId != 0xFF)
+ SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80B8B38(u8 taskId)
+{
+ if (gAnimMoveTurn < 2)
+ gBattleAnimArgs[7] = 0;
+ if (gAnimMoveTurn == 2)
+ gBattleAnimArgs[7] = 1;
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/daycare.c b/src/daycare.c
index 837a2c4e6..fede86156 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -2087,7 +2087,7 @@ struct UnkStruct_82349CC
u8 field_3;
};
-extern const struct UnkStruct_82349CC gUnknown_82349CC[NUM_SPECIES];
+extern const struct UnkStruct_82349CC gMonFrontPicCoords[NUM_SPECIES];
static void SpriteCB_Egg_2(struct Sprite* sprite)
{
@@ -2101,7 +2101,7 @@ static void SpriteCB_Egg_2(struct Sprite* sprite)
sprite->data[0] = 0;
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0;
- gSprites[sEggHatchData->pokeSpriteID].pos2.y = gUnknown_82349CC[species].field_1;
+ gSprites[sEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].field_1;
}
else
{
diff --git a/src/dragon.c b/src/dragon.c
new file mode 100644
index 000000000..34f97ba74
--- /dev/null
+++ b/src/dragon.c
@@ -0,0 +1,431 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "scanline_effect.h"
+#include "task.h"
+#include "trig.h"
+
+static void sub_80B725C(struct Sprite *sprite);
+static void sub_80B741C(struct Sprite *sprite);
+static void sub_80B73AC(struct Sprite *sprite);
+static void sub_80B7448(struct Sprite *sprite);
+static void sub_80B77E4(struct Sprite *sprite);
+static void sub_80B74D8(struct Sprite *sprite);
+static void sub_80B76B0(u8 taskId);
+static void sub_80B776C(struct Task *task);
+static void sub_80B7894(struct Sprite *sprite);
+
+static EWRAM_DATA u16 gUnknown_20399A4[7] = {0};
+
+static const union AnimCmd gUnknown_83E7710[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gUnknown_83E7728[] =
+{
+ gUnknown_83E7710,
+};
+
+const struct SpriteTemplate gUnknown_83E772C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E7728,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B725C,
+};
+
+static const union AnimCmd gUnknown_83E7744[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd gUnknown_83E7754[] =
+{
+ ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gUnknown_83E7764[] =
+{
+ gUnknown_83E7744,
+ gUnknown_83E7754,
+};
+
+static const union AffineAnimCmd gUnknown_83E776C[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 127, 0),
+ AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E7784[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E779C[] =
+{
+ gUnknown_83E776C,
+ gUnknown_83E7784,
+};
+
+const struct SpriteTemplate gUnknown_83E77A4 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gOamData_83ACA98,
+ .anims = gUnknown_83E7764,
+ .images = NULL,
+ .affineAnims = gUnknown_83E779C,
+ .callback = sub_80B741C,
+};
+
+const union AnimCmd gUnknown_83E77BC[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E77D4[] =
+{
+ gUnknown_83E77BC,
+};
+
+const struct SpriteTemplate gUnknown_83E77D8 =
+{
+ .tileTag = ANIM_TAG_FIRE_PLUME,
+ .paletteTag = ANIM_TAG_FIRE_PLUME,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E77D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B73AC,
+};
+
+static const union AnimCmd gUnknown_83E77F0[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gUnknown_83E7800[] =
+{
+ gUnknown_83E77F0,
+ gUnknown_83E77F0,
+};
+
+static const union AffineAnimCmd gUnknown_83E7808[] =
+{
+ AFFINEANIMCMD_FRAME(0x64, 0x64, 127, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E7818[] =
+{
+ AFFINEANIMCMD_FRAME(0x64, 0x64, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7828[] =
+{
+ gUnknown_83E7808,
+ gUnknown_83E7818,
+};
+
+const struct SpriteTemplate gUnknown_83E7830 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gOamData_83ACA98,
+ .anims = gUnknown_83E7800,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7828,
+ .callback = sub_80B741C,
+};
+
+const struct SpriteTemplate gUnknown_83E7848 =
+{
+ .tileTag = ANIM_TAG_HOLLOW_ORB,
+ .paletteTag = ANIM_TAG_HOLLOW_ORB,
+ .oam = &gOamData_83AC9D0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B7448,
+};
+
+const struct SpriteTemplate gUnknown_83E7860 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E7728,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B77E4,
+};
+
+static void sub_80B725C(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ gBattleAnimArgs[4] = -gBattleAnimArgs[4];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ }
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ sprite->invisible = TRUE;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = TranslateSpriteLinearAndFlicker;
+}
+
+static void sub_80B72F8(struct Sprite *sprite)
+{
+ SetSpriteCoordsToAnimAttackerCoords(sprite);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[1];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] -= gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] += gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ StartSpriteAnim(sprite, 1);
+ }
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+}
+
+static void sub_80B73AC(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ }
+ SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[1]);
+ sprite->pos1.y += gBattleAnimArgs[2];
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+}
+
+static void sub_80B741C(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ StartSpriteAffineAnim(sprite, 1);
+ sub_80B72F8(sprite);
+}
+
+static void sub_80B7448(struct Sprite *sprite)
+{
+ u16 r5;
+ u16 r0;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[4] = 0;
+ sprite->data[5] = 1;
+ sprite->data[6] = gBattleAnimArgs[0];
+ r5 = GetBattlerSpriteCoordAttr(gBattlerAttacker, BATTLER_COORD_ATTR_HEIGHT);
+ r0 = GetBattlerSpriteCoordAttr(gBattlerAttacker, BATTLER_COORD_ATTR_WIDTH);
+ if (r5 > r0)
+ sprite->data[7] = r5 / 2;
+ else
+ sprite->data[7] = r0 / 2;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->callback = sub_80B74D8;
+}
+
+static void sub_80B74D8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ if (++sprite->data[4] > 5)
+ {
+ sprite->data[4] = 0;
+ if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
+ sprite->data[5] = 16;
+ }
+ if (++sprite->data[3] > 0x3C)
+ {
+ sprite->data[3] = 0;
+ ++sprite->data[0];
+ }
+ break;
+ case 1:
+ sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
+ if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95)
+ sprite->data[7] = 0x96;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ if (++sprite->data[4] > 5)
+ {
+ sprite->data[4] = 0;
+ if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
+ sprite->data[5] = 16;
+ }
+ if (++sprite->data[3] > 20)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_80B75E0(u8 taskId)
+{
+ struct ScanlineEffectParams sp;
+ struct Task *task = &gTasks[taskId];
+ u16 i;
+ u8 r1;
+
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
+ {
+ sp.dmaDest = &REG_BG1HOFS;
+ task->data[2] = gBattle_BG1_X;
+ }
+ else
+ {
+ sp.dmaDest = &REG_BG2HOFS;
+ task->data[2] = gBattle_BG2_X;
+ }
+ sp.dmaControl = 0xA2600001;
+ sp.initState = 1;
+ sp.unused9 = 0;
+ r1 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
+ task->data[3] = r1 - 32;
+ task->data[4] = r1 + 32;
+ if (task->data[3] < 0)
+ task->data[3] = 0;
+ for (i = task->data[3]; i <= task->data[4]; ++i)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[2];
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ }
+ ScanlineEffect_SetParams(sp);
+ task->func = sub_80B76B0;
+}
+
+static void sub_80B76B0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[7] > 1)
+ {
+ task->data[7] = 0;
+ if (++task->data[6] == 3)
+ ++task->data[0];
+ }
+ sub_80B776C(task);
+ break;
+ case 1:
+ if (++task->data[1] > 0x3C)
+ ++task->data[0];
+ sub_80B776C(task);
+ break;
+ case 2:
+ if (++task->data[7] > 1)
+ {
+ task->data[7] = 0;
+ if (--task->data[6] == 0)
+ ++task->data[0];
+ }
+ sub_80B776C(task);
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ ++task->data[0];
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B776C(struct Task *task)
+{
+ u16 i, r3 = task->data[5];
+
+ for (i = task->data[3]; i <= task->data[4]; ++i)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2];
+ r3 = (r3 + 8) & 0xFF;
+ }
+ task->data[5] = (task->data[5] + 9) & 0xFF;
+}
+
+static void sub_80B77E4(struct Sprite *sprite)
+{
+ s32 i, r6 = (gBattleAnimArgs[2] * 3) / 5;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4];
+ sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]);
+ sprite->data[2] = Sin(gBattleAnimArgs[1], r6);
+ sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0];
+ sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0];
+ sprite->data[3] = gBattleAnimArgs[3];
+ sprite->callback = sub_80B7894;
+ for (i = 0; i < 7; ++i)
+ gUnknown_20399A4[i] = sprite->data[i];
+}
+
+static void sub_80B7894(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[1];
+ sprite->data[5] += sprite->data[2];
+ sprite->pos2.x = sprite->data[4] / 10;
+ sprite->pos2.y = sprite->data[5] / 10;
+ if (++sprite->data[0] > sprite->data[3])
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/fame_checker.c b/src/fame_checker.c
index 0278fda18..e803a9700 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -552,7 +552,7 @@ static void Task_TopMenuHandleInput(u8 taskId)
if (FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox) == 0xFF)
{
RunTextPrinters();
- if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != ReturnToBagFromKeyItem)
+ if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != CB2_BagMenuFromStartMenu)
task->func = Task_StartToCloseFameChecker;
else if (JOY_NEW(START_BUTTON))
{
@@ -802,7 +802,7 @@ static void WipeMsgBoxAndTransfer(void)
static void Setup_DrawMsgAndListBoxes(void)
{
- sub_80F6E9C();
+ LoadStdWindowFrameGfx();
DrawDialogueFrame(FCWINDOWID_MSGBOX, TRUE);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_LIST);
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index 62254a559..6a539b60e 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -475,25 +475,25 @@ static void sub_807E31C(u8 taskId)
}
}
-static void sub_807E378(u8 taskId)
+static void Task_WaitFadeAndCreateStartMenuTask(u8 taskId)
{
if (sub_807E418() == TRUE)
{
DestroyTask(taskId);
- CreateTask(sub_806F1F0, 80);
+ CreateTask(Task_StartMenuHandleInput, 80);
}
}
-void sub_807E3A0(void)
+void FadeTransition_FadeInOnReturnToStartMenu(void)
{
sub_807DC00();
- CreateTask(sub_807E378, 80);
+ CreateTask(Task_WaitFadeAndCreateStartMenuTask, 80);
ScriptContext2_Enable();
}
-bool32 sub_807E3BC(void)
+bool8 FieldCB2_ReturnToStartMenuInit(void)
{
- sub_806F1D4();
+ SetUpReturnToStartMenu();
return FALSE;
}
@@ -522,7 +522,7 @@ static bool32 sub_807E40C(void)
bool32 sub_807E418(void)
{
- if (sub_807AA70() == TRUE && sub_80F83B0())
+ if (field_weather_is_fade_finished() == TRUE && sub_80F83B0())
return TRUE;
else
return FALSE;
diff --git a/src/flying.c b/src/flying.c
new file mode 100644
index 000000000..8c3ccb52a
--- /dev/null
+++ b/src/flying.c
@@ -0,0 +1,1289 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "palette.h"
+#include "trig.h"
+#include "constants/battle_anim.h"
+#include "random.h"
+
+static void sub_80B18E4(struct Sprite *sprite);
+static void sub_80B1A1C(struct Sprite *sprite);
+static void sub_80B1AB8(struct Sprite *sprite);
+static void sub_80B1BB0(struct Sprite *sprite);
+static void sub_80B1C3C(struct Sprite *sprite);
+static void sub_80B1D88(struct Sprite *sprite);
+static void sub_80B24C0(struct Sprite *sprite);
+static void sub_80B2514(struct Sprite *sprite);
+static void sub_80B2780(struct Sprite *sprite);
+static void sub_80B2914(struct Sprite *sprite);
+static void sub_80B2974(struct Sprite *sprite);
+static void sub_80B2A08(struct Sprite *sprite);
+static void sub_80B2AF4(struct Sprite *sprite);
+static void sub_80B2BD8(struct Sprite *sprite);
+static void sub_80B2CE4(struct Sprite *sprite);
+static void sub_80B2D64(struct Sprite *sprite);
+static void sub_80B190C(struct Sprite *sprite);
+static void sub_80B198C(u8 taskId);
+static void sub_80B1A9C(struct Sprite *sprite);
+static void sub_80B1BF8(struct Sprite *sprite);
+static void sub_80B1CC0(struct Sprite *sprite);
+static void sub_80B1F94(struct Sprite *sprite);
+static void sub_80B268C(struct Sprite *sprite);
+static void sub_80B2820(struct Sprite *sprite);
+static void sub_80B2A50(struct Sprite *sprite);
+static void sub_80B2AB0(struct Sprite *sprite);
+static void sub_80B2C88(struct Sprite *sprite);
+static void sub_80B2CF8(struct Sprite *sprite);
+static void sub_80B2E20(struct Sprite *sprite);
+
+const struct SpriteTemplate gUnknown_83E6AE8 =
+{
+ .tileTag = ANIM_TAG_GUST,
+ .paletteTag = ANIM_TAG_GUST,
+ .oam = &gOamData_83ACA20,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B18E4,
+};
+
+static const union AffineAnimCmd gUnknown_83E6B00[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xA, 0x0, 0, 24),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E6B18[] =
+{
+ gUnknown_83E6B00,
+};
+
+const struct SpriteTemplate gUnknown_83E6B1C =
+{
+ .tileTag = ANIM_TAG_GUST,
+ .paletteTag = ANIM_TAG_GUST,
+ .oam = &gOamData_83ACA80,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E6B18,
+ .callback = sub_80B1A1C,
+};
+
+static const union AnimCmd gUnknown_83E6B34[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(0, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE),
+ ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gUnknown_83E6B48[] =
+{
+ gUnknown_83E6B34,
+};
+
+const struct SpriteTemplate gUnknown_83E6B4C =
+{
+ .tileTag = ANIM_TAG_AIR_WAVE_2,
+ .paletteTag = ANIM_TAG_AIR_WAVE_2,
+ .oam = &gOamData_83AC9F8,
+ .anims = gUnknown_83E6B48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B1AB8,
+};
+
+static const union AffineAnimCmd gUnknown_83E6B64[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E6B8C[] =
+{
+ gUnknown_83E6B64,
+};
+
+static const union AffineAnimCmd gUnknown_83E6B90[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 50, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E6B9C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -40, 1),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E6BB0[] =
+{
+ gUnknown_83E6B90,
+ gUnknown_83E6B9C,
+};
+
+const struct SpriteTemplate gUnknown_83E6BB8 =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gOamData_83ACAA0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E6B8C,
+ .callback = sub_80B1BB0,
+};
+
+const struct SpriteTemplate gUnknown_83E6BD0 =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gOamData_83ACA40,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E6BB0,
+ .callback = sub_80B1C3C,
+};
+
+static const union AnimCmd gUnknown_83E6BE8[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_83E6BF0[] =
+{
+ ANIMCMD_FRAME(16, 0, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E6BF8[] =
+{
+ gUnknown_83E6BE8,
+ gUnknown_83E6BF0,
+};
+
+const struct SpriteTemplate gUnknown_83E6C00 =
+{
+ .tileTag = ANIM_TAG_WHITE_FEATHER,
+ .paletteTag = ANIM_TAG_WHITE_FEATHER,
+ .oam = &gOamData_83ACA38,
+ .anims = gUnknown_83E6BF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B1D88,
+};
+
+// not used
+static const u16 gUnknown_83E6C18[] = INCBIN_U16("graphics/battle_anims/sprites/unk_83E6C18.gbapal");
+
+const struct SpriteTemplate gUnknown_83E6C38 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gOamData_83AC9D0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B24C0,
+};
+
+const struct SpriteTemplate gUnknown_83E6C50 =
+{
+ .tileTag = ANIM_TAG_WHITE_FEATHER,
+ .paletteTag = ANIM_TAG_WHITE_FEATHER,
+ .oam = &gOamData_83ACA38,
+ .anims = gUnknown_83E6BF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2514,
+};
+
+static const union AnimCmd gUnknown_83E6C68[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_FRAME(8, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E6C80[] =
+{
+ gUnknown_83E6C68,
+};
+
+const struct SpriteTemplate gUnknown_83E6C84 =
+{
+ .tileTag = ANIM_TAG_WHIRLWIND_LINES,
+ .paletteTag = ANIM_TAG_WHIRLWIND_LINES,
+ .oam = &gOamData_83AC9F8,
+ .anims = gUnknown_83E6C80,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2780,
+};
+
+static const union AffineAnimCmd gUnknown_83E6C9C[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFEC, 0x0, 0, 7),
+ AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, 0, 5),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E6CCC[] =
+{
+ gUnknown_83E6C9C,
+};
+
+const struct SpriteTemplate gUnknown_83E6CD0 =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gOamData_83ACAA0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E6CCC,
+ .callback = sub_80B2914,
+};
+
+static const union AffineAnimCmd gUnknown_83E6CE8[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E6CF8[] =
+{
+ gUnknown_83E6CE8,
+};
+
+const struct SpriteTemplate gUnknown_83E6CFC =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gOamData_83ACAA0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E6CF8,
+ .callback = sub_80B2974,
+};
+
+static const union AffineAnimCmd gUnknown_83E6D14[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E6D3C[] =
+{
+ gUnknown_83E6D14,
+};
+
+const struct SpriteTemplate gUnknown_83E6D40 =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gOamData_83ACAA0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E6D3C,
+ .callback = sub_80B2A08,
+};
+
+// not used
+static const union AffineAnimCmd gUnknown_83E6D58[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 11),
+ AFFINEANIMCMD_END,
+};
+
+// not used
+static const union AffineAnimCmd *const gUnknown_83E6D80[] =
+{
+ gUnknown_83E6D58,
+};
+
+const struct SpriteTemplate gUnknown_83E6D7C =
+{
+ .tileTag = ANIM_TAG_SPLASH,
+ .paletteTag = ANIM_TAG_SPLASH,
+ .oam = &gOamData_83ACAA0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2AF4,
+};
+
+const struct SpriteTemplate gUnknown_83E6D94 =
+{
+ .tileTag = ANIM_TAG_SWEAT_BEAD,
+ .paletteTag = ANIM_TAG_SWEAT_BEAD,
+ .oam = &gOamData_83AC9C8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2BD8,
+};
+
+const struct SpriteTemplate gUnknown_83E6DAC =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gOamData_83ACB00,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2CE4,
+};
+
+const struct SpriteTemplate gUnknown_83E6DB4 =
+{
+ .tileTag = ANIM_TAG_BIRD,
+ .paletteTag = ANIM_TAG_BIRD,
+ .oam = &gOamData_83ACAA0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2D64,
+};
+
+static void sub_80B18E4(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->pos1.y += 20;
+ sprite->data[1] = 191;
+ sprite->callback = sub_80B190C;
+ sprite->callback(sprite);
+}
+
+static void sub_80B190C(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[1], 32);
+ sprite->pos2.y = Cos(sprite->data[1], 8);
+ sprite->data[1] += 5;
+ sprite->data[1] &= 0xFF;
+ if (++sprite->data[0] == 71)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80B194C(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_GUST);
+ gTasks[taskId].func = sub_80B198C;
+}
+
+static void sub_80B198C(u8 taskId)
+{
+ u8 data2;
+ u16 temp;
+ s32 i, base;
+
+ if (gTasks[taskId].data[10]++ == gTasks[taskId].data[1])
+ {
+ gTasks[taskId].data[10] = 0;
+ data2 = gTasks[taskId].data[2];
+ temp = gPlttBufferFaded[16 * data2 + 0x108];
+ i = 7;
+ base = data2 * 16;
+ do
+ {
+ gPlttBufferFaded[base + 0x101 + i] = gPlttBufferFaded[base + 0x100 + i];
+ } while (--i > 0);
+
+ gPlttBufferFaded[base + 0x101] = temp;
+ }
+ if (--gTasks[taskId].data[0] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_80B1A1C(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+ StoreSpriteCallbackInData6(sprite, sub_80B1A9C);
+}
+
+static void sub_80B1A9C(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80B1AB8(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+ if (IsContest())
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+ if (gBattleAnimArgs[6] == 0)
+ {
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+ else
+ {
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
+ }
+ sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ SeekSpriteAnim(sprite, gBattleAnimArgs[5]);
+}
+
+static void sub_80B1BB0(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_80B1BF8;
+ gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE;
+}
+
+static void sub_80B1BF8(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ }
+ else
+ {
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.y -= (sprite->data[2] >> 8);
+ }
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80B1C3C(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 272;
+ sprite->pos1.y = -32;
+ StartSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->pos1.x = -32;
+ sprite->pos1.y = -32;
+ }
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = sub_80B1CC0;
+}
+
+static void sub_80B1CC0(struct Sprite *sprite)
+{
+ sprite->data[0] = 1;
+ AnimTranslateLinear(sprite);
+ if (((u16)sprite->data[3] >> 8) > 200)
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos2.x = 0;
+ sprite->data[3] &= 0xFF;
+ }
+ if (sprite->pos1.x + sprite->pos2.x < -32
+ || sprite->pos1.x + sprite->pos2.x > 272
+ || sprite->pos1.y + sprite->pos2.y > 160)
+ {
+ gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE;
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_80B1D3C(struct Sprite *sprite)
+{
+ if (sprite->data[0]-- <= 0)
+ {
+ if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = 0;
+ }
+ DestroySprite(sprite);
+ --gAnimVisualTaskCount;
+ }
+}
+
+struct FeatherDanceData
+{
+ u16 unk0_0a:1;
+ u16 unk0_0b:1;
+ u16 unk0_0c:1;
+ u16 unk0_0d:1;
+ u16 unk0_1:4;
+ u16 unk1:8;
+ u16 unk2;
+ s16 unk4;
+ u16 unk6;
+ u16 unk8;
+ u16 unkA;
+ u8 unkC[2];
+ u16 unkE_0:1;
+ u16 unkE_1:15;
+};
+
+static void sub_80B1D88(struct Sprite *sprite)
+{
+ u8 battler, matrixNum, sinIndex;
+ s16 spriteCoord, sinVal;
+ struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
+
+ if (gBattleAnimArgs[7] & 0x100)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
+ spriteCoord = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH);
+ sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
+ data->unk8 = sprite->pos1.y << 8;
+ data->unkE_1 = spriteCoord + gBattleAnimArgs[6];
+ data->unk0_0c = 1;
+ data->unk2 = gBattleAnimArgs[2] & 0xFF;
+ data->unkA = (gBattleAnimArgs[2] >> 8) & 0xFF;
+ data->unk4 = gBattleAnimArgs[3];
+ data->unk6 = gBattleAnimArgs[4];
+ *(u16 *)(data->unkC) = gBattleAnimArgs[5];
+ if (data->unk2 >= 64 && data->unk2 <= 191)
+ {
+ if (!IsContest())
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
+ else
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
+ data->unkE_0 = 0;
+ if (!(data->unk4 & 0x8000))
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ }
+ }
+ else
+ {
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
+ data->unkE_0 = 1;
+ if (data->unk4 & 0x8000)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ }
+ }
+ data->unk0_1 = data->unk2 >> 6;
+ sprite->pos2.x = (gSineTable[data->unk2] * data->unkC[0]) >> 8;
+ matrixNum = sprite->oam.matrixNum;
+ sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
+ sinVal = gSineTable[sinIndex];
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
+ if (sprite)
+ {
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+ }
+ else // pointless, exactly the same
+ {
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+ }
+ sprite->callback = sub_80B1F94;
+}
+
+static void sub_80B1F94(struct Sprite *sprite)
+{
+ u8 matrixNum, sinIndex;
+ s16 sinVal = 0;
+ struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
+
+ if (data->unk0_0a)
+ {
+ if (data->unk1-- % 256 == 0)
+ {
+ data->unk0_0a = 0;
+ data->unk1 = 0;
+ }
+ }
+ else
+ {
+ switch (data->unk2 / 64)
+ {
+ case 0:
+ if (data->unk0_1 << 24 >> 24 == 1) // the shifts have to be here
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_1 << 24 >> 24 == 3)
+ {
+ data->unk0_0b ^= 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ {
+ --sprite->oam.priority;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ ++sprite->oam.priority;
+ data->unkE_0 ^= 1;
+ }
+ }
+ else
+ {
+ if (!data->unkE_0)
+ {
+ sprite->subpriority -= 12;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->subpriority += 12;
+ data->unkE_0 ^= 1;
+ }
+ }
+ }
+ data->unk0_0d = 0;
+ data->unk2;
+ }
+ data->unk0_1 = 0;
+ break;
+ case 1:
+ if (data->unk0_1 << 24 >> 24 == 0)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_1 << 24 >> 24 == 2)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ {
+ --sprite->oam.priority;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ ++sprite->oam.priority;
+ data->unkE_0 ^= 1;
+ }
+ }
+ else
+ {
+ if (!data->unkE_0)
+ {
+ sprite->subpriority -= 12;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->subpriority += 12;
+ data->unkE_0 ^= 1;
+ }
+ }
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 1;
+ break;
+ case 2:
+ if (data->unk0_1 << 24 >> 24 == 3)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_1 << 24 >> 24 == 1)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ {
+ --sprite->oam.priority;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ ++sprite->oam.priority;
+ data->unkE_0 ^= 1;
+ }
+ }
+ else
+ {
+ if (!data->unkE_0)
+ {
+ sprite->subpriority -= 12;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->subpriority += 12;
+ data->unkE_0 ^= 1;
+ }
+ }
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 2;
+ break;
+ case 3:
+ if (data->unk0_1 << 24 >> 24 == 2)
+ {
+ data->unk0_0d = 1;
+ }
+ else if (data->unk0_1 << 24 >> 24 == 0)
+ {
+ data->unk0_0b ^= 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ {
+ --sprite->oam.priority;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ ++sprite->oam.priority;
+ data->unkE_0 ^= 1;
+ }
+ }
+ else
+ {
+ if (!data->unkE_0)
+ {
+ sprite->subpriority -= 12;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->subpriority += 12;
+ data->unkE_0 ^= 1;
+ }
+ }
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 3;
+ break;
+ }
+ #ifndef NONMATCHING
+ asm("":::"r8");
+ #endif
+ sprite->pos2.x = (data->unkC[data->unk0_0b] * gSineTable[data->unk2]) >> 8;
+ matrixNum = sprite->oam.matrixNum;
+ sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
+ sinVal = gSineTable[sinIndex];
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+ data->unk8 += data->unk6;
+ sprite->pos1.y = data->unk8 >> 8;
+ if (data->unk4 & 0x8000)
+ data->unk2 = (data->unk2 - (data->unk4 & 0x7FFF)) & 0xFF;
+ else
+ data->unk2 = (data->unk2 + (data->unk4 & 0x7FFF)) & 0xFF;
+ if (sprite->pos1.y + sprite->pos2.y >= data->unkE_1)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_80B1D3C;
+ }
+ }
+}
+
+static void sub_80B24C0(struct Sprite *sprite)
+{
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->callback = TranslateAnimSpriteToTargetMonLocation;
+}
+
+static void sub_80B2514(struct Sprite *sprite)
+{
+ u8 matrixNum;
+ s16 rn, sinVal;
+
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] = gBattleAnimArgs[2];
+ if (!IsContest())
+ {
+ if (gBattlerPositions[gBattleAnimTarget] & B_POSITION_OPPONENT_LEFT)
+ sprite->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_ATTR_WIDTH) + gBattleAnimArgs[3];
+ else
+ sprite->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_ATTR_WIDTH) + 40;
+ if (gBattleAnimArgs[4])
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) + 1;
+ else
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
+ }
+ else
+ {
+ sprite->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_ATTR_WIDTH) + gBattleAnimArgs[3];
+ }
+ sprite->data[4] = gSineTable[sprite->data[1] & 0xFF];
+ sprite->data[5] = -gSineTable[(sprite->data[1] & 0xFF) + 64];
+ sprite->data[6] = 0;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ matrixNum = sprite->oam.matrixNum;
+ sprite->data[1] = (u16)sprite->data[1] >> 8;
+ rn = Random();
+ if (rn & 0x8000)
+ sprite->data[1] = 0xFF - sprite->data[1];
+ sinVal = gSineTable[sprite->data[1]];
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sprite->data[1] + 64];
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ if (rn & 1)
+ {
+ sprite->animNum = 1;
+ sprite->hFlip = TRUE;
+ }
+ sprite->callback = sub_80B268C;
+}
+
+static void sub_80B268C(struct Sprite *sprite)
+{
+ struct FeatherDanceData fData;
+ struct FeatherDanceData *tData = (struct FeatherDanceData *)sprite->data;
+ u8 item;
+ u32 x, y;
+
+ ++sprite->data[0];
+ if (sprite->data[0] <= 4)
+ return;
+ sprite->pos2.x = (sprite->data[4] * sprite->data[6]) >> 8;
+ sprite->pos2.y = (sprite->data[5] * sprite->data[6]) >> 8;
+ sprite->data[6] += sprite->data[3] & 0xFF;
+ if (sprite->data[6] < (sprite->data[2] & 0xFF))
+ return;
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ memcpy(&fData, tData, sizeof(struct FeatherDanceData));
+ memset(tData, 0, sizeof(struct FeatherDanceData));
+ tData->unk8 = sprite->pos1.y << 8;
+ tData->unk6 = fData.unk6 >> 8;
+ tData->unk2 = 0;
+ tData->unkA = fData.unk2;
+ if (sprite->animNum != 0)
+ {
+ if (tData->unk6 & 8)
+ tData->unk4 = 0x8001;
+ else
+ tData->unk4 = 0x8002;
+ }
+ else if (tData->unk6 & 8)
+ {
+ tData->unk4 = 1;
+ }
+ else
+ {
+ tData->unk4 = 2;
+ }
+ item = fData.unk4 >> 8;
+ tData->unkC[0] = item;
+ tData->unkC[1] = item - 2;
+ x = (((u16 *)&fData)[7] << 1);
+ y = (((u16 *)tData)[7] & 1);
+ ((u16 *)tData)[7] = y | x;
+ sprite->callback = sub_80B1F94;
+}
+
+static void sub_80B2780(struct Sprite *sprite)
+{
+ u16 arg;
+ u8 mult;
+
+ if (!gBattleAnimArgs[2])
+ InitSpritePosToAnimAttacker(sprite, 0);
+ else
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ if ((!gBattleAnimArgs[2] && !GetBattlerSide(gBattleAnimAttacker))
+ || (gBattleAnimArgs[2] == 1 && !GetBattlerSide(gBattleAnimTarget)))
+ sprite->pos1.x += 8;
+ SeekSpriteAnim(sprite, gBattleAnimArgs[4]);
+ sprite->pos1.x -= 32;
+ sprite->data[1] = 0x0ccc;
+ arg = gBattleAnimArgs[4];
+ mult = 12;
+ sprite->pos2.x += mult * arg;
+ sprite->data[0] = arg;
+ sprite->data[7] = gBattleAnimArgs[3];
+ sprite->callback = sub_80B2820;
+}
+
+static void sub_80B2820(struct Sprite *sprite)
+{
+ sprite->pos2.x += sprite->data[1] >> 8;
+ if (++sprite->data[0] == 6)
+ {
+ sprite->data[0] = 0;
+ sprite->pos2.x = 0;
+ StartSpriteAnim(sprite, 0);
+ }
+
+ if (--sprite->data[7] == -1)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80B2868(u8 taskId)
+{
+ if (!(gTasks[taskId].data[0] % 32))
+ {
+ ++gAnimVisualTaskCount;
+ gBattleAnimArgs[0] = Sin(gTasks[taskId].data[0], -13);
+ gBattleAnimArgs[1] = Cos(gTasks[taskId].data[0], -13);
+ gBattleAnimArgs[2] = 1;
+ gBattleAnimArgs[3] = 3;
+ CreateSpriteAndAnimate(&gUnknown_83E7C98,
+ GetBattlerSpriteCoord(gBattleAnimTarget, 2),
+ GetBattlerSpriteCoord(gBattleAnimTarget, 3),
+ 3);
+ }
+ gTasks[taskId].data[0] += 8;
+ if (gTasks[taskId].data[0] > 255)
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_80B2914(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ InitSpritePosToAnimAttacker(sprite, 1);
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = TRUE;
+ ++sprite->data[0];
+ break;
+ case 1:
+ if (sprite->affineAnimEnded)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+static void sub_80B2974(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->pos2.y = -sprite->pos1.y - 32;
+ ++sprite->data[0];
+ break;
+ case 1:
+ sprite->pos2.y += 10;
+ if (sprite->pos2.y >= 0)
+ ++sprite->data[0];
+ break;
+ case 2:
+ sprite->pos2.y -= 10;
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ {
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = FALSE;
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+static void sub_80B2A08(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_80B2A50;
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = TRUE;
+}
+
+static void sub_80B2A50(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ }
+ else if (sprite->pos1.y + sprite->pos2.y > -32)
+ {
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.y -= (sprite->data[2] >> 8);
+ }
+ else
+ {
+ sprite->invisible = TRUE;
+ if (sprite->data[3]++ > 20)
+ sprite->callback = sub_80B2AB0;
+ }
+}
+
+static void sub_80B2AB0(struct Sprite *sprite)
+{
+ sprite->pos2.y += sprite->data[2] >> 8;
+ if (sprite->pos1.y + sprite->pos2.y > -32)
+ sprite->invisible = FALSE;
+ if (sprite->pos2.y > 0)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80B2AF4(struct Sprite *sprite)
+{
+ u32 matrixNum;
+ s32 t1, t2;
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (!gBattleAnimArgs[0])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ }
+ sprite->data[1] = 512;
+ TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0);
+ ++sprite->data[0];
+ break;
+ case 1:
+ if (sprite->data[2] <= 11)
+ sprite->data[1] -= 40;
+ else
+ sprite->data[1] += 40;
+ ++sprite->data[2];
+ TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0);
+ matrixNum = sprite->oam.matrixNum;
+ t1 = 15616;
+ t2 = t1 / gOamMatrices[matrixNum].d + 1;
+ if (t2 > 128)
+ t2 = 128;
+ t2 = (64 - t2) / 2;
+ sprite->pos2.y = t2;
+ if (sprite->data[2] == 24)
+ {
+ sub_8075AD8(sprite);
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+static void sub_80B2BD8(struct Sprite *sprite)
+{
+ s32 v1 = 0x1FF & Random();
+ s32 v2 = 0x7F & Random();
+
+ if (v1 % 2)
+ sprite->data[0] = 736 + v1;
+ else
+ sprite->data[0] = 736 - v1;
+
+ if (v2 % 2)
+ sprite->data[1] = 896 + v2;
+ else
+ sprite->data[1] = 896 - v2;
+ sprite->data[2] = gBattleAnimArgs[0];
+ if (sprite->data[2])
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
+ if (gBattleAnimArgs[1] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
+ }
+ sprite->callback = sub_80B2C88;
+}
+
+static void sub_80B2C88(struct Sprite *sprite)
+{
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos2.x += sprite->data[0] >> 8;
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ }
+ else
+ {
+ sprite->pos2.x -= sprite->data[0] >> 8;
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ }
+ sprite->data[0] = sprite->data[0];
+ sprite->data[1] -= 32;
+ if (sprite->data[0] < 0)
+ sprite->data[0] = 0;
+ if (++sprite->data[3] == 31)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80B2CE4(struct Sprite *sprite)
+{
+ sprite->data[6] = 0;
+ sprite->data[7] = 64;
+ sprite->callback = sub_80B2CF8;
+}
+
+static void sub_80B2CF8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 8)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] > 5 && sprite->invisible != FALSE)
+ ++sprite->data[0];
+ }
+ break;
+ case 1:
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+static void sub_80B2D64(struct Sprite *sprite)
+{
+ u16 rotation;
+ s16 posx = sprite->pos1.x;
+ s16 posy = sprite->pos1.y;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[6] = ((posx - sprite->pos1.x) << 4) / 12;
+ sprite->data[7] = ((posy - sprite->pos1.y) << 4) / 12;
+ rotation = ArcTan2Neg(posx - sprite->pos1.x, posy - sprite->pos1.y);
+ rotation += 49152;
+ TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation);
+ sprite->callback = sub_80B2E20;
+}
+
+static void sub_80B2E20(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ if (sprite->pos1.x > 285 || sprite->pos1.x < -45
+ || sprite->pos1.y > 157 || sprite->pos1.y < -45)
+ DestroySpriteAndMatrix(sprite);
+}
+
+// not used
+static void sub_80B2E64(u8 taskId)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+
+ gSprites[spriteId].invisible = TRUE;
+ }
+ else
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+
+ gSprites[spriteId].invisible = FALSE;
+ }
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/ghost.c b/src/ghost.c
new file mode 100644
index 000000000..fbf452af6
--- /dev/null
+++ b/src/ghost.c
@@ -0,0 +1,1484 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "scanline_effect.h"
+#include "malloc.h"
+#include "graphics.h"
+#include "sound.h"
+#include "trig.h"
+#include "util.h"
+#include "decompress.h"
+#include "constants/songs.h"
+
+static void sub_80B5268(struct Sprite *sprite);
+static void sub_80B52D0(struct Sprite *sprite);
+static void sub_80B5344(struct Sprite *sprite);
+static void sub_80B53C0(struct Sprite *sprite);
+static void sub_80B5450(struct Sprite *sprite);
+static void sub_80B5470(struct Sprite *sprite);
+static void sub_80B5570(u8 taskId);
+static void sub_80B55C8(u8 taskId);
+static void InitAnimShadowBall(struct Sprite *sprite);
+static void AnimShadowBallStep(struct Sprite *sprite);
+static void sub_80B57F8(struct Sprite *sprite);
+static void sub_80B5810(struct Sprite *sprite);
+static void sub_80B59D4(u8 taskId);
+static void sub_80B5AD4(u8 taskId);
+static void sub_80B5D38(u8 taskId);
+static void sub_80B5DCC(u8 taskId);
+static void sub_80B5EC0(struct Sprite *sprite);
+static void sub_80B5FE0(struct Sprite *sprite);
+static void sub_80B623C(u8 taskId);
+static void sub_80B6468(u8 taskId);
+static void sub_80B65F0(u8 taskId);
+static void sub_80B664C(struct Sprite *sprite);
+static void sub_80B66A8(struct Sprite *sprite);
+static void sub_80B6728(struct Sprite *sprite);
+static void sub_80B67A0(struct Sprite *sprite);
+static void sub_80B67D4(struct Sprite *sprite);
+static void sub_80B68A8(struct Sprite *sprite);
+static void sub_80B696C(u8 taskId);
+static void sub_80B6AF8(struct Sprite *sprite);
+static void sub_80B7158(struct Sprite *sprite);
+static void sub_80B6BE4(u8 taskId);
+static void sub_80B6F30(u8 taskId);
+static void sub_80B6FC4(u8 taskId);
+static void sub_80B71B0(struct Sprite *sprite);
+
+static const union AffineAnimCmd gUnknown_83E75A8[] =
+{
+ AFFINEANIMCMD_FRAME(0x1E, 0x1E, 10, 5),
+ AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 10, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd *const gUnknown_83E75C0[] =
+{
+ gUnknown_83E75A8,
+};
+
+const struct SpriteTemplate gUnknown_83E75C4 =
+{
+ .tileTag = ANIM_TAG_YELLOW_BALL,
+ .paletteTag = ANIM_TAG_YELLOW_BALL,
+ .oam = &gOamData_83ACA90,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E75C0,
+ .callback = sub_80B5268,
+};
+
+const struct SpriteTemplate gUnknown_83E75DC =
+{
+ .tileTag = ANIM_TAG_YELLOW_BALL,
+ .paletteTag = ANIM_TAG_YELLOW_BALL,
+ .oam = &gOamData_83ACAF0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B5450,
+};
+
+static const union AffineAnimCmd gUnknown_83E75F4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7604[] =
+{
+ gUnknown_83E75F4,
+};
+
+const struct SpriteTemplate gShadowBallSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SHADOW_BALL,
+ .paletteTag = ANIM_TAG_SHADOW_BALL,
+ .oam = &gOamData_83ACA38,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7604,
+ .callback = InitAnimShadowBall,
+};
+
+const union AnimCmd gUnknown_83E7620[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(8, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(24, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E7638[] =
+{
+ gUnknown_83E7620,
+};
+
+const struct SpriteTemplate gUnknown_83E763C =
+{
+ .tileTag = ANIM_TAG_LICK,
+ .paletteTag = ANIM_TAG_LICK,
+ .oam = &gOamData_83ACA18,
+ .anims = gUnknown_83E7638,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B57F8,
+};
+
+// not used
+static const union AffineAnimCmd gUnknown_83E7654[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+// not used
+static const union AffineAnimCmd *const gUnknown_83E7664[] =
+{
+ gUnknown_83E7654,
+};
+
+const struct SpriteTemplate gUnknown_83E7668 =
+{
+ .tileTag = ANIM_TAG_WHITE_SHADOW,
+ .paletteTag = ANIM_TAG_WHITE_SHADOW,
+ .oam = &gOamData_83ACB20,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B5EC0,
+};
+
+const struct SpriteTemplate gUnknown_83E7680 =
+{
+ .tileTag = ANIM_TAG_NAIL,
+ .paletteTag = ANIM_TAG_NAIL,
+ .oam = &gOamData_83ACB18,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B664C,
+};
+
+const struct SpriteTemplate gUnknown_83E7698 =
+{
+ .tileTag = ANIM_TAG_GHOSTLY_SPIRIT,
+ .paletteTag = ANIM_TAG_GHOSTLY_SPIRIT,
+ .oam = &gOamData_83ACAF8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B67D4,
+};
+
+const struct SpriteTemplate gUnknown_83E76B0 =
+{
+ .tileTag = ANIM_TAG_DEVIL,
+ .paletteTag = ANIM_TAG_DEVIL,
+ .oam = &gOamData_83ACAF8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B67D4,
+};
+
+static const union AnimCmd gUnknown_83E76C8[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gUnknown_83E76DC[] =
+{
+ gUnknown_83E76C8,
+};
+
+const struct SpriteTemplate gUnknown_83E76E0 =
+{
+ .tileTag = ANIM_TAG_PURPLE_FLAME,
+ .paletteTag = ANIM_TAG_PURPLE_FLAME,
+ .oam = &gOamData_83ACB38,
+ .anims = gUnknown_83E76DC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B6AF8,
+};
+
+const struct SpriteTemplate gUnknown_83E76F8 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B7158,
+};
+
+static void sub_80B5268(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sub_8075678(sprite);
+ sprite->callback = sub_80B52D0;
+ sprite->data[6] = 16;
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[6]);
+}
+
+static void sub_80B52D0(struct Sprite *sprite)
+{
+ s16 r0, r2;
+
+ sub_80B53C0(sprite);
+ if (AnimTranslateLinear(sprite))
+ {
+ sprite->callback = sub_80B5344;
+ return;
+ }
+ sprite->pos2.x += Sin(sprite->data[5], 10);
+ sprite->pos2.y += Cos(sprite->data[5], 15);
+ r2 = sprite->data[5];
+ sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
+ r0 = sprite->data[5];
+ if (r2 != 0 && r2 <= 196)
+ return;
+ if (r0 <= 0)
+ return;
+ PlaySE12WithPanning(SE_W109, gUnknown_2037F24);
+}
+
+static void sub_80B5344(struct Sprite *sprite)
+{
+ s16 r2, r0;
+
+ sprite->data[0] = 1;
+ AnimTranslateLinear(sprite);
+ sprite->pos2.x += Sin(sprite->data[5], 10);
+ sprite->pos2.y += Cos(sprite->data[5], 15);
+ r2 = sprite->data[5];
+ sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
+ r0 = sprite->data[5];
+ if ((r2 == 0 || r2 > 196) && r0 > 0)
+ PlaySE(SE_W109);
+ if (sprite->data[6] == 0)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = DestroyAnimSpriteAndDisableBlend;
+ }
+ else
+ {
+ sub_80B53C0(sprite);
+ }
+}
+
+static void sub_80B53C0(struct Sprite *sprite)
+{
+ s16 r0;
+
+ if (sprite->data[6] > 0xFF)
+ {
+ if (++sprite->data[6] == 0x10d)
+ sprite->data[6] = 0;
+ return;
+ }
+ r0 = sprite->data[7];
+ ++sprite->data[7];
+ if ((r0 & 0xFF) == 0)
+ {
+ sprite->data[7] &= 0xff00;
+ if ((sprite->data[7] & 0x100) != 0)
+ ++sprite->data[6];
+ else
+ --sprite->data[6];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], 16 - sprite->data[6]));
+ if (sprite->data[6] == 0 || sprite->data[6] == 16)
+ sprite->data[7] ^= 0x100;
+ if (sprite->data[6] == 0)
+ sprite->data[6] = 0x100;
+ }
+}
+
+static void sub_80B5450(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->callback = sub_80B5470;
+ sprite->callback(sprite);
+}
+
+static void sub_80B5470(struct Sprite *sprite)
+{
+ u16 temp1;
+
+ sprite->pos2.x = Sin(sprite->data[0], 32);
+ sprite->pos2.y = Cos(sprite->data[0], 8);
+ temp1 = sprite->data[0] - 65;
+ if (temp1 <= 130)
+ sprite->oam.priority = 2;
+ else
+ sprite->oam.priority = 1;
+ sprite->data[0] = (sprite->data[0] + 19) & 0xFF;
+ sprite->data[2] += 80;
+ sprite->pos2.y += sprite->data[2] >> 8;
+ sprite->data[7] += 1;
+ if (sprite->data[7] == 61)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80B54E8(u8 taskId)
+{
+ u8 spriteId;
+
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ spriteId = GetAnimBattlerSpriteId(0);
+ PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
+ SetSpriteRotScale(spriteId, 128, 128, 0);
+ gSprites[spriteId].invisible = FALSE;
+ gTasks[taskId].data[0] = 128;
+ gTasks[taskId].data[1] = *gBattleAnimArgs;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 16;
+ gTasks[taskId].func = sub_80B5570;
+}
+
+static void sub_80B5570(u8 taskId)
+{
+ gTasks[taskId].data[10] += 1;
+ if (gTasks[taskId].data[10] == 3)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[2] += 1;
+ gTasks[taskId].data[3] -= 1;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[2], gTasks[taskId].data[3]));
+ if (gTasks[taskId].data[2] != 9)
+ return;
+ gTasks[taskId].func = sub_80B55C8;
+ }
+}
+
+static void sub_80B55C8(u8 taskId)
+{
+ u8 spriteId;
+
+ if (gTasks[taskId].data[1] > 0)
+ {
+ gTasks[taskId].data[1] -= 1;
+ return;
+ }
+ spriteId = GetAnimBattlerSpriteId(0);
+ gTasks[taskId].data[0] += 8;
+ if (gTasks[taskId].data[0] <= 0xFF)
+ {
+ SetSpriteRotScale(spriteId, gTasks[taskId].data[0], gTasks[taskId].data[0], 0);
+ }
+ else
+ {
+ ResetSpriteRotScale(spriteId);
+ DestroyAnimVisualTask(taskId);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ }
+}
+
+// Spins a sprite towards the target, pausing in the middle.
+// Used in Shadow Ball.
+// arg 0: duration step 1 (attacker -> center)
+// arg 1: duration step 2 (spin center)
+// arg 2: duration step 3 (center -> target)
+static void InitAnimShadowBall(struct Sprite *sprite)
+{
+ s16 oldPosX = sprite->pos1.x;
+ s16 oldPosY = sprite->pos1.y;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] = gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[6] = ((oldPosX - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->data[7] = ((oldPosY - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->callback = AnimShadowBallStep;
+}
+
+static void AnimShadowBallStep(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->data[1] -= 1;
+ if (sprite->data[1] > 0)
+ break;
+ sprite->data[0] += 1;
+ break;
+ case 1:
+ sprite->data[2] -= 1;
+ if (sprite->data[2] > 0)
+ break;
+ sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3];
+ sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3];
+ sprite->data[0] += 1;
+ break;
+ case 2:
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->data[3] -= 1;
+ if (sprite->data[3] > 0)
+ break;
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[0] += 1;
+ break;
+ case 3:
+ DestroySpriteAndMatrix(sprite);
+ break;
+ }
+}
+
+static void sub_80B57F8(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->callback = sub_80B5810;
+}
+
+static void sub_80B5810(struct Sprite *sprite)
+{
+ bool8 r5 = FALSE;
+ bool8 r6 = FALSE;
+
+ if (sprite->animEnded)
+ {
+ if (!sprite->invisible)
+ sprite->invisible = TRUE;
+
+ switch (sprite->data[0])
+ {
+ default:
+ r6 = TRUE;
+ break;
+ case 0:
+ if (sprite->data[1] == 2)
+ r5 = TRUE;
+ break;
+ case 1:
+ if (sprite->data[1] == 4)
+ r5 = TRUE;
+ break;
+ }
+ if (r5)
+ {
+ sprite->invisible ^= 1;
+ ++sprite->data[2];
+ sprite->data[1] = 0;
+ if (sprite->data[2] == 5)
+ {
+ sprite->data[2] = 0;
+ ++sprite->data[0];
+ }
+ }
+ else if (r6)
+ {
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ ++sprite->data[1];
+ }
+ }
+}
+
+void sub_80B58AC(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ task->data[0] = CloneBattlerSpriteWithBlend(1);
+ if (task->data[0] < 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ task->data[1] = 0;
+ task->data[2] = 15;
+ task->data[3] = 2;
+ task->data[4] = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3]));
+ gSprites[task->data[0]].data[0] = 80;
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ {
+ gSprites[task->data[0]].data[1] = -144;
+ gSprites[task->data[0]].data[2] = 112;
+ }
+ else
+ {
+ gSprites[task->data[0]].data[1] = 144;
+ gSprites[task->data[0]].data[2] = -112;
+ }
+ gSprites[task->data[0]].data[3] = 0;
+ gSprites[task->data[0]].data[4] = 0;
+ StoreSpriteCallbackInData6(&gSprites[task->data[0]], SpriteCallbackDummy);
+ gSprites[task->data[0]].callback = TranslateSpriteLinearFixedPoint;
+ task->func = sub_80B59D4;
+}
+
+static void sub_80B59D4(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ switch (task->data[4])
+ {
+ case 0:
+ task->data[1] += 1;
+ task->data[5] = task->data[1] & 3;
+ if (task->data[5] == 1)
+ if (task->data[2] > 0)
+ task->data[2] -= 1;
+ if (task->data[5] == 3)
+ if (task->data[3] <= 15)
+ task->data[3] += 1;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3]));
+ if (task->data[3] != 16 || task->data[2] != 0)
+ break;
+ if (task->data[1] <= 80)
+ break;
+ obj_delete_but_dont_free_vram(&gSprites[task->data[0]]);
+ task->data[4] = 1;
+ break;
+ case 1:
+ if (++task->data[6] <= 1)
+ break;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ task->data[4] += 1;
+ break;
+ case 2:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80B5AAC(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ task->data[15] = 0;
+ task->func = sub_80B5AD4;
+ task->func(taskId);
+}
+
+static void sub_80B5AD4(u8 taskId)
+{
+ s16 startLine;
+ struct Task *task = &gTasks[taskId];
+ u8 position = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
+
+ switch (task->data[15])
+ {
+ case 0:
+ task->data[14] = AllocSpritePalette(ANIM_TAG_BENT_SPOON);
+ if (task->data[14] == 0xFF || task->data[14] == 0xF)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ task->data[0] = CloneBattlerSpriteWithBlend(1);
+ if (task->data[0] < 0)
+ {
+ FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON);
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ s16 mask2;
+
+ gSprites[task->data[0]].oam.paletteNum = task->data[14];
+ gSprites[task->data[0]].oam.objMode = ST_OAM_OBJ_NORMAL;
+ gSprites[task->data[0]].oam.priority = 3;
+ gSprites[task->data[0]].invisible = (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].invisible);
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 16;
+ task->data[13] = GetAnimBattlerSpriteId(1);
+ task->data[4] = (gSprites[task->data[13]].oam.paletteNum + 16) * 16;
+ if (position == 1)
+ {
+ u16 mask = DISPCNT_BG1_ON;
+
+ mask2 = mask;
+ }
+ else
+ {
+ u16 mask = DISPCNT_BG2_ON;
+
+ mask2 = mask;
+ }
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, mask2);
+ ++task->data[15];
+ }
+ }
+ break;
+ case 1:
+ task->data[14] = (task->data[14] + 16) * 16;
+ CpuSet(&gPlttBufferUnfaded[task->data[4]], &gPlttBufferFaded[task->data[14]], 0x4000008);
+ BlendPalette(task->data[4], 16, 10, RGB(13, 0, 15));
+ ++task->data[15];
+ break;
+ case 2:
+ startLine = gSprites[task->data[13]].pos1.y + gSprites[task->data[13]].pos2.y - 32;
+ if (startLine < 0)
+ startLine = 0;
+ if (position == 1)
+ task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, 4, 1);
+ else
+ task->data[10] = ScanlineEffect_InitWave(startLine, startLine + 64, 2, 6, 0, 8, 1);
+ ++task->data[15];
+ break;
+ case 3:
+ if (position == 1)
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1));
+ else
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG2));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ ++task->data[15];
+ break;
+ case 4:
+ if (position == 1)
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ task->func = sub_80B5D38;
+ ++task->data[15];
+ break;
+ default:
+ ++task->data[15];
+ break;
+ }
+}
+
+static void sub_80B5D38(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ ++task->data[1];
+ task->data[5] = task->data[1] & 1;
+ if (task->data[5] == 0)
+ task->data[2] = gSineTable[task->data[1]] / 18;
+ if (task->data[5] == 1)
+ task->data[3] = 16 - (gSineTable[task->data[1]] / 18);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3]));
+ if (task->data[1] == 128)
+ {
+ task->data[15] = 0;
+ task->func = sub_80B5DCC;
+ task->func(taskId);
+ }
+}
+
+static void sub_80B5DCC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ u8 rank = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
+
+ switch (task->data[15])
+ {
+ case 0:
+ gScanlineEffect.state = 3;
+ task->data[14] = GetAnimBattlerSpriteId(1);
+ if (rank == 1)
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ break;
+ case 1:
+ BlendPalette(task->data[4], 16, 0, RGB(13, 0, 15));
+ break;
+ case 2:
+ gSprites[task->data[14]].invisible = TRUE;
+ obj_delete_but_dont_free_vram(&gSprites[task->data[0]]);
+ FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ if (rank == 1)
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+ ++task->data[15];
+}
+
+static void sub_80B5EC0(struct Sprite *sprite)
+{
+ s16 battler1X, battler1Y;
+ s16 battler2X, battler2Y;
+ s16 yDiff;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28;
+ battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28;
+ }
+ else
+ {
+ battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28;
+ battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28;
+ }
+ yDiff = battler2Y - battler1Y;
+ sprite->data[0] = battler1X * 16;
+ sprite->data[1] = battler1Y * 16;
+ sprite->data[2] = ((battler2X - battler1X) * 16) / gBattleAnimArgs[1];
+ sprite->data[3] = (yDiff * 16) / gBattleAnimArgs[1];
+ sprite->data[4] = gBattleAnimArgs[1];
+ sprite->data[5] = battler2X;
+ sprite->data[6] = battler2Y;
+ sprite->data[7] = sprite->data[4] / 2;
+ sprite->oam.priority = 2;
+ sprite->pos1.x = battler1X;
+ sprite->pos1.y = battler1Y;
+ sprite->callback = sub_80B5FE0;
+ sprite->invisible = TRUE;
+}
+
+static void sub_80B5FE0(struct Sprite *sprite)
+{
+ if (sprite->data[4])
+ {
+ sprite->data[0] += sprite->data[2];
+ sprite->data[1] += sprite->data[3];
+ sprite->pos1.x = sprite->data[0] >> 4;
+ sprite->pos1.y = sprite->data[1] >> 4;
+ if (--sprite->data[4] == 0)
+ sprite->data[0] = 0;
+ }
+}
+
+void sub_80B6020(u8 taskId)
+{
+ struct Task *task;
+ s16 battler;
+ u8 spriteId;
+ s16 baseX, baseY;
+ s16 x, y;
+
+ task = &gTasks[taskId];
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ task->data[5] = 0;
+ task->data[6] = 0;
+ task->data[7] = 0;
+ task->data[8] = 0;
+ task->data[9] = 16;
+ task->data[10] = gBattleAnimArgs[0];
+ baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM);
+ if (!IsContest())
+ {
+ for (battler = 0; battler < 4; ++battler)
+ {
+ if (battler != gBattleAnimAttacker
+ && battler != (gBattleAnimAttacker ^ 2)
+ && IsBattlerSpriteVisible(battler))
+ {
+ spriteId = CreateSprite(&gUnknown_83E7668, baseX, baseY, 55);
+ if (spriteId != MAX_SPRITES)
+ {
+ x = GetBattlerSpriteCoord(battler, 2);
+ y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_BOTTOM);
+ gSprites[spriteId].data[0] = baseX << 4;
+ gSprites[spriteId].data[1] = baseY << 4;
+ gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[3] = ((y - baseY) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[4] = gBattleAnimArgs[1];
+ gSprites[spriteId].data[5] = x;
+ gSprites[spriteId].data[6] = y;
+ gSprites[spriteId].callback = sub_80B5FE0;
+ task->data[task->data[12] + 13] = spriteId;
+ ++task->data[12];
+ }
+ }
+ }
+ }
+ else
+ {
+ spriteId = CreateSprite(&gUnknown_83E7668, baseX, baseY, 55);
+ if (spriteId != MAX_SPRITES)
+ {
+ x = 48;
+ y = 40;
+ gSprites[spriteId].data[0] = baseX << 4;
+ gSprites[spriteId].data[1] = baseY << 4;
+ gSprites[spriteId].data[2] = ((x - baseX) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[3] = ((y - baseY) << 4) / gBattleAnimArgs[1];
+ gSprites[spriteId].data[4] = gBattleAnimArgs[1];
+ gSprites[spriteId].data[5] = x;
+ gSprites[spriteId].data[6] = y;
+ gSprites[spriteId].callback = sub_80B5FE0;
+ task->data[13] = spriteId;
+ task->data[12] = 1;
+ }
+ }
+ task->func = sub_80B623C;
+}
+
+static void sub_80B623C(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (task->data[6] == 0)
+ {
+ if (++task->data[5] > 1)
+ {
+ task->data[5] = 0;
+ ++task->data[7];
+ if (task->data[7] & 1)
+ {
+ if (task->data[8] < 16)
+ ++task->data[8];
+ }
+ else
+ {
+ if (task->data[9])
+ --task->data[9];
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[8], task->data[9]));
+ if (task->data[7] >= 24)
+ {
+ task->data[7] = 0;
+ task->data[6] = 1;
+ }
+ }
+ }
+ if (task->data[10])
+ --task->data[10];
+ else if (task->data[6])
+ ++task->data[0];
+ break;
+ case 1:
+ if (++task->data[5] > 1)
+ {
+ task->data[5] = 0;
+ ++task->data[7];
+ if (task->data[7] & 1)
+ {
+ if (task->data[8])
+ --task->data[8];
+ }
+ else if (task->data[9] < 16)
+ {
+ ++task->data[9];
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[8], task->data[9]));
+ if (task->data[8] == 0 && task->data[9] == 16)
+ {
+ for (i = 0; i < task->data[12]; ++i)
+ DestroySprite(&gSprites[task->data[i + 13]]);
+ ++task->data[0];
+ }
+ }
+ break;
+ case 2:
+ if (++task->data[5] > 0)
+ ++task->data[0];
+ break;
+ case 3:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80B63B4(u8 taskId)
+{
+ s16 startX, startY;
+ s16 leftDistance, topDistance, bottomDistance, rightDistance;
+
+ 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_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR)));
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN));
+ SetGpuReg(REG_OFFSET_BLDY, 0x10);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest())
+ startX = 40;
+ else
+ startX = 200;
+ gBattle_WIN0H = WIN_RANGE(startX, startX);
+ startY = 40;
+ gBattle_WIN0V = WIN_RANGE(startY, startY);
+ leftDistance = startX;
+ rightDistance = 240 - startX;
+ topDistance = startY;
+ bottomDistance = 72;
+ gTasks[taskId].data[1] = leftDistance;
+ gTasks[taskId].data[2] = rightDistance;
+ gTasks[taskId].data[3] = topDistance;
+ gTasks[taskId].data[4] = bottomDistance;
+ gTasks[taskId].data[5] = startX;
+ gTasks[taskId].data[6] = startY;
+ gTasks[taskId].func = sub_80B6468;
+}
+
+static void sub_80B6468(u8 taskId)
+{
+ s16 step, leftDistance, rightDistance, topDistance, bottomDistance, startX, startY;
+ u16 left, right, top, bottom, selectedPalettes;
+
+ step = gTasks[taskId].data[0];
+ ++gTasks[taskId].data[0];
+ leftDistance = gTasks[taskId].data[1];
+ rightDistance = gTasks[taskId].data[2];
+ topDistance = gTasks[taskId].data[3];
+ bottomDistance = gTasks[taskId].data[4];
+ startX = gTasks[taskId].data[5];
+ startY = gTasks[taskId].data[6];
+ if (step < 16)
+ {
+ left = startX - (leftDistance * 0.0625) * step;
+ right = startX + (rightDistance * 0.0625) * step;
+ top = startY - (topDistance * 0.0625) * step;
+ bottom = startY + (bottomDistance * 0.0625) * step;
+ }
+ else
+ {
+ left = 0;
+ right = 240;
+ top = 0;
+ bottom = 112;
+ selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0);
+ BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0));
+ gTasks[taskId].func = sub_80B65F0;
+ }
+ gBattle_WIN0H = WIN_RANGE(left, right);
+ gBattle_WIN0V = WIN_RANGE(top, bottom);
+}
+
+static void sub_80B65F0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ 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)));
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80B664C(struct Sprite *sprite)
+{
+ s16 xDelta, xDelta2;
+
+ InitSpritePosToAnimAttacker(sprite, 1);
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ xDelta = 24;
+ xDelta2 = -2;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
+ }
+ else
+ {
+ xDelta = -24;
+ xDelta2 = 2;
+ }
+ sprite->pos1.x += xDelta;
+ sprite->data[1] = xDelta2;
+ sprite->data[0] = 60;
+ sprite->callback = sub_80B66A8;
+}
+
+static void sub_80B66A8(struct Sprite *sprite)
+{
+ u16 var0;
+
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ }
+ else
+ {
+ sprite->pos2.x += sprite->data[1];
+ var0 = sprite->pos2.x + 7;
+ if (var0 > 14)
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos2.x = 0;
+ sprite->oam.tileNum += 8;
+ if (++sprite->data[2] == 3)
+ {
+ sprite->data[0] = 30;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, sub_80B6728);
+ }
+ else
+ {
+ sprite->data[0] = 40;
+ }
+ }
+ }
+}
+
+static void sub_80B6728(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+ ++sprite->data[0];
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ }
+ else if (sprite->data[1] < 2)
+ {
+ ++sprite->data[1];
+ }
+ else
+ {
+ sprite->data[1] = 0;
+ ++sprite->data[2];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND2(16 - sprite->data[2], sprite->data[2]));
+ if (sprite->data[2] == 16)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80B67A0;
+ }
+ }
+}
+
+static void sub_80B67A0(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80B67D4(struct Sprite *sprite)
+{
+ u16 coeffB, coeffA;
+
+ sprite->pos2.x = Sin(sprite->data[0], 12);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos2.x = -sprite->pos2.x;
+ sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
+ sprite->data[1] += 0x100;
+ sprite->pos2.y = -(sprite->data[1] >> 8);
+ ++sprite->data[7];
+ if (sprite->data[7] == 1)
+ {
+ sprite->data[6] = 0x050B;
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[6]);
+ }
+ else if (sprite->data[7] > 30)
+ {
+ ++sprite->data[2];
+ coeffB = sprite->data[6] >> 8;
+ coeffA = sprite->data[6] & 0xFF;
+ if (++coeffB > 16)
+ coeffB = 16;
+ --coeffA;
+ if ((s16)coeffA < 0)
+ coeffA = 0;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(coeffA, coeffB));
+ sprite->data[6] = BLDALPHA_BLEND(coeffA, coeffB);
+ if (coeffB == 16 && coeffA == 0)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80B68A8;
+ }
+ }
+}
+
+static void sub_80B68A8(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80B68C8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = 0;
+ task->data[1] = 16;
+ task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ task->data[10] = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
+ task->data[11] = (GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2) + 8;
+ task->data[7] = 0;
+ task->data[5] = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
+ task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 2;
+ task->data[3] = 0;
+ task->data[4] = 16;
+ SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ task->data[8] = 0;
+ task->func = sub_80B696C;
+}
+
+static void sub_80B696C(u8 taskId)
+{
+ u16 i;
+ u8 spriteId;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ for (i = 0; i < 6; ++i)
+ {
+ spriteId = CreateSprite(&gUnknown_83E76E0, task->data[9], task->data[10], task->data[6]);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER;
+ gSprites[spriteId].data[2] = (i * 42) & 0xFF;
+ gSprites[spriteId].data[3] = task->data[11];
+ gSprites[spriteId].data[5] = i * 6;
+ ++task->data[7];
+ }
+ }
+ ++task->data[0];
+ break;
+ case 1:
+ if (++task->data[1] & 1)
+ {
+ if (task->data[3] < 14)
+ ++task->data[3];
+ }
+ else if (task->data[4] > 4)
+ {
+ --task->data[4];
+ }
+ if (task->data[3] == 14 && task->data[4] == 4)
+ {
+ task->data[1] = 0;
+ ++task->data[0];
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4]));
+ break;
+ case 2:
+ if (++task->data[1] > 30)
+ {
+ task->data[1] = 0;
+ ++task->data[0];
+ }
+ break;
+ case 3:
+ if (++task->data[1] & 1)
+ {
+ if (task->data[3] > 0)
+ --task->data[3];
+ }
+ else if (task->data[4] < 16)
+ {
+ ++task->data[4];
+ }
+
+ if (task->data[3] == 0 && task->data[4] == 16)
+ {
+ task->data[8] = 1;
+ ++task->data[0];
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4]));
+ break;
+ case 4:
+ if (task->data[7] == 0)
+ ++task->data[0];
+ break;
+ case 5:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B6AF8(struct Sprite *sprite)
+{
+ u16 index;
+
+ if (sprite->data[1] == 0)
+ sprite->data[2] += 2;
+ else
+ sprite->data[2] -= 2;
+ sprite->data[2] &= 0xFF;
+ sprite->pos2.x = Sin(sprite->data[2], sprite->data[3]);
+ index = sprite->data[2] - 65;
+ if (index < 127)
+ sprite->oam.priority = gTasks[sprite->data[0]].data[5] + 1;
+ else
+ sprite->oam.priority = gTasks[sprite->data[0]].data[5];
+ ++sprite->data[5];
+ sprite->data[6] = (sprite->data[5] * 8) & 0xFF;
+ sprite->pos2.y = Sin(sprite->data[6], 7);
+ if (gTasks[sprite->data[0]].data[8])
+ {
+ --gTasks[sprite->data[0]].data[7];
+ DestroySprite(sprite);
+ }
+}
+
+void sub_80B6BBC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[15] = 0;
+ task->func = sub_80B6BE4;
+ sub_80B6BE4(taskId);
+}
+
+static void sub_80B6BE4(u8 taskId)
+{
+ s16 y;
+ struct BattleAnimBgData animBgData;
+ struct Task *task = &gTasks[taskId];
+ u8 rank = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
+
+ switch (task->data[15])
+ {
+ case 0:
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 2);
+ SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 1);
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 16;
+ task->data[4] = GetAnimBattlerSpriteId(0);
+ task->data[5] = gSprites[task->data[4]].oam.priority;
+ task->data[6] = (gSprites[task->data[4]].oam.paletteNum + 16) << 4;
+ gSprites[task->data[4]].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[task->data[4]].oam.priority = 3;
+ task->data[7] = 128;
+ break;
+ case 1:
+ ++task->data[1];
+ if (task->data[1] & 1)
+ return;
+ BlendPalette(task->data[6], 0x10, task->data[2], RGB(0, 23, 25));
+ BlendPalette(task->data[7], 0x10, task->data[2], RGB(0, 23, 25));
+ if (task->data[2] <= 11)
+ {
+ ++task->data[2];
+ return;
+ }
+ task->data[1] = 0;
+ task->data[2] = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ break;
+ case 2:
+ SetAnimBgAttribute(2, BG_ANIM_CHAR_BASE_BLOCK, 1);
+ SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 0);
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X);
+ SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y);
+ sub_80752C8(&animBgData, 2);
+ AnimLoadCompressedBgGfx(animBgData.bgId, gFile_graphics_battle_anims_backgrounds_scary_face_sheet, animBgData.tilesOffset);
+ LoadCompressedPalette(gFile_graphics_battle_anims_backgrounds_scary_face_palette, 16 * animBgData.paletteId, 0x20);
+ break;
+ case 3:
+ sub_80752C8(&animBgData, 2);
+ gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
+ LZDecompressWram(gFile_graphics_battle_anims_backgrounds_scary_face_player_tilemap, gMonSpritesGfxPtr->field_17C);
+ sub_80730C0(animBgData.paletteId, gMonSpritesGfxPtr->field_17C, 256, 0);
+ CopyToBgTilemapBufferRect_ChangePalette(animBgData.bgId, gMonSpritesGfxPtr->field_17C, 0, 0, 0x20, 0x20, 0x11);
+ CopyBgTilemapBufferToVram(2);
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->field_17C);
+ break;
+ case 4:
+ ++task->data[1];
+ if (task->data[1] & 1)
+ return;
+ ++task->data[2];
+ --task->data[3];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3]));
+ if (task->data[3])
+ return;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 16;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
+ break;
+ case 5:
+ if (rank == 1)
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ break;
+ case 6:
+ y = gSprites[task->data[4]].pos1.y + gSprites[task->data[4]].pos2.y - 0x20;
+ if (y < 0)
+ y = 0;
+ if (rank == 1)
+ task->data[10] = ScanlineEffect_InitWave(y, y + 0x40, 4, 8, 0, 4, 1);
+ else
+ task->data[10] = ScanlineEffect_InitWave(y, y + 0x40, 4, 8, 0, 8, 1);
+ break;
+ case 7:
+ BlendPalette(task->data[7], 0x10, 0xC, RGB(31, 31, 29));
+ if (rank == 1)
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON);
+ else
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ task->func = sub_80B6F30;
+ task->data[15] = 0;
+ break;
+ }
+ ++task->data[15];
+}
+
+static void sub_80B6F30(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ ++task->data[1];
+ task->data[8] = task->data[1] & 1;
+ if (!task->data[8])
+ task->data[2] = gSineTable[task->data[1]] / 18;
+ if (task->data[8] == 1)
+ task->data[3] = 16 - gSineTable[task->data[1]] / 18;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3]));
+ if (task->data[1] == 128)
+ {
+ task->data[15] = 0;
+ task->func = sub_80B6FC4;
+ sub_80B6FC4(taskId);
+ }
+}
+
+static void sub_80B6FC4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[15])
+ {
+ case 0:
+ gScanlineEffect.state = 3;
+ BlendPalette(task->data[7], 0x10, 0xC, RGB(0, 23, 25));
+ break;
+ case 1:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0x10, 0));
+ task->data[2] = 16;
+ task->data[3] = 0;
+ break;
+ case 2:
+ --task->data[2];
+ ++task->data[3];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[2], task->data[3]));
+ if (task->data[3] <= 15)
+ return;
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 2);
+ SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
+ break;
+ case 3:
+ sub_8075358(2);
+ FillPalette(0, 0x90, 0x20);
+ SetAnimBgAttribute(2, BG_ANIM_CHAR_BASE_BLOCK, 0);
+ task->data[1] = 12;
+ break;
+ case 4:
+ BlendPalette(task->data[6], 0x10, task->data[1], RGB(0, 23, 25));
+ BlendPalette(task->data[7], 0x10, task->data[1], RGB(0, 23, 25));
+ if ( task->data[1] )
+ {
+ --task->data[1];
+ return;
+ }
+ task->data[1] = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10));
+ break;
+ case 5:
+ gSprites[task->data[4]].oam.priority = task->data[5];
+ gSprites[task->data[4]].oam.objMode = ST_OAM_OBJ_NORMAL;
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 1);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_NONE);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+ ++task->data[15];
+}
+
+static void sub_80B7158(struct Sprite *sprite)
+{
+ sprite->invisible = TRUE;
+ sprite->data[5] = gBattlerSpriteIds[gBattleAnimAttacker];
+ sprite->data[0] = 128;
+ sprite->data[1] = 10;
+ sprite->data[2] = gBattleAnimArgs[0];
+ sprite->data[3] = gBattleAnimArgs[1];
+ sprite->callback = sub_80B71B0;
+ gSprites[sprite->data[5]].pos1.y += 8;
+}
+
+static void sub_80B71B0(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ --sprite->data[3];
+ gSprites[sprite->data[5]].pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ gSprites[sprite->data[5]].pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->data[0] += sprite->data[2];
+ if (sprite->data[0] > 255)
+ sprite->data[0] -= 256;
+ }
+ else
+ {
+ gSprites[sprite->data[5]].pos2.x = 0;
+ gSprites[sprite->data[5]].pos2.y = 0;
+ gSprites[sprite->data[5]].pos1.y -= 8;
+ sprite->callback = DestroySpriteAndMatrix;
+ }
+}
diff --git a/src/ground.c b/src/ground.c
new file mode 100644
index 000000000..4ae4d8370
--- /dev/null
+++ b/src/ground.c
@@ -0,0 +1,724 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "random.h"
+#include "scanline_effect.h"
+#include "task.h"
+#include "trig.h"
+
+static void AnimBonemerangProjectile(struct Sprite *sprite);
+static void AnimBoneHitProjectile(struct Sprite *sprite);
+static void AnimDirtScatter(struct Sprite *sprite);
+static void AnimMudSportDirt(struct Sprite *sprite);
+static void AnimFissureDirtPlumeParticle(struct Sprite *sprite);
+static void AnimDigDirtMound(struct Sprite *sprite);
+static void AnimBonemerangProjectileStep(struct Sprite *sprite);
+static void AnimBonemerangProjectileEnd(struct Sprite *sprite);
+static void AnimMudSportDirtRising(struct Sprite *sprite);
+static void AnimMudSportDirtFalling(struct Sprite *sprite);
+static void sub_80B8ED4(u8 taskId);
+static void sub_80B908C(u8 taskId);
+static void sub_80B92B8(u8 useBg1, s16 y, s16 endY);
+static void sub_80B912C(u8 taskId);
+static void sub_80B91B0(u8 taskId);
+static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite);
+static void sub_80B9584(u8 taskId);
+static void sub_80B967C(u8 taskId);
+static void sub_80B9760(struct Task *task);
+static void sub_80B98A8(u8 taskId);
+
+static const union AffineAnimCmd gUnknown_83E7A00[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 15, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd gUnknown_83E7A10[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7A20[] =
+{
+ gUnknown_83E7A00,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7A24[] =
+{
+ gUnknown_83E7A10,
+};
+
+const struct SpriteTemplate gUnknown_83E7A28 =
+{
+ .tileTag = ANIM_TAG_BONE,
+ .paletteTag = ANIM_TAG_BONE,
+ .oam = &gOamData_83ACA38,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7A20,
+ .callback = AnimBonemerangProjectile,
+};
+
+const struct SpriteTemplate gUnknown_83E7A40 =
+{
+ .tileTag = ANIM_TAG_BONE,
+ .paletteTag = ANIM_TAG_BONE,
+ .oam = &gOamData_83ACA38,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7A24,
+ .callback = AnimBoneHitProjectile,
+};
+
+const struct SpriteTemplate gUnknown_83E7A58 =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gOamData_83AC9C8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimDirtScatter,
+};
+
+static const union AnimCmd gUnknown_83E7A70[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E7A78[] =
+{
+ gUnknown_83E7A70,
+};
+
+const struct SpriteTemplate gUnknown_83E7A7C =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gOamData_83AC9D0,
+ .anims = gUnknown_83E7A78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimDirtScatter,
+};
+
+const struct SpriteTemplate gUnknown_83E7A94 =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gOamData_83AC9D0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMudSportDirt,
+};
+
+const struct SpriteTemplate gUnknown_83E7AAC =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gOamData_83AC9C8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimFissureDirtPlumeParticle,
+};
+
+const struct SpriteTemplate gUnknown_83E7AC4 =
+{
+ .tileTag = ANIM_TAG_DIRT_MOUND,
+ .paletteTag = ANIM_TAG_DIRT_MOUND,
+ .oam = &gOamData_83AC9F8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimDigDirtMound,
+};
+
+// Moves a bone projectile towards the target mon, which moves like
+// a boomerang. After hitting the target mon, it comes back to the user.
+static void AnimBonemerangProjectile(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[0] = 20;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[5] = -40;
+ InitAnimArcTranslation(sprite);
+ sprite->callback = AnimBonemerangProjectileStep;
+}
+
+static void AnimBonemerangProjectileStep(struct Sprite *sprite)
+{
+ if (TranslateAnimHorizontalArc(sprite))
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[0] = 20;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[5] = 40;
+ InitAnimArcTranslation(sprite);
+ sprite->callback = AnimBonemerangProjectileEnd;
+ }
+}
+
+static void AnimBonemerangProjectileEnd(struct Sprite *sprite)
+{
+ if (TranslateAnimHorizontalArc(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+// Moves a bone projectile towards the target mon, starting right next to
+// the target mon.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+static void AnimBoneHitProjectile(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Moves a small dirt projectile towards the target mon.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: duration
+// arg 3: target x pixel offset
+// arg 4: target y pixel offset
+static void AnimDirtScatter(struct Sprite *sprite)
+{
+ u8 targetXPos, targetYPos;
+ s16 xOffset, yOffset;
+
+ InitSpritePosToAnimAttacker(sprite, 1);
+ targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 2);
+ targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 3);
+ xOffset = Random() & 0x1F;
+ yOffset = Random() & 0x1F;
+ if (xOffset > 16)
+ xOffset = 16 - xOffset;
+ if (yOffset > 16)
+ yOffset = 16 - yOffset;
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = targetXPos + xOffset;
+ sprite->data[4] = targetYPos + yOffset;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+}
+
+// Moves a particle of dirt in the Mud Sport animation.
+// The dirt can either be rising upward, or falling down.
+// arg 0: 0 = dirt is rising into the air, 1 = dirt is falling down
+// arg 1: initial x pixel offset
+// arg 2: initial y pixel offset
+static void AnimMudSportDirt(struct Sprite *sprite)
+{
+ ++sprite->oam.tileNum;
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1;
+ sprite->callback = AnimMudSportDirtRising;
+ }
+ else
+ {
+ sprite->pos1.x = gBattleAnimArgs[1];
+ sprite->pos1.y = gBattleAnimArgs[2];
+ sprite->pos2.y = -gBattleAnimArgs[2];
+ sprite->callback = AnimMudSportDirtFalling;
+ }
+}
+
+static void AnimMudSportDirtRising(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->pos1.x += sprite->data[0];
+ }
+ sprite->pos1.y -= 4;
+ if (sprite->pos1.y < -4)
+ DestroyAnimSprite(sprite);
+}
+
+static void AnimMudSportDirtFalling(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.y += 4;
+ if (sprite->pos2.y >= 0)
+ {
+ sprite->pos2.y = 0;
+ ++sprite->data[0];
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 0)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] == 10)
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_80B8E94(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[0] == 0)
+ task->func = sub_80B8ED4;
+ else
+ task->func = sub_80B908C;
+ task->func(taskId);
+}
+
+static void sub_80B8ED4(u8 taskId)
+{
+ u8 var0;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[10] = GetAnimBattlerSpriteId(0);
+ task->data[11] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
+ if (task->data[11] == 1)
+ {
+ task->data[12] = gBattle_BG1_X;
+ task->data[13] = gBattle_BG1_Y;
+ }
+ else
+ {
+ task->data[12] = gBattle_BG2_X;
+ task->data[13] = gBattle_BG2_Y;
+ }
+ var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
+ task->data[14] = var0 - 32;
+ task->data[15] = var0 + 32;
+ if (task->data[14] < 0)
+ task->data[14] = 0;
+ gSprites[task->data[10]].invisible = TRUE;
+ ++task->data[0];
+ break;
+ case 1:
+ sub_80B92B8(task->data[11], task->data[14], task->data[15]);
+ ++task->data[0];
+ break;
+ case 2:
+ task->data[2] = (task->data[2] + 6) & 0x7F;
+ if (++task->data[4] > 2)
+ {
+ task->data[4] = 0;
+ ++task->data[3];
+ }
+ task->data[5] = task->data[3] + (gSineTable[task->data[2]] >> 4);
+ if (task->data[11] == 1)
+ gBattle_BG1_Y = task->data[13] - task->data[5];
+ else
+ gBattle_BG2_Y = task->data[13] - task->data[5];
+
+ if (task->data[5] > 63)
+ {
+ task->data[5] = 120 - task->data[14];
+ if (task->data[11] == 1)
+ gBattle_BG1_Y = task->data[13] - task->data[5];
+ else
+ gBattle_BG2_Y = task->data[13] - task->data[5];
+
+ gSprites[task->data[10]].pos2.x = 272 - gSprites[task->data[10]].pos1.x;
+ ++task->data[0];
+ }
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ ++task->data[0];
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ gSprites[task->data[10]].invisible = TRUE;
+ break;
+ }
+}
+
+static void sub_80B908C(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
+ gBattle_BG1_Y = 0;
+ else
+ gBattle_BG2_Y = 0;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80B90EC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[0] == 0)
+ task->func = sub_80B912C;
+ else
+ task->func = sub_80B91B0;
+
+ task->func(taskId);
+}
+
+static void sub_80B912C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[10] = GetAnimBattlerSpriteId(0);
+ gSprites[task->data[10]].invisible = FALSE;
+ gSprites[task->data[10]].pos2.x = 0;
+ gSprites[task->data[10]].pos2.y = 160 - gSprites[task->data[10]].pos1.y;
+ ++task->data[0];
+ break;
+ case 1:
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80B91B0(u8 taskId)
+{
+ u8 var0;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[10] = GetAnimBattlerSpriteId(0);
+ task->data[11] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
+ if (task->data[11] == 1)
+ task->data[12] = gBattle_BG1_X;
+ else
+ task->data[12] = gBattle_BG2_X;
+
+ var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
+ task->data[14] = var0 - 32;
+ task->data[15] = var0 + 32;
+ ++task->data[0];
+ break;
+ case 1:
+ sub_80B92B8(task->data[11], 0, task->data[15]);
+ ++task->data[0];
+ break;
+ case 2:
+ gSprites[task->data[10]].pos2.y = 96;
+ ++task->data[0];
+ break;
+ case 3:
+ gSprites[task->data[10]].pos2.y -= 8;
+ if (gSprites[task->data[10]].pos2.y == 0)
+ {
+ gScanlineEffect.state = 3;
+ ++task->data[0];
+ }
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B92B8(u8 useBG1, s16 y, s16 endY)
+{
+ s16 bgX;
+ struct ScanlineEffectParams scanlineParams;
+
+ if (useBG1 == 1)
+ {
+ bgX = gBattle_BG1_X;
+ scanlineParams.dmaDest = &REG_BG1HOFS;
+ }
+ else
+ {
+ bgX = gBattle_BG2_X;
+ scanlineParams.dmaDest = &REG_BG2HOFS;
+ }
+ if (y < 0)
+ y = 0;
+ while (y < endY)
+ {
+ gScanlineEffectRegBuffers[0][y] = bgX;
+ gScanlineEffectRegBuffers[1][y] = bgX;
+ ++y;
+ }
+ while (y < 160)
+ {
+ gScanlineEffectRegBuffers[0][y] = bgX + 240;
+ gScanlineEffectRegBuffers[1][y] = bgX + 240;
+ ++y;
+ }
+ scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ ScanlineEffect_SetParams(scanlineParams);
+}
+
+// Moves a particle of dirt in a plume of dirt. Used in Fissure and Dig.
+// arg 0: which mon (0 = attacker, 1 = target)
+// arg 1: which side of mon (0 = left, 1 = right)
+// arg 2: target x offset
+// arg 3: target y offset
+// arg 4: wave amplitude
+// arg 5: duration
+static void AnimFissureDirtPlumeParticle(struct Sprite *sprite)
+{
+ s8 battler;
+ s16 xOffset;
+
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+ xOffset = 24;
+ if (gBattleAnimArgs[1] == 1)
+ {
+ xOffset *= -1;
+ gBattleAnimArgs[2] *= -1;
+ }
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + xOffset;
+ sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 30;
+ sprite->data[0] = gBattleAnimArgs[5];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[4];
+ InitAnimArcTranslation(sprite);
+ sprite->callback = AnimFissureDirtPlumeParticleStep;
+}
+
+static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite)
+{
+ if (TranslateAnimHorizontalArc(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+// Displays the dirt mound seen in the move Dig for set duration.
+// The dirt mound image is too large for a single sprite, so two
+// sprites are lined up next to each other.
+// arg 0: which mon (0 = attacker, 1 = target)
+// arg 1: oam tile num (0 = left half of image, 1 = right half of image)
+// arg 2: duration
+static void AnimDigDirtMound(struct Sprite *sprite)
+{
+ s8 battler;
+
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
+ sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 32;
+ sprite->oam.tileNum += gBattleAnimArgs[1] * 8;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = WaitAnimForDuration;
+}
+
+void sub_80B94B4(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[1])
+ task->data[14] = task->data[15] = gBattleAnimArgs[1] + 3;
+ else
+ task->data[14] = task->data[15] = (gAnimMovePower / 10) + 3;
+
+ task->data[3] = gBattleAnimArgs[2];
+ switch (gBattleAnimArgs[0])
+ {
+ case 5:
+ task->data[13] = gBattle_BG3_X;
+ task->func = sub_80B9584;
+ break;
+ case 4:
+ task->data[13] = 0;
+ for (i = 0; i < MAX_BATTLERS_COUNT; ++i)
+ {
+ if (IsBattlerSpriteVisible(i))
+ {
+ task->data[task->data[13] + 9] = gBattlerSpriteIds[i];
+ ++task->data[13];
+ }
+ }
+ task->func = sub_80B967C;
+ break;
+ default:
+ task->data[9] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ if (task->data[9] == 0xFF)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ task->data[13] = 1;
+ task->func = sub_80B967C;
+ }
+
+ break;
+ }
+}
+
+static void sub_80B9584(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if ((task->data[2] & 1) == 0)
+ gBattle_BG3_X = task->data[13] + task->data[15];
+ else
+ gBattle_BG3_X = task->data[13] - task->data[15];
+
+ if (++task->data[2] == task->data[3])
+ {
+ task->data[2] = 0;
+ --task->data[14];
+ ++task->data[0];
+ }
+ }
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if ((task->data[2] & 1) == 0)
+ gBattle_BG3_X = task->data[13] + task->data[14];
+ else
+ gBattle_BG3_X = task->data[13] - task->data[14];
+
+ if (++task->data[2] == 4)
+ {
+ task->data[2] = 0;
+ if (--task->data[14] == 0)
+ ++task->data[0];
+ }
+ }
+ break;
+ case 2:
+ gBattle_BG3_X = task->data[13];
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B967C(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ sub_80B9760(task);
+ if (++task->data[2] == task->data[3])
+ {
+ task->data[2] = 0;
+ --task->data[14];
+ ++task->data[0];
+ }
+ }
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ sub_80B9760(task);
+ if (++task->data[2] == 4)
+ {
+ task->data[2] = 0;
+ if (--task->data[14] == 0)
+ ++task->data[0];
+ }
+ }
+ break;
+ case 2:
+ for (i = 0; i < task->data[13]; ++i)
+ gSprites[task->data[9 + i]].pos2.x = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B9760(struct Task *task)
+{
+ u16 i, xOffset;
+
+ if ((task->data[2] & 1) == 0)
+ xOffset = (task->data[14] / 2) + (task->data[14] & 1);
+ else
+ xOffset = -(task->data[14] / 2);
+ for (i = 0; i < task->data[13]; ++i)
+ gSprites[task->data[9 + i]].pos2.x = xOffset;
+}
+
+void AnimTask_IsPowerOver99(u8 taskId)
+{
+ gBattleAnimArgs[15] = gAnimMovePower > 99;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80B9800(u8 taskId)
+{
+ struct Task *newTask;
+ u8 battler = (gBattleAnimArgs[0] & 1) ? gBattleAnimTarget : gBattleAnimAttacker;
+
+ if (gBattleAnimArgs[0] > 1)
+ battler ^= BIT_FLANK;
+ newTask = &gTasks[CreateTask(sub_80B98A8, gBattleAnimArgs[1])];
+ newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, 2)) & 0x1FF;
+ newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, 3)) & 0xFF;
+ gBattle_BG3_X = newTask->data[1];
+ gBattle_BG3_Y = newTask->data[2];
+ newTask->data[3] = gBattleAnimArgs[2];
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_80B98A8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[7] == task->data[3])
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ DestroyTask(taskId);
+ }
+ else
+ {
+ gBattle_BG3_X = task->data[1];
+ gBattle_BG3_Y = task->data[2];
+ }
+}
diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c
index a527525f8..afb792072 100644
--- a/src/help_system_812B1E0.c
+++ b/src/help_system_812B1E0.c
@@ -16,13 +16,13 @@
#include "constants/maps.h"
#include "constants/songs.h"
-static EWRAM_DATA u16 gUnknown_203B0EC = 0;
+static EWRAM_DATA u16 sSomeVariable = 0;
static EWRAM_DATA u8 gUnknown_203B0EE = 0;
u8 gUnknown_3005E9C[4];
-u16 gUnknown_3005EA0;
+u16 gSomeVariableBackup;
-static bool32 sub_812B27C(const u16 * mapIdxs);
+static bool32 IsCurrentMapInArray(const u16 * mapIdxs);
static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
static bool8 sub_812B754(void);
@@ -824,7 +824,7 @@ static const u8 gUnknown_845C4B6[][6] = {
{0, 0, 0, 0, 0, 0}
};
-static const u16 gUnknown_845C594[] = {
+static const u16 sMartMaps[] = {
MAP_VIRIDIAN_CITY_MART,
MAP_PEWTER_CITY_MART,
MAP_CERULEAN_CITY_MART,
@@ -847,7 +847,7 @@ static const u16 gUnknown_845C594[] = {
MAP_UNDEFINED
};
-static const u16 gUnknown_845C5BC[] = {
+static const u16 sGymMaps[] = {
MAP_PEWTER_CITY_GYM,
MAP_CERULEAN_CITY_GYM,
MAP_VERMILION_CITY_GYM,
@@ -859,7 +859,7 @@ static const u16 gUnknown_845C5BC[] = {
MAP_UNDEFINED
};
-static const u8 gUnknown_845C5CE[][3] = {
+static const u8 sDungeonMaps[][3] = {
{ MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 1 },
{ MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), 3 },
{ MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 2 },
@@ -878,14 +878,14 @@ static const u8 gUnknown_845C5CE[][3] = {
{ MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), 7 }
};
-void sub_812B1E0(u8 a0)
+void HelpSystem_SetSomeVariable(u8 a0)
{
- gUnknown_203B0EC = a0;
+ sSomeVariable = a0;
}
void HelpSystem_SetSomeVariable2(u8 a0)
{
- switch (gUnknown_203B0EC)
+ switch (sSomeVariable)
{
case 23:
case 24:
@@ -895,37 +895,37 @@ void HelpSystem_SetSomeVariable2(u8 a0)
break;
// fallthrough
default:
- gUnknown_203B0EC = a0;
+ sSomeVariable = a0;
break;
}
}
-void sub_812B220(void)
+void Special_SetSomeVariable(void)
{
- gUnknown_203B0EC = gSpecialVar_0x8004;
+ sSomeVariable = gSpecialVar_0x8004;
}
-void sub_812B234(void)
+void HelpSystem_BackupSomeVariable(void)
{
- gUnknown_3005EA0 = gUnknown_203B0EC;
+ gSomeVariableBackup = sSomeVariable;
}
-void sub_812B248(void)
+void HelpSystem_RestoreSomeVariable(void)
{
- gUnknown_203B0EC = gUnknown_3005EA0;
+ sSomeVariable = gSomeVariableBackup;
}
-static bool32 sub_812B25C(void)
+static bool32 IsInMartMap(void)
{
- return sub_812B27C(gUnknown_845C594);
+ return IsCurrentMapInArray(sMartMaps);
}
-static bool32 sub_812B26C(void)
+static bool32 IsInGymMap(void)
{
- return sub_812B27C(gUnknown_845C5BC);
+ return IsCurrentMapInArray(sGymMaps);
}
-static bool32 sub_812B27C(const u16 * mapIdxs)
+static bool32 IsCurrentMapInArray(const u16 * mapIdxs)
{
u16 mapIdx = (gSaveBlock1Ptr->location.mapGroup << 8) + gSaveBlock1Ptr->location.mapNum;
s32 i;
@@ -939,18 +939,18 @@ static bool32 sub_812B27C(const u16 * mapIdxs)
return FALSE;
}
-static bool8 sub_812B2C4(void)
+static bool8 IsInDungeonMap(void)
{
u8 i, j;
for (i = 0; i < 16; i++)
{
- for (j = 0; j < gUnknown_845C5CE[i][2]; j++)
+ for (j = 0; j < sDungeonMaps[i][2]; j++)
{
if (
- gUnknown_845C5CE[i][0] == gSaveBlock1Ptr->location.mapGroup
- && gUnknown_845C5CE[i][1] + j == gSaveBlock1Ptr->location.mapNum
- && (i != 15 || FlagGet(FLAG_0x849) == TRUE)
+ sDungeonMaps[i][0] == gSaveBlock1Ptr->location.mapGroup
+ && sDungeonMaps[i][1] + j == gSaveBlock1Ptr->location.mapNum
+ && (i != 15 /* TANOBY */ || FlagGet(FLAG_0x849) == TRUE)
)
return TRUE;
}
@@ -964,7 +964,7 @@ void sub_812B35C(void)
sub_812B4B8();
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
HelpSystem_SetSomeVariable2(0x16);
- else if (sub_812B2C4())
+ else if (IsInDungeonMap())
HelpSystem_SetSomeVariable2(0x15);
else if (is_light_level_8_or_9(gMapHeader.mapType))
{
@@ -974,9 +974,9 @@ void sub_812B35C(void)
HelpSystem_SetSomeVariable2(0x0F);
else if (IsCurMapPokeCenter() == TRUE)
HelpSystem_SetSomeVariable2(0x10);
- else if (sub_812B25C() == TRUE)
+ else if (IsInMartMap() == TRUE)
HelpSystem_SetSomeVariable2(0x11);
- else if (sub_812B26C() == TRUE)
+ else if (IsInGymMap() == TRUE)
HelpSystem_SetSomeVariable2(0x12);
else
HelpSystem_SetSomeVariable2(0x13);
@@ -1055,7 +1055,7 @@ static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1
u8 r4 = 0;
for (i = 0; i < 6; i++)
{
- if (gUnknown_845C4B6[gUnknown_203B0EC][gUnknown_845C4B0[i]] == 1)
+ if (gUnknown_845C4B6[sSomeVariable][gUnknown_845C4B0[i]] == 1)
{
a1[r4].label = gUnknown_845B080[gUnknown_845C4B0[i]];
a1[r4].index = gUnknown_845C4B0[i];
@@ -1085,7 +1085,7 @@ static void sub_812B5A8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1
static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1)
{
u8 r6 = 0;
- const u8 * r3 = gUnknown_845B9E0[gUnknown_203B0EC * 5 + gUnknown_3005E9C[1]];
+ const u8 * r3 = gUnknown_845B9E0[sSomeVariable * 5 + gUnknown_3005E9C[1]];
u8 i;
for (i = 0; r3[i] != 0xFF; i++)
{
diff --git a/src/item_use.c b/src/item_use.c
index f8a99cb1d..3a189d84a 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -117,7 +117,7 @@ void sub_80A1084(void)
void sub_80A109C(u8 taskId)
{
- if (sub_807AA70() == TRUE)
+ if (field_weather_is_fade_finished() == TRUE)
{
sItemUseOnFieldCB(taskId);
}
@@ -172,7 +172,7 @@ bool8 sub_80A1194(void)
void sub_80A11C0(u8 taskId)
{
- if (sub_807AA70() == TRUE)
+ if (field_weather_is_fade_finished() == TRUE)
{
UnfreezeMapObjects();
ScriptContext2_Disable();
@@ -191,7 +191,7 @@ void sub_80A1208(void)
struct MailStruct mail;
mail.itemId = gSpecialVar_ItemId;
- sub_80BEBEC(&mail, ReturnToBagFromKeyItem, 0);
+ sub_80BEBEC(&mail, CB2_BagMenuFromStartMenu, 0);
}
void FieldUseFunc_MachBike(u8 taskId)
@@ -404,7 +404,7 @@ void FieldUseFunc_TmCase(u8 taskId)
void InitTMCaseFromBag(void)
{
- InitTMCase(0, ReturnToBagFromKeyItem, 0);
+ InitTMCase(0, CB2_BagMenuFromStartMenu, 0);
}
void Task_InitTMCaseFromField(u8 taskId)
@@ -435,7 +435,7 @@ void FieldUseFunc_BerryPouch(u8 taskId)
void InitBerryPouchFromBag(void)
{
- InitBerryPouch(BERRYPOUCH_FROMFIELD, ReturnToBagFromKeyItem, 0);
+ InitBerryPouch(BERRYPOUCH_FROMFIELD, CB2_BagMenuFromStartMenu, 0);
}
void Task_InitBerryPouchFromField(u8 taskId)
@@ -478,7 +478,7 @@ void FieldUseFunc_TeachyTv(u8 taskId)
void InitTeachyTvFromBag(void)
{
- InitTeachyTvController(0, ReturnToBagFromKeyItem);
+ InitTeachyTvController(0, CB2_BagMenuFromStartMenu);
}
void Task_InitTeachyTvFromField(u8 taskId)
@@ -608,7 +608,7 @@ void FieldUseFunc_TownMap(u8 taskId)
void sub_80A1CAC(void)
{
- sub_80BFF50(0, ReturnToBagFromKeyItem);
+ sub_80BFF50(0, CB2_BagMenuFromStartMenu);
}
void sub_80A1CC0(u8 taskId)
@@ -640,7 +640,7 @@ void FieldUseFunc_FameChecker(u8 taskId)
void sub_80A1D58(void)
{
- UseFameChecker(ReturnToBagFromKeyItem);
+ UseFameChecker(CB2_BagMenuFromStartMenu);
}
void sub_80A1D68(u8 taskId)
diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c
index 0ebffc67e..0a4535271 100644
--- a/src/mailbox_pc.c
+++ b/src/mailbox_pc.c
@@ -94,10 +94,10 @@ static void ItemPrintFunc(u8 windowId, s32 itemId, u8 y)
}
}
-u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct)
+u8 MailboxPC_InitListMenu(struct PlayerPCItemPageStruct * playerPcStruct)
{
u16 i;
- for (i = 0; i < playerPcStruct->unk_5; i++)
+ for (i = 0; i < playerPcStruct->count; i++)
{
sListMenuItems[i].label = sString_Dummy;
sListMenuItems[i].index = i;
@@ -106,7 +106,7 @@ u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct)
sListMenuItems[i].index = -2;
gMultiuseListMenuTemplate.items = sListMenuItems;
- gMultiuseListMenuTemplate.totalItems = playerPcStruct->unk_5 + 1;
+ gMultiuseListMenuTemplate.totalItems = playerPcStruct->count + 1;
gMultiuseListMenuTemplate.windowId = sWindowIds[1];
gMultiuseListMenuTemplate.header_X = 0;
gMultiuseListMenuTemplate.item_X = GetMenuCursorDimensionByFont(2, 0);
@@ -132,9 +132,9 @@ static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list)
PlaySE(SE_SELECT);
}
-void MailboxPC_AddScrollIndicatorArrows(struct PlayerPC_Unk_203AAC4 * playerPcStruct)
+void MailboxPC_AddScrollIndicatorArrows(struct PlayerPCItemPageStruct * playerPcStruct)
{
- playerPcStruct->unk_A = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->unk_5 - playerPcStruct->unk_4 + 1, 110, 110, &playerPcStruct->scrollOffset);
+ playerPcStruct->scrollIndicatorId = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->count - playerPcStruct->pageItems + 1, 110, 110, &playerPcStruct->scrollOffset);
}
void MailboxPC_DestroyListMenuBuffer(void)
diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c
index 7d9fa935e..c465a5683 100644
--- a/src/map_preview_screen.c
+++ b/src/map_preview_screen.c
@@ -495,7 +495,7 @@ static void sub_80F83D0(u8 taskId)
}
break;
case 2:
- if (sub_807AA70())
+ if (field_weather_is_fade_finished())
{
Overworld_PlaySpecialMapMusic();
data[0]++;
diff --git a/src/menu2.c b/src/menu2.c
index c6d5ab094..221f84318 100644
--- a/src/menu2.c
+++ b/src/menu2.c
@@ -485,7 +485,7 @@ void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u
AddTextPrinter(&printer, speed, callback);
}
-void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y)
+void Menu_PrintFormatIntlPlayerName(u8 windowId, const u8 * src, u16 x, u16 y)
{
s32 i;
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 89df1ee34..26cbdb145 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -247,7 +247,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
if (species == SPECIES_EGG)
StringCopyN(gStringVar1, gText_EggNickname, POKEMON_NAME_LENGTH + 1);
else
- StringCopyN(gStringVar1, gText_Pokemon, POKEMON_NAME_LENGTH + 1);
+ StringCopyN(gStringVar1, gStartMenuText_Pokemon, POKEMON_NAME_LENGTH + 1);
if (gPlayerPartyCount == PARTY_SIZE)
{
diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c
index 9d2a5c883..f82dbe9c6 100644
--- a/src/new_menu_helpers.c
+++ b/src/new_menu_helpers.c
@@ -395,7 +395,7 @@ void ResetBg0(void)
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
DeactivateAllTextPrinters();
- sub_80F6E9C();
+ LoadStdWindowFrameGfx();
}
u16 RunTextPrinters_CheckPrinter0Active(void)
@@ -452,7 +452,7 @@ void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonP
AddTextPrinterParameterized2(0, 2, gStringVar4, speed, NULL, 2, 1, 3);
}
-void sub_80F6E9C(void)
+void LoadStdWindowFrameGfx(void)
{
if (gUnknown_203ADFA == 2)
{
@@ -644,7 +644,7 @@ static u16 GetStdPalColor(u8 colorNum)
void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *string, TaskFunc callback)
{
- sub_80F6E9C();
+ LoadStdWindowFrameGfx();
DisplayMessageAndContinueTask(taskId, 0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM, bgId, GetTextSpeedSetting(), string, callback);
CopyWindowToVram(0, 3);
}
@@ -667,7 +667,7 @@ u8 GetTextSpeedSetting(void)
return gUnknown_841F428[gSaveBlock2Ptr->optionsTextSpeed];
}
-u8 sub_80F78E0(u8 height)
+u8 CreateStartMenuWindow(u8 height)
{
if (sStartMenuWindowId == 0xFF)
{
@@ -702,15 +702,15 @@ u16 GetStdWindowBaseTileNum(void)
return STD_WINDOW_BASE_TILE_NUM;
}
-void sub_80F7974(const u8 * text)
+void DrawHelpMessageWindowWithText(const u8 * text)
{
- sub_814FE6C(sub_8112EB4(), DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM);
- sub_8113018(text, 2);
+ sub_814FE6C(CreateHelpMessageWindow(), DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM);
+ PrintTextOnHelpMessageWindow(text, 2);
}
-void sub_80F7998(void)
+void DestroyHelpMessageWindow_(void)
{
- sub_8112EDC(2);
+ DestroyHelpMessageWindow(2);
}
void sub_80F79A4(void)
diff --git a/src/normal.c b/src/normal.c
new file mode 100644
index 000000000..4d86b55a6
--- /dev/null
+++ b/src/normal.c
@@ -0,0 +1,916 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "palette.h"
+#include "random.h"
+#include "task.h"
+#include "trig.h"
+
+static void AnimConfusionDuck(struct Sprite *sprite);
+static void AnimSimplePaletteBlend(struct Sprite *sprite);
+static void sub_80B9A7C(struct Sprite *sprite);
+static void sub_80B9B8C(struct Sprite *sprite);
+static void sub_80BA27C(struct Sprite *sprite);
+static void sub_80BA560(struct Sprite *sprite);
+static void sub_80BA5F8(struct Sprite *sprite);
+static void sub_80BA630(struct Sprite *sprite);
+static void sub_80BA6C8(struct Sprite *sprite);
+static void sub_80BA738(struct Sprite *sprite);
+static void sub_80BA780(struct Sprite *sprite);
+static void sub_80BA5A8(struct Sprite *sprite);
+static void AnimConfusionDuckStep(struct Sprite *sprite);
+static void AnimSimplePaletteBlendStep(struct Sprite *sprite);
+static void sub_80B9AD0(struct Sprite *sprite);
+static void sub_80B9B5C(struct Sprite *sprite);
+static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
+static void sub_80B9C7C(u8 taskId);
+static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
+static void sub_80B9DF0(u8 taskId);
+static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount);
+static void sub_80B9F04(u8 taskId);
+static void sub_80B9FD8(u8 taskId);
+static void sub_80BA090(u8 taskId);
+static void sub_80BA3CC(void);
+static void sub_80BA320(struct Sprite *sprite);
+static void sub_80BA4D0(u8 taskId);
+static void sub_80BA7BC(struct Sprite *sprite);
+
+
+static const union AnimCmd gUnknown_83E7ADC[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd gUnknown_83E7AF0[] =
+{
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gUnknown_83E7B04[] =
+{
+ gUnknown_83E7ADC,
+ gUnknown_83E7AF0,
+};
+
+const struct SpriteTemplate gConfusionDuckSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_DUCK,
+ .paletteTag = ANIM_TAG_DUCK,
+ .oam = &gOamData_83AC9D0,
+ .anims = gUnknown_83E7B04,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimConfusionDuck,
+};
+
+const struct SpriteTemplate gSimplePaletteBlendSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimSimplePaletteBlend,
+};
+
+const struct SpriteTemplate gComplexPaletteBlendSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B9A7C,
+};
+
+static const union AnimCmd gUnknown_83E7B54[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gUnknown_83E7B6C[] =
+{
+ gUnknown_83E7B54,
+};
+
+const struct SpriteTemplate gUnknown_83E7B70 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_4,
+ .paletteTag = ANIM_TAG_SPARKLE_4,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E7B6C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B9B8C,
+};
+
+const struct SpriteTemplate gUnknown_83E7B88 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80BA27C,
+};
+
+static const union AffineAnimCmd gUnknown_83E7BA0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E7BB0[] =
+{
+ AFFINEANIMCMD_FRAME(0xD8, 0xD8, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E7BC8[] =
+{
+ AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E7BE0[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7BF8[] =
+{
+ gUnknown_83E7BA0,
+ gUnknown_83E7BB0,
+ gUnknown_83E7BC8,
+ gUnknown_83E7BE0,
+};
+
+const struct SpriteTemplate gBasicHitSplatSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gOamData_83ACB58,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7BF8,
+ .callback = sub_80BA560,
+};
+
+const struct SpriteTemplate gUnknown_83E7C20 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gOamData_83ACB58,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7BF8,
+ .callback = sub_80BA5F8,
+};
+
+const struct SpriteTemplate gUnknown_83E7C38 =
+{
+ .tileTag = ANIM_TAG_WATER_IMPACT,
+ .paletteTag = ANIM_TAG_WATER_IMPACT,
+ .oam = &gOamData_83ACB58,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7BF8,
+ .callback = sub_80BA560,
+};
+
+const struct SpriteTemplate gUnknown_83E7C50 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gOamData_83ACB58,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7BF8,
+ .callback = sub_80BA630,
+};
+
+const struct SpriteTemplate gUnknown_83E7C68 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gOamData_83ACB58,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7BF8,
+ .callback = sub_80BA6C8,
+};
+
+const struct SpriteTemplate gUnknown_83E7C80 =
+{
+ .tileTag = ANIM_TAG_CROSS_IMPACT,
+ .paletteTag = ANIM_TAG_CROSS_IMPACT,
+ .oam = &gOamData_83ACAF8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80BA738,
+};
+
+const struct SpriteTemplate gUnknown_83E7C98 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gOamData_83ACA38,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7BF8,
+ .callback = sub_80BA780,
+};
+
+const struct SpriteTemplate gUnknown_83E7CB0 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gOamData_83ACB58,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7BF8,
+ .callback = sub_80BA5A8,
+};
+
+// Moves a spinning duck around the mon's head.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: initial wave offset
+// arg 3: wave period (higher means faster wave)
+// arg 4: duration
+static void AnimConfusionDuck(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->data[1] = -gBattleAnimArgs[3];
+ sprite->data[4] = 1;
+ }
+ else
+ {
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[4] = 0;
+ StartSpriteAnim(sprite, 1);
+ }
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->callback = AnimConfusionDuckStep;
+ sprite->callback(sprite);
+}
+
+static void AnimConfusionDuckStep(struct Sprite *sprite)
+{
+ sprite->pos2.x = Cos(sprite->data[0], 30);
+ sprite->pos2.y = Sin(sprite->data[0], 10);
+ if ((u16)sprite->data[0] < 128)
+ sprite->oam.priority = 1;
+ else
+ sprite->oam.priority = 3;
+ sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF;
+ if (++sprite->data[2] == sprite->data[3])
+ DestroyAnimSprite(sprite);
+}
+
+// Performs a simple color blend on a specified sprite.
+// arg 0: palette selector
+// arg 1: delay
+// arg 2: start blend amount
+// arg 3: end blend amount
+// arg 4: blend color
+static void AnimSimplePaletteBlend(struct Sprite *sprite)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
+
+ BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]);
+ sprite->invisible = TRUE;
+ sprite->callback = AnimSimplePaletteBlendStep;
+}
+
+// Unpacks a bitfield and returns a bitmask of its selected palettes.
+// Bits 0-6 of the selector parameter result in the following palettes being selected:
+// 0: battle background palettes (BG palettes 1, 2, and 3)
+// 1: gBattleAnimAttacker OBJ palette
+// 2: gBattleAnimTarget OBJ palette
+// 3: gBattleAnimAttacker partner OBJ palette
+// 4: gBattleAnimTarget partner OBJ palette
+// 5: BG palette 4
+// 6: BG palette 5
+u32 UnpackSelectedBattleAnimPalettes(s16 selector)
+{
+ u8 battleBackground = selector & 1;
+ u8 attacker = (selector >> 1) & 1;
+ u8 target = (selector >> 2) & 1;
+ u8 attackerPartner = (selector >> 3) & 1;
+ u8 targetPartner = (selector >> 4) & 1;
+ u8 arg5 = (selector >> 5) & 1;
+ u8 arg6 = (selector >> 6) & 1;
+
+ return sub_8075BE8(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6);
+}
+
+static void AnimSimplePaletteBlendStep(struct Sprite *sprite)
+{
+ if (!gPaletteFade.active)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_80B9A7C(struct Sprite *sprite)
+{
+ u32 selectedPalettes;
+
+ sprite->data[0] = gBattleAnimArgs[1];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->data[3] = gBattleAnimArgs[3];
+ sprite->data[4] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ sprite->data[6] = gBattleAnimArgs[6];
+ sprite->data[7] = gBattleAnimArgs[0];
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
+ BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]);
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80B9AD0;
+}
+
+static void sub_80B9AD0(struct Sprite *sprite)
+{
+ u32 selectedPalettes;
+
+ if (sprite->data[0] > 0)
+ {
+ --sprite->data[0];
+ return;
+ }
+ if (gPaletteFade.active)
+ return;
+ if (sprite->data[2] == 0)
+ {
+ sprite->callback = sub_80B9B5C;
+ return;
+ }
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
+ if (sprite->data[1] & 0x100)
+ BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]);
+ else
+ BlendPalettes(selectedPalettes, sprite->data[6], sprite->data[5]);
+ sprite->data[1] ^= 0x100;
+ sprite->data[0] = sprite->data[1] & 0xFF;
+ --sprite->data[2];
+}
+
+static void sub_80B9B5C(struct Sprite *sprite)
+{
+ u32 selectedPalettes;
+
+ if (!gPaletteFade.active)
+ {
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
+ BlendPalettes(selectedPalettes, 0, 0);
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_80B9B8C(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = 0;
+ sprite->data[1] = 10;
+ sprite->data[2] = 8;
+ sprite->data[3] = 40;
+ sprite->data[4] = 112;
+ sprite->data[5] = 0;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = TranslateSpriteInGrowingCircleOverDuration;
+ sprite->callback(sprite);
+}
+
+void sub_80B9BDC(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[8] = 0;
+ sub_80B9C2C(taskId, 0, gTasks[taskId].data[4]);
+ gTasks[taskId].func = sub_80B9C7C;
+}
+
+static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]);
+
+ BeginNormalPaletteFade(selectedPalettes,
+ gTasks[taskId].data[1],
+ initialBlendAmount,
+ targetBlendAmount,
+ gTasks[taskId].data[5]);
+ --gTasks[taskId].data[2];
+ gTasks[taskId].data[8] ^= 1;
+}
+
+static void sub_80B9C7C(u8 taskId)
+{
+ u8 initialBlendAmount, targetBlendAmount;
+
+ if (!gPaletteFade.active)
+ {
+ if (gTasks[taskId].data[2] > 0)
+ {
+ if (gTasks[taskId].data[8] == 0)
+ {
+ initialBlendAmount = gTasks[taskId].data[3];
+ targetBlendAmount = gTasks[taskId].data[4];
+ }
+ else
+ {
+ initialBlendAmount = gTasks[taskId].data[4];
+ targetBlendAmount = gTasks[taskId].data[3];
+ }
+ if (gTasks[taskId].data[2] == 1)
+ targetBlendAmount = 0;
+ sub_80B9C2C(taskId, initialBlendAmount, targetBlendAmount);
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_80B9CE4(u8 taskId)
+{
+ s32 battler;
+ u32 selectedPalettes = 0;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[8] = 0;
+ for (battler = 0; battler < gBattlersCount; ++battler)
+ if (battler != gBattleAnimAttacker && battler != gBattleAnimTarget)
+ selectedPalettes |= 1 << (battler + 16);
+ if (gBattleAnimArgs[0] == 1)
+ selectedPalettes |= 0xE;
+ gTasks[taskId].data[9] = selectedPalettes >> 16;
+ gTasks[taskId].data[10] = selectedPalettes & 0xFF;
+ sub_80B9DA0(taskId, 0, gTasks[taskId].data[4]);
+ gTasks[taskId].func = sub_80B9DF0;
+}
+
+static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
+{
+ u32 selectedPalettes = ((u16)gTasks[taskId].data[9] << 16) | (u16)gTasks[taskId].data[10];
+
+ BeginNormalPaletteFade(selectedPalettes,
+ gTasks[taskId].data[1],
+ initialBlendAmount,
+ targetBlendAmount,
+ gTasks[taskId].data[5]);
+ --gTasks[taskId].data[2];
+ gTasks[taskId].data[8] ^= 1;
+}
+
+static void sub_80B9DF0(u8 taskId)
+{
+ u8 initialBlendAmount, targetBlendAmount;
+
+ if (!gPaletteFade.active)
+ {
+ if (gTasks[taskId].data[2] > 0)
+ {
+ if (gTasks[taskId].data[8] == 0)
+ {
+ initialBlendAmount = gTasks[taskId].data[3];
+ targetBlendAmount = gTasks[taskId].data[4];
+ }
+ else
+ {
+ initialBlendAmount = gTasks[taskId].data[4];
+ targetBlendAmount = gTasks[taskId].data[3];
+ }
+
+ if (gTasks[taskId].data[2] == 1)
+ targetBlendAmount = 0;
+ sub_80B9DA0(taskId, initialBlendAmount, targetBlendAmount);
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_80B9E58(u8 taskId)
+{
+ u8 paletteIndex;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[8] = 0;
+ sub_80B9EA8(taskId, 0, gTasks[taskId].data[4]);
+ gTasks[taskId].func = sub_80B9F04;
+}
+
+static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
+{
+ u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].data[0]);
+
+ BeginNormalPaletteFade(1 << (paletteIndex + 16),
+ gTasks[taskId].data[1],
+ initialBlendAmount,
+ targetBlendAmount,
+ gTasks[taskId].data[5]);
+ --gTasks[taskId].data[2];
+ gTasks[taskId].data[8] ^= 1;
+}
+
+static void sub_80B9F04(u8 taskId)
+{
+ u8 initialBlendAmount, targetBlendAmount;
+
+ if (!gPaletteFade.active)
+ {
+ if (gTasks[taskId].data[2] > 0)
+ {
+ if (gTasks[taskId].data[8] == 0)
+ {
+ initialBlendAmount = gTasks[taskId].data[3];
+ targetBlendAmount = gTasks[taskId].data[4];
+ }
+ else
+ {
+ initialBlendAmount = gTasks[taskId].data[4];
+ targetBlendAmount = gTasks[taskId].data[3];
+ }
+
+ if (gTasks[taskId].data[2] == 1)
+ targetBlendAmount = 0;
+ sub_80B9EA8(taskId, initialBlendAmount, targetBlendAmount);
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_80B9F6C(u8 taskId)
+{
+ u8 paletteIndex;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[6] = gBattleAnimArgs[6];
+ gTasks[taskId].data[7] = gBattleAnimArgs[0];
+ paletteIndex = IndexOfSpritePaletteTag(gBattleAnimArgs[0]);
+ BeginNormalPaletteFade(1 << (paletteIndex + 16),
+ 0,
+ gBattleAnimArgs[4],
+ gBattleAnimArgs[4],
+ gBattleAnimArgs[3]);
+ gTasks[taskId].func = sub_80B9FD8;
+}
+
+static void sub_80B9FD8(u8 taskId)
+{
+ u32 selectedPalettes;
+
+ if (gTasks[taskId].data[0] > 0)
+ {
+ --gTasks[taskId].data[0];
+ return;
+ }
+ if (gPaletteFade.active)
+ return;
+ if (gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].func = sub_80BA090;
+ return;
+ }
+ selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16);
+ if (gTasks[taskId].data[1] & 0x100)
+ BeginNormalPaletteFade(selectedPalettes,
+ 0,
+ gTasks[taskId].data[4],
+ gTasks[taskId].data[4],
+ gTasks[taskId].data[3]);
+ else
+ BeginNormalPaletteFade(selectedPalettes,
+ 0,
+ gTasks[taskId].data[6],
+ gTasks[taskId].data[6],
+ gTasks[taskId].data[5]);
+ gTasks[taskId].data[1] ^= 0x100;
+ gTasks[taskId].data[0] = gTasks[taskId].data[1] & 0xFF;
+ --gTasks[taskId].data[2];
+}
+
+static void sub_80BA090(u8 taskId)
+{
+ u32 selectedPalettes;
+
+ if (!gPaletteFade.active)
+ {
+ selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16);
+ BeginNormalPaletteFade(selectedPalettes, 0, 0, 0, RGB(0, 0, 0));
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80BA0E8(u8 taskId)
+{
+ u32 selectedPalettes = 0;
+ u8 attackerBattler = gBattleAnimAttacker;
+ u8 targetBattler = gBattleAnimTarget;
+
+ if (gBattleAnimArgs[0] & 0x100)
+ selectedPalettes = sub_8075BE8(1, 0, 0, 0, 0, 0, 0);
+ if (gBattleAnimArgs[1] & 0x100)
+ selectedPalettes |= (0x10000 << attackerBattler);
+ if (gBattleAnimArgs[2] & 0x100)
+ selectedPalettes |= (0x10000 << targetBattler);
+ InvertPlttBuffer(selectedPalettes);
+ DestroyAnimVisualTask(taskId);
+}
+
+// not used
+static void sub_80BA16C(u8 taskId)
+{
+ u8 attackerBattler;
+ u8 targetBattler;
+ u8 paletteIndex;
+ u32 selectedPalettes = 0;
+
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[2] = gBattleAnimArgs[0];
+ gTasks[taskId].data[3] = gBattleAnimArgs[1];
+ gTasks[taskId].data[4] = gBattleAnimArgs[2];
+ gTasks[taskId].data[1] = gBattleAnimArgs[3];
+ gTasks[taskId].data[5] = gBattleAnimArgs[4];
+ gTasks[taskId].data[6] = gBattleAnimArgs[5];
+ gTasks[taskId].data[7] = gBattleAnimArgs[6];
+ }
+ ++gTasks[taskId].data[0];
+ attackerBattler = gBattleAnimAttacker;
+ targetBattler = gBattleAnimTarget;
+ if (gTasks[taskId].data[2] & 0x100)
+ selectedPalettes = 0x0000FFFF;
+ if (gTasks[taskId].data[2] & 0x1)
+ {
+ paletteIndex = IndexOfSpritePaletteTag(gSprites[gHealthboxSpriteIds[attackerBattler]].template->paletteTag);
+ selectedPalettes |= (1 << paletteIndex) << 16;
+ }
+ if (gTasks[taskId].data[3] & 0x100)
+ selectedPalettes |= (1 << attackerBattler) << 16;
+ if (gTasks[taskId].data[4] & 0x100)
+ selectedPalettes |= (1 << targetBattler) << 16;
+ TintPlttBuffer(selectedPalettes, gTasks[taskId].data[5], gTasks[taskId].data[6], gTasks[taskId].data[7]);
+ if (gTasks[taskId].data[0] == gTasks[taskId].data[1])
+ {
+ UnfadePlttBuffer(selectedPalettes);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_80BA27C(struct Sprite *sprite)
+{
+ u16 var0;
+
+ sprite->invisible = TRUE;
+ sprite->data[0] = -gBattleAnimArgs[0];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] = gBattleAnimArgs[2];
+
+ switch (gBattleAnimArgs[3])
+ {
+ case 0:
+ StoreSpriteCallbackInData6(sprite, (void *)&gBattle_BG3_X);
+ break;
+ case 1:
+ StoreSpriteCallbackInData6(sprite, (void *)&gBattle_BG3_Y);
+ break;
+ case 2:
+ StoreSpriteCallbackInData6(sprite, (void *)&gSpriteCoordOffsetX);
+ break;
+ default:
+ StoreSpriteCallbackInData6(sprite, (void *)&gSpriteCoordOffsetY);
+ break;
+ }
+ sprite->data[4] = *(u16 *)(sprite->data[6] | (sprite->data[7] << 16));
+ sprite->data[5] = gBattleAnimArgs[3];
+ var0 = sprite->data[5] - 2;
+ if (var0 < 2)
+ sub_80BA3CC();
+ sprite->callback = sub_80BA320;
+}
+
+static void sub_80BA320(struct Sprite *sprite)
+{
+ u8 i;
+ u16 var0;
+
+ if (sprite->data[3] > 0)
+ {
+ --sprite->data[3];
+ if (sprite->data[1] > 0)
+ {
+ --sprite->data[1];
+ }
+ else
+ {
+ sprite->data[1] = sprite->data[2];
+ *(u16 *)(sprite->data[6] | (sprite->data[7] << 16)) += sprite->data[0];
+ sprite->data[0] = -sprite->data[0];
+ }
+ }
+ else
+ {
+ *(u16 *)(sprite->data[6] | (sprite->data[7] << 16)) = sprite->data[4];
+ var0 = sprite->data[5] - 2;
+ if (var0 < 2)
+ for (i = 0; i < gBattlersCount; ++i)
+ gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = 0;
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_80BA3CC(void)
+{
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 0;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 0;
+ if (gBattleAnimArgs[4] == 2)
+ {
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
+ }
+ else
+ {
+ if (gBattleAnimArgs[4] == 0)
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
+ else
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
+ }
+}
+
+void sub_80BA47C(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[8] = gBattleAnimArgs[3];
+ gBattle_BG3_X = gBattleAnimArgs[0];
+ gBattle_BG3_Y = gBattleAnimArgs[1];
+ gTasks[taskId].func = sub_80BA4D0;
+ gTasks[taskId].func(taskId);
+}
+
+static void sub_80BA4D0(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ if (gBattle_BG3_X == gTasks[taskId].data[0])
+ gBattle_BG3_X = -gTasks[taskId].data[0];
+ else
+ gBattle_BG3_X = gTasks[taskId].data[0];
+
+ if (gBattle_BG3_Y == -gTasks[taskId].data[1])
+ gBattle_BG3_Y = 0;
+ else
+ gBattle_BG3_Y = -gTasks[taskId].data[1];
+
+ gTasks[taskId].data[3] = gTasks[taskId].data[8];
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ {
+ --gTasks[taskId].data[3];
+ }
+}
+
+static void sub_80BA560(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ if (gBattleAnimArgs[2] == 0)
+ InitSpritePosToAnimAttacker(sprite, 1);
+ else
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+static void sub_80BA5A8(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ if (gBattleAnimArgs[2] == 0)
+ InitSpritePosToAnimAttacker(sprite, 1);
+ else
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+ StoreSpriteCallbackInData6(sprite, sub_80B1D3C);
+}
+
+static void sub_80BA5F8(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER && !IsContest())
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ sub_80BA560(sprite);
+}
+
+static void sub_80BA630(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[1] == -1)
+ gBattleAnimArgs[1] = Random() & 3;
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]);
+ if (gBattleAnimArgs[0] == 0)
+ InitSpritePosToAnimAttacker(sprite, 0);
+ else
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->pos2.x += (Random() % 48) - 24;
+ sprite->pos2.y += (Random() % 24) - 12;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+}
+
+static void sub_80BA6C8(struct Sprite *sprite)
+{
+ sprite->data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ sprite->pos1.x = gSprites[sprite->data[0]].pos1.x + gSprites[sprite->data[0]].pos2.x;
+ sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + gSprites[sprite->data[0]].pos2.y;
+ sprite->pos2.x = gBattleAnimArgs[1];
+ sprite->pos2.y = gBattleAnimArgs[2];
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+}
+
+static void sub_80BA738(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[2] == 0)
+ InitSpritePosToAnimAttacker(sprite, 1);
+ else
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[3];
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = WaitAnimForDuration;
+}
+
+static void sub_80BA780(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ if (gBattleAnimArgs[2] == 0)
+ InitSpritePosToAnimAttacker(sprite, 1);
+ else
+ InitSpritePosToAnimTarget(sprite, TRUE);
+ sprite->callback = sub_80BA7BC;
+}
+
+static void sub_80BA7BC(struct Sprite *sprite)
+{
+ sprite->invisible ^= 1;
+ if (sprite->data[0]++ > 12)
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/player_pc.c b/src/player_pc.c
new file mode 100644
index 000000000..b1929b9ed
--- /dev/null
+++ b/src/player_pc.c
@@ -0,0 +1,741 @@
+#include "global.h"
+#include "palette.h"
+#include "item.h"
+#include "task.h"
+#include "menu_indicators.h"
+#include "new_menu_helpers.h"
+#include "strings.h"
+#include "menu.h"
+#include "mail.h"
+#include "mail_data.h"
+#include "help_system.h"
+#include "sound.h"
+#include "overworld.h"
+#include "script.h"
+#include "mailbox_pc.h"
+#include "player_pc.h"
+#include "field_weather.h"
+#include "event_scripts.h"
+#include "field_fadetransition.h"
+#include "string_util.h"
+#include "item_menu.h"
+#include "item_pc.h"
+#include "party_menu.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+
+#define PC_ITEM_ID 0
+#define PC_QUANTITY 1
+#define NEW_GAME_PC_ITEMS(i, type) (((u16 *)gNewGamePCItems + type)[i * 2])
+
+#define tCount data[2]
+#define tPageItems data[4]
+#define tItemPcParam data[6]
+#define tWindowId data[10]
+#define tListMenuTaskId data[11]
+
+static EWRAM_DATA const u8 *sItemOrder = NULL;
+static EWRAM_DATA u8 sTopMenuItemCount = 0;
+EWRAM_DATA struct PlayerPCItemPageStruct gPlayerPcMenuManager = {};
+
+#define SELECTED_MAIL (gSaveBlock1Ptr->mail[PC_MAIL_NUM(gPlayerPcMenuManager.scrollOffset) + gPlayerPcMenuManager.selectedRow])
+
+static void Task_DrawPlayerPcTopMenu(u8 taskId);
+static void Task_TopMenuHandleInput(u8 taskId);
+static void Task_PlayerPcItemStorage(u8 taskId);
+static void Task_PlayerPcMailbox(u8 taskId);
+static void Task_PlayerPcTurnOff(u8 taskId);
+static void Task_CreateItemStorageSubmenu(u8 taskId, u8 cursorPos);
+static void PrintStringOnWindow0WithDialogueFrame(const u8 *str);
+static void Task_TopMenu_ItemStorageSubmenu_HandleInput(u8 taskId);
+static void Task_PlayerPcDepositItem(u8 taskId);
+static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId);
+static void CB2_ReturnFromDepositMenu(void);
+static void Task_PlayerPcWithdrawItem(u8 taskId);
+static void CB2_ReturnFromWithdrawMenu(void);
+static void Task_WithdrawItemBeginFade(u8 taskId);
+static void Task_PlayerPcCancel(u8 taskId);
+static void Task_SetPageItemVars(u8 taskId);
+static u8 CountPCMail(void);
+static void PCMailCompaction(void);
+static void Task_DrawMailboxPcMenu(u8 taskId);
+static void Task_MailboxPcHandleInput(u8 taskId);
+static void Task_PrintWhatToDoWithSelectedMail(u8 taskId);
+static void Task_DestroyMailboxPcViewAndCancel(u8 taskId);
+static void Task_DrawMailSubmenu(u8 taskId);
+static void Task_MailSubmenuHandleInput(u8 taskId);
+static void Task_PlayerPcReadMail(u8 taskId);
+static void Task_WaitFadeAndReadSelectedMail(u8 taskId);
+static void CB2_SetCbToReturnToMailbox(void);
+static void Task_PlayerPcMoveMailToBag(u8 taskId);
+static void Task_DrawYesNoMenuToConfirmMoveToBag(u8 taskId);
+static void Task_MoveToBagYesNoMenuHandleInput(u8 taskId);
+static void Task_TryPutMailInBag_DestroyMsgIfSuccessful(u8 taskId);
+static void Task_DeclinedMoveMailToBag(u8 taskId);
+static void Task_PlayerPcGiveMailToMon(u8 taskId);
+static void Task_WaitFadeAndGoToPartyMenu(u8 taskId);
+static void Task_Error_NoPokemon(u8 taskId);
+static void Task_PlayerPcExitMailSubmenu(u8 taskId);
+
+static const u8 *const sItemStorageActionDescriptionPtrs[] = {
+ gText_TakeOutItemsFromThePC,
+ gText_StoreItemsInThePC,
+ gText_GoBackToThePreviousMenu
+};
+
+static const struct MenuAction sMenuActions_TopMenu[] = {
+ {gText_ItemStorage, Task_PlayerPcItemStorage},
+ {gText_Mailbox, Task_PlayerPcMailbox},
+ {gText_TurnOff, Task_PlayerPcTurnOff}
+};
+
+static const u8 gUnknown_8402200[] = { 0, 1, 2 };
+static const u8 gUnknown_8402203[] = { 0, 1, 2 };
+
+static const struct MenuAction sMenuActions_ItemPc[] = {
+ {gText_WithdrawItem2, Task_PlayerPcWithdrawItem},
+ {gText_DepositItem2, Task_PlayerPcDepositItem},
+ {gFameCheckerText_Cancel, Task_PlayerPcCancel}
+};
+
+static const struct ItemSlot gNewGamePCItems[] = {
+ { ITEM_POTION, 1 },
+ { ITEM_NONE, 0 }
+};
+
+static const struct MenuAction sMenuActions_MailSubmenu[] = {
+ {gOtherText_Read, Task_PlayerPcReadMail},
+ {gOtherText_MoveToBag, Task_PlayerPcMoveMailToBag},
+ {gOtherText_Give2, Task_PlayerPcGiveMailToMon},
+ {gOtherText_Exit, Task_PlayerPcExitMailSubmenu}
+};
+
+static const struct WindowTemplate sWindowTemplate_TopMenu_3Items = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 13,
+ .height = 6,
+ .paletteNum = 15,
+ .baseBlock = 0x008
+};
+
+static const struct WindowTemplate sWindowTemplate_TopMenu_4Items = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 13,
+ .height = 8,
+ .paletteNum = 15,
+ .baseBlock = 0x008
+};
+
+static const struct WindowTemplate sWindowTemplate_ItemStorageSubmenu = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 14,
+ .height = 6,
+ .paletteNum = 15,
+ .baseBlock = 0x008
+};
+
+void NewGameInitPCItems(void)
+{
+ u8 i;
+
+ for (i = 0, ClearPCItemSlots(); NEW_GAME_PC_ITEMS(i, PC_ITEM_ID) && NEW_GAME_PC_ITEMS(i, PC_QUANTITY) &&
+ AddPCItem(NEW_GAME_PC_ITEMS(i, PC_ITEM_ID), NEW_GAME_PC_ITEMS(i, PC_QUANTITY)) == TRUE; i++)
+ ;
+}
+
+void sub_80EB6AC(void)
+{
+ u8 taskId;
+
+ gPlayerPcMenuManager.unk_9 = 0;
+ HelpSystem_BackupSomeVariable();
+ sItemOrder = gUnknown_8402200;
+ sTopMenuItemCount = 3;
+ taskId = CreateTask(TaskDummy, 0);
+ DisplayItemMessageOnField(taskId, 2, gText_WhatWouldYouLikeToDo, Task_DrawPlayerPcTopMenu);
+}
+
+void sub_80EB6FC(void)
+{
+ u8 taskId;
+
+ gPlayerPcMenuManager.unk_9 = 1;
+ HelpSystem_BackupSomeVariable();
+ sItemOrder = gUnknown_8402203;
+ sTopMenuItemCount = 3;
+ taskId = CreateTask(TaskDummy, 0);
+ DisplayItemMessageOnField(taskId, 2, gText_WhatWouldYouLikeToDo, Task_DrawPlayerPcTopMenu);
+}
+
+static void Task_DrawPlayerPcTopMenu(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (sTopMenuItemCount == 3)
+ tWindowId = AddWindow(&sWindowTemplate_TopMenu_3Items);
+ else
+ tWindowId = AddWindow(&sWindowTemplate_TopMenu_4Items);
+ SetStdWindowBorderStyle(tWindowId, 0);
+ AddItemMenuActionTextPrinters(tWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, GetFontAttribute(2, FONTATTR_LETTER_SPACING), 16, sTopMenuItemCount, sMenuActions_TopMenu, sItemOrder);
+ Menu_InitCursor(tWindowId, 2, 0, 2, 16, sTopMenuItemCount, 0);
+ ScheduleBgCopyTilemapToVram(0);
+ gTasks[taskId].func = Task_TopMenuHandleInput;
+}
+
+static void Task_TopMenuHandleInput(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s8 input = Menu_ProcessInputNoWrapAround();
+ switch (input)
+ {
+ case -2:
+ break;
+ case -1:
+ PlaySE(SE_SELECT);
+ ClearStdWindowAndFrameToTransparent(tWindowId, FALSE);
+ ClearWindowTilemap(tWindowId);
+ RemoveWindow(tWindowId);
+ ScheduleBgCopyTilemapToVram(0);
+ gTasks[taskId].func = Task_PlayerPcTurnOff;
+ break;
+ default:
+ ClearStdWindowAndFrameToTransparent(tWindowId, FALSE);
+ ClearWindowTilemap(tWindowId);
+ RemoveWindow(tWindowId);
+ ScheduleBgCopyTilemapToVram(0);
+ gTasks[taskId].func = sMenuActions_TopMenu[sItemOrder[input]].func.void_u8;
+ break;
+ }
+}
+
+static void Task_ReturnToTopMenu(u8 taskId)
+{
+ HelpSystem_RestoreSomeVariable();
+ DisplayItemMessageOnField(taskId, 2, gText_WhatWouldYouLikeToDo, Task_DrawPlayerPcTopMenu);
+}
+
+static void Task_PlayerPcItemStorage(u8 taskId)
+{
+ Task_CreateItemStorageSubmenu(taskId, FALSE);
+ gTasks[taskId].func = Task_TopMenu_ItemStorageSubmenu_HandleInput;
+}
+
+static void Task_PlayerPcMailbox(u8 taskId)
+{
+ gPlayerPcMenuManager.count = CountPCMail();
+ if (gPlayerPcMenuManager.count == 0)
+ {
+ DisplayItemMessageOnField(taskId, 2, gText_TheresNoMailHere, Task_ReturnToTopMenu);
+ }
+ else
+ {
+ gPlayerPcMenuManager.selectedRow = 0;
+ gPlayerPcMenuManager.scrollOffset = 0;
+ PCMailCompaction();
+ Task_SetPageItemVars(taskId);
+ if (gPlayerPcMenuManager.unk_9 == 0)
+ HelpSystem_SetSomeVariable2(34);
+ else
+ HelpSystem_SetSomeVariable2(30);
+ if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE)
+ {
+ ClearDialogWindowAndFrame(0, FALSE);
+ Task_DrawMailboxPcMenu(taskId);
+ gTasks[taskId].func = Task_MailboxPcHandleInput;
+ }
+ else
+ {
+ DisplayItemMessageOnField(taskId, 2, gText_TheresNoMailHere, Task_ReturnToTopMenu);
+ }
+ }
+}
+
+static void Task_PlayerPcTurnOff(u8 taskId)
+{
+ if (gPlayerPcMenuManager.unk_9 == 0)
+ ScriptContext1_SetupScript(EventScript_PalletTown_PlayersHouse_2F_ShutDownPC);
+ else
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+}
+
+static void Task_CreateItemStorageSubmenu(u8 taskId, u8 cursorPos)
+{
+ s16 *data = gTasks[taskId].data;
+ if (gPlayerPcMenuManager.unk_9 == 0)
+ HelpSystem_SetSomeVariable2(33);
+ else
+ HelpSystem_SetSomeVariable2(29);
+ tWindowId = AddWindow(&sWindowTemplate_ItemStorageSubmenu);
+ SetStdWindowBorderStyle(tWindowId, FALSE);
+ PrintTextArray(tWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, sMenuActions_ItemPc);
+ Menu_InitCursor(tWindowId, 2, 0, 2, 16, 3, cursorPos);
+ ScheduleBgCopyTilemapToVram(0);
+ PrintStringOnWindow0WithDialogueFrame(sItemStorageActionDescriptionPtrs[cursorPos]);
+}
+
+static void PrintStringOnWindow0WithDialogueFrame(const u8 *str)
+{
+ DrawDialogueFrame(0, FALSE);
+ AddTextPrinterParameterized(0, 2, str, 0, 1, 0, NULL);
+}
+
+static void Task_TopMenu_ItemStorageSubmenu_HandleInput(u8 taskId)
+{
+ if (JOY_REPT(DPAD_UP))
+ {
+ if (Menu_GetCursorPos() != 0)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(-1);
+ PrintStringOnWindow0WithDialogueFrame(sItemStorageActionDescriptionPtrs[Menu_GetCursorPos()]);
+ }
+ }
+ else if (JOY_REPT(DPAD_DOWN))
+ {
+ if (Menu_GetCursorPos() != 2)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(+1);
+ PrintStringOnWindow0WithDialogueFrame(sItemStorageActionDescriptionPtrs[Menu_GetCursorPos()]);
+ }
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sMenuActions_ItemPc[Menu_GetCursorPos()].func.void_u8(taskId);
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sMenuActions_ItemPc[2].func.void_u8(taskId);
+ }
+}
+
+static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ sub_8107DB4(3, POCKET_ITEMS - 1, CB2_ReturnToField);
+ gFieldCallback = CB2_ReturnFromDepositMenu;
+ DestroyTask(taskId);
+ }
+}
+
+static void Task_PlayerPcDepositItem(u8 taskId)
+{
+ gTasks[taskId].func = Task_DepositItem_WaitFadeAndGoToBag;
+ fade_screen(1, 0);
+}
+
+static void Task_ReturnToItemStorageSubmenu(u8 taskId)
+{
+ if (field_weather_is_fade_finished() == TRUE)
+ gTasks[taskId].func = Task_TopMenu_ItemStorageSubmenu_HandleInput;
+}
+
+static void CB2_ReturnFromDepositMenu(void)
+{
+ u8 taskId;
+ LoadStdWindowFrameGfx();
+ DrawDialogueFrame(0, TRUE);
+ taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0);
+ Task_CreateItemStorageSubmenu(taskId, 1);
+ sub_807DC00();
+}
+
+static void Task_PlayerPcWithdrawItem(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ tCount = CountItemsInPC();
+ if (tCount != 0)
+ {
+ tItemPcParam = 0;
+ gTasks[taskId].func = Task_WithdrawItemBeginFade;
+ gFieldCallback = CB2_ReturnFromWithdrawMenu;
+ }
+ else
+ {
+ ClearStdWindowAndFrameToTransparent(tWindowId, FALSE);
+ ClearWindowTilemap(tWindowId);
+ RemoveWindow(tWindowId);
+ DisplayItemMessageOnField(taskId, 2, gText_ThereAreNoItems, Task_PlayerPcItemStorage);
+ }
+}
+
+static void CB2_ReturnFromWithdrawMenu(void)
+{
+ u8 taskId;
+ LoadStdWindowFrameGfx();
+ DrawDialogueFrame(0, TRUE);
+ taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0);
+ Task_CreateItemStorageSubmenu(taskId, 0);
+ sub_807DC00();
+}
+
+static void Task_WithdrawItem_WaitFadeAndGoToItemStorage(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ CleanupOverworldWindowsAndTilemaps();
+ ItemPc_Init(tItemPcParam, CB2_ReturnToField);
+ DestroyTask(taskId);
+ }
+}
+
+static void Task_WithdrawItemBeginFade(u8 taskId)
+{
+ gTasks[taskId].func = Task_WithdrawItem_WaitFadeAndGoToItemStorage;
+ ItemPc_SetInitializedFlag(0);
+ fade_screen(1, 0);
+}
+
+static void Task_PlayerPcCancel(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ ClearStdWindowAndFrameToTransparent(tWindowId, FALSE);
+ ClearWindowTilemap(tWindowId);
+ CopyWindowToVram(tWindowId, 1);
+ RemoveWindow(tWindowId);
+ Task_ReturnToTopMenu(taskId);
+}
+
+static void Task_SetPageItemVars(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (tCount >= 8)
+ tPageItems = 8;
+ else
+ tPageItems = tCount + 1;
+ if (gPlayerPcMenuManager.count >= 8)
+ gPlayerPcMenuManager.pageItems = 8;
+ else
+ gPlayerPcMenuManager.pageItems = gPlayerPcMenuManager.count + 1;
+}
+
+static u8 CountPCMail(void)
+{
+ u8 count = 0;
+ u8 i;
+
+ for (i = PC_MAIL_NUM(0); i < MAIL_COUNT; i++)
+ {
+ if (gSaveBlock1Ptr->mail[i].itemId != ITEM_NONE)
+ count++;
+ }
+ return count;
+}
+
+static void PCMailCompaction(void)
+{
+ u8 i;
+ u8 j;
+ for (i = PC_MAIL_NUM(0); i < MAIL_COUNT - 1; i++)
+ {
+ for (j = i + 1; j < MAIL_COUNT; j++)
+ {
+ if (gSaveBlock1Ptr->mail[i].itemId == ITEM_NONE)
+ {
+ struct MailStruct mail = gSaveBlock1Ptr->mail[i];
+ gSaveBlock1Ptr->mail[i] = gSaveBlock1Ptr->mail[j];
+ gSaveBlock1Ptr->mail[j] = mail;
+ }
+ }
+ }
+}
+
+static void Task_DrawMailboxPcMenu(u8 taskId)
+{
+ u8 windowId = MailboxPC_GetAddWindow(0);
+ s32 width = GetStringWidth(2, gText_Mailbox, 0);
+ MailboxPC_GetAddWindow(1);
+ AddTextPrinterParameterized(windowId, 2, gText_Mailbox, (80 - width) / 2, 2, 0, NULL);
+ ScheduleBgCopyTilemapToVram(0);
+ gTasks[taskId].tListMenuTaskId = MailboxPC_InitListMenu(&gPlayerPcMenuManager);
+ MailboxPC_AddScrollIndicatorArrows(&gPlayerPcMenuManager);
+}
+
+static void Task_MailboxPcHandleInput(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s32 input;
+ if (!gPaletteFade.active)
+ {
+ input = ListMenu_ProcessInput(tListMenuTaskId);
+ ListMenuGetScrollAndRow(tListMenuTaskId, &gPlayerPcMenuManager.scrollOffset, &gPlayerPcMenuManager.selectedRow);
+ switch (input)
+ {
+ case -1:
+ break;
+ case -2:
+ PlaySE(SE_SELECT);
+ RemoveScrollIndicatorArrowPair(gPlayerPcMenuManager.scrollIndicatorId);
+ Task_DestroyMailboxPcViewAndCancel(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ MailboxPC_RemoveWindow(0);
+ MailboxPC_RemoveWindow(1);
+ DestroyListMenuTask(tListMenuTaskId, &gPlayerPcMenuManager.scrollOffset, &gPlayerPcMenuManager.selectedRow);
+ ScheduleBgCopyTilemapToVram(0);
+ RemoveScrollIndicatorArrowPair(gPlayerPcMenuManager.scrollIndicatorId);
+ gTasks[taskId].func = Task_PrintWhatToDoWithSelectedMail;
+ break;
+ }
+ }
+}
+
+static void Task_PrintWhatToDoWithSelectedMail(u8 taskId)
+{
+ s32 length;
+ s32 i;
+ u8 *ptr;
+ StringCopy(gStringVar1, SELECTED_MAIL.playerName);
+ length = StringLength(gStringVar1);
+ if (length > 5)
+ {
+ for (ptr = gStringVar1 + length - 1; ptr >= gStringVar1; ptr--)
+ {
+ if (*ptr)
+ break;
+ *ptr = EOS;
+ }
+ }
+ else
+ {
+ ConvertInternationalString(gStringVar1, LANGUAGE_JAPANESE);
+ }
+ StringExpandPlaceholders(gStringVar4, gText_WhatWouldYouLikeToDoWithPlayersMail);
+ DisplayItemMessageOnField(taskId, 2, gStringVar4, Task_DrawMailSubmenu);
+}
+
+static void Task_DestroyMailboxPcViewAndCancel(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ MailboxPC_RemoveWindow(0);
+ MailboxPC_RemoveWindow(1);
+ DestroyListMenuTask(tListMenuTaskId, NULL, NULL);
+ ScheduleBgCopyTilemapToVram(0);
+ MailboxPC_DestroyListMenuBuffer();
+ Task_ReturnToTopMenu(taskId);
+}
+
+static void Task_DrawMailSubmenu(u8 taskId)
+{
+ u8 windowId = MailboxPC_GetAddWindow(2);
+ PrintTextArray(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 4, sMenuActions_MailSubmenu);
+ Menu_InitCursor(windowId, 2, 0, 2, 16, 4, 0);
+ ScheduleBgCopyTilemapToVram(0);
+ gTasks[taskId].func = Task_MailSubmenuHandleInput;
+}
+
+static void Task_MailSubmenuHandleInput(u8 taskId)
+{
+ s8 input = Menu_ProcessInput_other();
+ switch (input)
+ {
+ case -1:
+ PlaySE(SE_SELECT);
+ Task_PlayerPcExitMailSubmenu(taskId);
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sMenuActions_MailSubmenu[input].func.void_u8(taskId);
+ break;
+ }
+}
+
+static void Task_PlayerPcReadMail(u8 taskId)
+{
+ fade_screen(1, 0);
+ gTasks[taskId].func = Task_WaitFadeAndReadSelectedMail;
+}
+
+static void Task_WaitFadeAndReadSelectedMail(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ MailboxPC_DestroyListMenuBuffer();
+ CleanupOverworldWindowsAndTilemaps();
+ sub_80BEBEC(&SELECTED_MAIL, CB2_SetCbToReturnToMailbox, 1);
+ DestroyTask(taskId);
+ }
+}
+
+static void Task_WaitFadeAndReturnToMailboxPcInputHandler(u8 taskId)
+{
+ if (field_weather_is_fade_finished() == TRUE)
+ gTasks[taskId].func = Task_MailboxPcHandleInput;
+}
+
+static void CB2_ReturnToMailbox(void)
+{
+ u8 taskId;
+ if (gPlayerPcMenuManager.unk_9 == 0)
+ HelpSystem_SetSomeVariable2(34);
+ else
+ HelpSystem_SetSomeVariable2(30);
+ LoadStdWindowFrameGfx();
+ taskId = CreateTask(Task_WaitFadeAndReturnToMailboxPcInputHandler, 0);
+ if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE)
+ Task_DrawMailboxPcMenu(taskId);
+ else
+ DestroyTask(taskId);
+ sub_807DC00();
+}
+
+static void CB2_SetCbToReturnToMailbox(void)
+{
+ gFieldCallback = CB2_ReturnToMailbox;
+ SetMainCallback2(CB2_ReturnToField);
+}
+
+static void Task_PlayerPcMoveMailToBag(u8 taskId)
+{
+ DisplayItemMessageOnField(taskId, 2, gText_MessageWillBeLost, Task_DrawYesNoMenuToConfirmMoveToBag);
+}
+
+static void Task_DrawYesNoMenuToConfirmMoveToBag(u8 taskId)
+{
+ DisplayYesNoMenuDefaultYes();
+ gTasks[taskId].func = Task_MoveToBagYesNoMenuHandleInput;
+}
+
+static void Task_MoveToBagYesNoMenuHandleInput(u8 taskId)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case -2:
+ break;
+ case 0:
+ Task_TryPutMailInBag_DestroyMsgIfSuccessful(taskId);
+ break;
+ case -1:
+ PlaySE(SE_SELECT);
+ // fallthrough
+ case 1:
+ Task_DeclinedMoveMailToBag(taskId);
+ break;
+ }
+}
+
+static void Task_TryPutMailInBag_DestroyMsgIfSuccessful(u8 taskId)
+{
+ struct MailStruct * mail = &SELECTED_MAIL;
+ if (!AddBagItem(mail->itemId, 1))
+ {
+ DisplayItemMessageOnField(taskId, 2, gText_BagIsFull, Task_PlayerPcExitMailSubmenu);
+ }
+ else
+ {
+ DisplayItemMessageOnField(taskId, 2, gText_MailReturnedToBagMessageErased, Task_PlayerPcExitMailSubmenu);
+ ClearMailStruct(mail);
+ PCMailCompaction();
+ gPlayerPcMenuManager.count--;
+ if (gPlayerPcMenuManager.count < gPlayerPcMenuManager.pageItems + gPlayerPcMenuManager.scrollOffset)
+ {
+ if (gPlayerPcMenuManager.scrollOffset != 0)
+ gPlayerPcMenuManager.scrollOffset--;
+ }
+ Task_SetPageItemVars(taskId);
+ }
+}
+
+static void Task_DeclinedMoveMailToBag(u8 taskId)
+{
+ Task_PlayerPcExitMailSubmenu(taskId);
+}
+
+static void Task_PlayerPcGiveMailToMon(u8 taskId)
+{
+ if (CalculatePlayerPartyCount() == 0)
+ {
+ Task_Error_NoPokemon(taskId);
+ }
+ else
+ {
+ fade_screen(1, 0);
+ gTasks[taskId].func = Task_WaitFadeAndGoToPartyMenu;
+ }
+}
+
+static void Task_WaitFadeAndGoToPartyMenu(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ MailboxPC_DestroyListMenuBuffer();
+ CleanupOverworldWindowsAndTilemaps();
+ PartyMenuInit_FromPlayerPc();
+ DestroyTask(taskId);
+ }
+}
+
+static void CB2_ReturnToMailboxPc_UpdateScrollVariables(void)
+{
+ u8 taskId;
+ u8 count;
+ if (gPlayerPcMenuManager.unk_9 == 0)
+ HelpSystem_SetSomeVariable2(34);
+ else
+ HelpSystem_SetSomeVariable2(30);
+ taskId = CreateTask(Task_WaitFadeAndReturnToMailboxPcInputHandler, 0);
+ count = gPlayerPcMenuManager.count;
+ gPlayerPcMenuManager.count = CountPCMail();
+ PCMailCompaction();
+ if (count != gPlayerPcMenuManager.count)
+ {
+ if (gPlayerPcMenuManager.count < gPlayerPcMenuManager.pageItems + gPlayerPcMenuManager.scrollOffset)
+ {
+ if (gPlayerPcMenuManager.scrollOffset != 0)
+ gPlayerPcMenuManager.scrollOffset--;
+ }
+ }
+ Task_SetPageItemVars(taskId);
+ LoadStdWindowFrameGfx();
+ if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE)
+ Task_DrawMailboxPcMenu(taskId);
+ else
+ DestroyTask(taskId);
+ sub_807DC00();
+}
+
+void CB2_PlayerPC_ReturnFromPartyMenu(void)
+{
+ gFieldCallback = CB2_ReturnToMailboxPc_UpdateScrollVariables;
+ SetMainCallback2(CB2_ReturnToField);
+}
+
+static void Task_Error_NoPokemon(u8 taskId)
+{
+ DisplayItemMessageOnField(taskId, 2, gText_ThereIsNoPokemon, Task_PlayerPcExitMailSubmenu);
+}
+
+static void Task_RedrawPlayerPcMailboxAndSetUpInputHandler(u8 taskId)
+{
+ ClearDialogWindowAndFrame(0, FALSE);
+ Task_DrawMailboxPcMenu(taskId);
+ ScheduleBgCopyTilemapToVram(0);
+ gTasks[taskId].func = Task_MailboxPcHandleInput;
+}
+
+static void Task_PlayerPcExitMailSubmenu(u8 taskId)
+{
+ MailboxPC_RemoveWindow(2);
+ ScheduleBgCopyTilemapToVram(0);
+ gTasks[taskId].func = Task_RedrawPlayerPcMailboxAndSetUpInputHandler;
+}
+
+#undef tListMenuTaskId
+#undef tWindowId
+#undef tItemPcParam
+#undef tPageItems
+#undef tCount
diff --git a/src/pokemon.c b/src/pokemon.c
index 4685dcbcd..1159b1861 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -13,7 +13,6 @@
#include "event_data.h"
#include "util.h"
#include "pokemon_storage_system.h"
-#include "data.h"
#include "battle_gfx_sfx_util.h"
#include "battle_controllers.h"
#include "evolution_scene.h"
diff --git a/src/psychic.c b/src/psychic.c
new file mode 100644
index 000000000..662320a2b
--- /dev/null
+++ b/src/psychic.c
@@ -0,0 +1,1083 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "sound.h"
+#include "scanline_effect.h"
+#include "trig.h"
+#include "constants/songs.h"
+
+static void sub_80B2ECC(struct Sprite *sprite);
+static void sub_80B31D0(struct Sprite *sprite);
+static void sub_80B3278(struct Sprite *sprite);
+static void sub_80B32F4(struct Sprite *sprite);
+static void sub_80B37EC(struct Sprite *sprite);
+static void sub_80B3A34(struct Sprite *sprite);
+static void sub_80B3E84(struct Sprite *sprite);
+static void sub_80B300C(struct Sprite *sprite);
+static void sub_80B3044(struct Sprite *sprite);
+static void sub_80B30B0(struct Sprite *sprite);
+static void sub_80B3168(struct Sprite *sprite);
+static void sub_80B3384(struct Sprite *sprite);
+static void sub_80B33B8(struct Sprite *sprite);
+static void sub_80B3454(u8 taskId);
+static void sub_80B34DC(u8 taskId);
+static void sub_80B3618(u8 taskId);
+static void sub_80B3980(u8 taskId);
+static void sub_80B3B78(u8 taskId);
+static void sub_80B3D78(u8 taskId);
+
+static const union AffineAnimCmd gUnknown_83E6DDC[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFE, 0xFFFE, -10, 120),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E6DF4[] =
+{
+ gUnknown_83E6DDC,
+};
+
+const struct SpriteTemplate gUnknown_83E6DF8 =
+{
+ .tileTag = ANIM_TAG_SPIRAL,
+ .paletteTag = ANIM_TAG_SPIRAL,
+ .oam = &gOamData_83ACB60,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E6DF4,
+ .callback = sub_8075D9C,
+};
+
+const struct SpriteTemplate gUnknown_83E6E10 =
+{
+ .tileTag = ANIM_TAG_GREEN_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_GREEN_LIGHT_WALL,
+ .oam = &gOamData_83ACB00,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2ECC,
+};
+
+const struct SpriteTemplate gUnknown_83E6E28 =
+{
+ .tileTag = ANIM_TAG_BLUE_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_BLUE_LIGHT_WALL,
+ .oam = &gOamData_83ACB00,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2ECC,
+};
+
+const struct SpriteTemplate gUnknown_83E6E40 =
+{
+ .tileTag = ANIM_TAG_RED_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_RED_LIGHT_WALL,
+ .oam = &gOamData_83ACB00,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2ECC,
+};
+
+const struct SpriteTemplate gUnknown_83E6E58 =
+{
+ .tileTag = ANIM_TAG_GRAY_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_GRAY_LIGHT_WALL,
+ .oam = &gOamData_83ACB00,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2ECC,
+};
+
+const struct SpriteTemplate gUnknown_83E6E70 =
+{
+ .tileTag = ANIM_TAG_ORANGE_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_ORANGE_LIGHT_WALL,
+ .oam = &gOamData_83ACB00,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B2ECC,
+};
+
+static const union AnimCmd gUnknown_83E6E88[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E6EA0[] =
+{
+ gUnknown_83E6E88,
+};
+
+const struct SpriteTemplate gUnknown_83E6EA4 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_4,
+ .paletteTag = ANIM_TAG_SPARKLE_4,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E6EA0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B31D0,
+};
+
+static const union AnimCmd gUnknown_83E6EBC[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E6ED0[] =
+{
+ gUnknown_83E6EBC,
+};
+
+const struct SpriteTemplate gUnknown_83E6ED4 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_3,
+ .paletteTag = ANIM_TAG_SPARKLE_3,
+ .oam = &gOamData_83AC9D0,
+ .anims = gUnknown_83E6ED0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B31D0,
+};
+
+const struct SpriteTemplate gUnknown_83E6EEC =
+{
+ .tileTag = ANIM_TAG_GOLD_RING,
+ .paletteTag = ANIM_TAG_GOLD_RING,
+ .oam = &gOamData_83ACA18,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+static const union AnimCmd gUnknown_83E6F04[] =
+{
+ ANIMCMD_FRAME(8, 60, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 22, .hFlip = TRUE),
+ ANIMCMD_LOOP(0),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(8, 22, .hFlip = TRUE),
+ ANIMCMD_FRAME(24, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(40, 22, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_83E6F44[] =
+{
+ ANIMCMD_FRAME(8, 60),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(8, 22),
+ ANIMCMD_LOOP(0),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(8, 22),
+ ANIMCMD_FRAME(24, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(40, 22),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E6F84[] =
+{
+ gUnknown_83E6F04,
+ gUnknown_83E6F44,
+};
+
+const struct SpriteTemplate gUnknown_83E6F8C =
+{
+ .tileTag = ANIM_TAG_BENT_SPOON,
+ .paletteTag = ANIM_TAG_BENT_SPOON,
+ .oam = &gOamData_83ACA18,
+ .anims = gUnknown_83E6F84,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B3278,
+};
+
+static const union AnimCmd gUnknown_83E6FA4[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_FRAME(64, 6),
+ ANIMCMD_FRAME(80, 6),
+ ANIMCMD_FRAME(96, 18),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E6FC4[] =
+{
+ gUnknown_83E6FA4,
+};
+
+static const union AffineAnimCmd gUnknown_83E6FC8[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 4, 4),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 8),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 4),
+ AFFINEANIMCMD_LOOP(2),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E6FF0[] =
+{
+ gUnknown_83E6FC8,
+};
+
+const struct SpriteTemplate gUnknown_83E6FF4 =
+{
+ .tileTag = ANIM_TAG_AMNESIA,
+ .paletteTag = ANIM_TAG_AMNESIA,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E6FC4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B32F4,
+};
+
+static const union AffineAnimCmd gUnknown_83E700C[] =
+{
+ AFFINEANIMCMD_FRAME(-8, 10, 0, 16),
+ AFFINEANIMCMD_FRAME(18, -18, 0, 16),
+ AFFINEANIMCMD_FRAME(-20, 16, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E702C[] =
+{
+ AFFINEANIMCMD_FRAME(64, -4, 0, 20),
+ AFFINEANIMCMD_FRAME(0, 0, 0, -56),
+ AFFINEANIMCMD_END,
+};
+
+static const struct SpriteTemplate gUnknown_83E7044 =
+{
+ .tileTag = ANIM_TAG_HOLLOW_ORB,
+ .paletteTag = ANIM_TAG_HOLLOW_ORB,
+ .oam = &gOamData_83ACAF0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct SpriteTemplate gUnknown_83E705C =
+{
+ .tileTag = 0x280A,
+ .paletteTag = 0x280A,
+ .oam = &gOamData_83AC9E0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B37EC,
+};
+
+static const union AffineAnimCmd gUnknown_83E7074[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 8),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd gUnknown_83E708C[] =
+{
+ AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+static const union AffineAnimCmd gUnknown_83E70B4[] =
+{
+ AFFINEANIMCMD_FRAME(0xD0, 0xD0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+static const union AffineAnimCmd gUnknown_83E70DC[] =
+{
+ AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7104[] =
+{
+ gUnknown_83E7074,
+ gUnknown_83E708C,
+ gUnknown_83E70B4,
+ gUnknown_83E70DC,
+};
+
+static const struct SpriteTemplate gUnknown_83E7114 =
+{
+ .tileTag = ANIM_TAG_BLUEGREEN_ORB,
+ .paletteTag = ANIM_TAG_BLUEGREEN_ORB,
+ .oam = &gOamData_83ACA30,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7104,
+ .callback = sub_80B3A34,
+};
+
+static const union AffineAnimCmd gUnknown_83E712C[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 120),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7144[] =
+{
+ gUnknown_83E712C,
+};
+
+const struct SpriteTemplate gUnknown_83E7148 =
+{
+ .tileTag = ANIM_TAG_WHITE_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_WHITE_CIRCLE_OF_LIGHT,
+ .oam = &gOamData_83ACBC0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7144,
+ .callback = sub_8075D9C,
+};
+
+static const union AffineAnimCmd gUnknown_83E7160[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 17),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 10),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 10),
+ AFFINEANIMCMD_LOOP(4),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 5),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 5),
+ AFFINEANIMCMD_LOOP(7),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_83E71B8[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFEC, 0x18, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gUnknown_83E71C8[] =
+{
+ gUnknown_83E7160,
+ gUnknown_83E71B8,
+};
+
+const struct SpriteTemplate gUnknown_83E71D0 =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gOamData_83ACBC0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_83E71C8,
+ .callback = sub_80B3E84,
+};
+
+static void sub_80B2ECC(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest())
+ {
+ sprite->oam.priority = 2;
+ sprite->subpriority = 200;
+ }
+ if (!IsContest())
+ {
+ u8 battlerCopy;
+ u8 battler = battlerCopy = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ u8 rank = GetBattlerSpriteBGPriorityRank(battler);
+ s32 var0 = 1;
+ bool8 toBG2 = (rank ^ var0) != 0;
+
+ if (IsBattlerSpriteVisible(battler))
+ MoveBattlerSpriteToBG(battler, toBG2);
+ battler = BATTLE_PARTNER(battlerCopy);
+ if (IsBattlerSpriteVisible(battler))
+ MoveBattlerSpriteToBG(battler, toBG2 ^ var0);
+ }
+ if (!IsContest() && IsDoubleBattle())
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 72;
+ sprite->pos1.y = 80;
+ }
+ else
+ {
+ sprite->pos1.x = 176;
+ sprite->pos1.y = 40;
+ }
+ }
+ else
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1];
+ }
+ if (IsContest())
+ sprite->pos1.y += 9;
+ sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16;
+ sprite->callback = sub_80B300C;
+ sub_80B300C(sprite);
+}
+
+static void sub_80B300C(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3]));
+ if (sprite->data[3] == 13)
+ sprite->callback = sub_80B3044;
+ else
+ ++sprite->data[3];
+}
+
+static void sub_80B3044(struct Sprite *sprite)
+{
+ u16 color;
+ u16 startOffset;
+ s32 i;
+
+ if (++sprite->data[1] == 2)
+ {
+ sprite->data[1] = 0;
+ startOffset = sprite->data[0];
+ color = gPlttBufferFaded[startOffset + 8];
+ for (i = 8; i > 0; --i)
+ gPlttBufferFaded[startOffset + i] = gPlttBufferFaded[startOffset + i - 1];
+ gPlttBufferFaded[startOffset + 1] = color;
+ if (++sprite->data[2] == 16)
+ sprite->callback = sub_80B30B0;
+ }
+}
+
+static void sub_80B30B0(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3]));
+ if (--sprite->data[3] == -1)
+ {
+ if (!IsContest())
+ {
+ u8 battlerCopy;
+ u8 battler = battlerCopy = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+
+ if (IsBattlerSpriteVisible(battler))
+ gSprites[gBattlerSpriteIds[battler]].invisible = FALSE;
+ battler = BATTLE_PARTNER(battlerCopy);
+ if (IsBattlerSpriteVisible(battler))
+ gSprites[gBattlerSpriteIds[battler]].invisible = FALSE;
+ }
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80B3168;
+ }
+}
+
+static void sub_80B3168(struct Sprite *sprite)
+{
+ if (!IsContest())
+ {
+ u8 battlerCopy;
+ u8 battler = battlerCopy = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ u8 rank = GetBattlerSpriteBGPriorityRank(battler);
+ s32 var0 = 1;
+ bool8 toBG2 = (rank ^ var0) != 0;
+
+ if (IsBattlerSpriteVisible(battler))
+ sub_8073128(toBG2);
+ battler = battlerCopy ^ 2;
+ if (IsBattlerSpriteVisible(battler))
+ sub_8073128(toBG2 ^ var0);
+ }
+ sprite->callback = DestroyAnimSprite;
+}
+
+static void sub_80B31D0(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ int arg3 = gBattleAnimArgs[3];
+ bool8 respectMonPicOffsets = FALSE;
+ if (arg3 == 0)
+ respectMonPicOffsets = TRUE;
+ if (!IsContest() && IsDoubleBattle())
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 72 - gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1] + 80;
+ }
+ else
+ {
+ sprite->pos1.x = gBattleAnimArgs[0] + 176;
+ sprite->pos1.y = gBattleAnimArgs[1] + 40;
+ }
+ }
+ else
+ {
+ if (gBattleAnimArgs[2] == 0)
+ InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets);
+ else
+ InitSpritePosToAnimTarget(sprite, respectMonPicOffsets);
+ }
+
+ ++sprite->data[0];
+ }
+ else if (sprite->animEnded || sprite->affineAnimEnded)
+ {
+ DestroySpriteAndMatrix(sprite);
+ }
+}
+
+static void sub_80B3278(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->pos1.x -= 40;
+ sprite->pos1.y += 10;
+ sprite->data[1] = -1;
+ }
+ else
+ {
+ sprite->pos1.x += 40;
+ sprite->pos1.y -= 10;
+ sprite->data[1] = 1;
+ }
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+}
+
+static void sub_80B32F4(struct Sprite *sprite)
+{
+ s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2;
+ s16 y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / -2;
+
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ x = -x;
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + x;
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y;
+ if (sprite->pos1.y < 16)
+ sprite->pos1.y = 16;
+ StoreSpriteCallbackInData6(sprite, sub_80B3384);
+ sprite->callback = RunStoredCallbackWhenAnimEnds;
+}
+
+static void sub_80B3384(struct Sprite *sprite)
+{
+ sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ sprite->affineAnims = gUnknown_83E6FF0;
+ sprite->data[0] = 0;
+ InitSpriteAffineAnim(sprite);
+ sprite->callback = sub_80B33B8;
+}
+
+static void sub_80B33B8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (sprite->affineAnimEnded)
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
+ sprite->data[1] = 18;
+ ++sprite->data[0];
+ }
+ break;
+ case 1:
+ if (--sprite->data[1] == -1)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_80B3418(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+
+ task->data[0] = spriteId;
+ PrepareAffineAnimInTaskData(task, spriteId, gUnknown_83E700C);
+ task->func = sub_80B3454;
+}
+
+static void sub_80B3454(u8 taskId)
+{
+ if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80B3480(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+
+ task->data[0] = spriteId;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 4 : 8;
+ PrepareAffineAnimInTaskData(task, task->data[0], gUnknown_83E702C);
+ task->func = sub_80B34DC;
+}
+
+static void sub_80B34DC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[1])
+ {
+ case 0:
+ RunAffineAnimFromTaskData(task);
+ if (++task->data[2] > 19)
+ ++task->data[1];
+ break;
+ case 1:
+ if (task->data[3] != 0)
+ {
+ gSprites[task->data[0]].pos2.y -= 8;
+ --task->data[3];
+ }
+ else
+ {
+ gSprites[task->data[0]].invisible = TRUE;
+ gSprites[task->data[0]].pos1.x = 272;
+ ResetSpriteRotScale(task->data[0]);
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80B3584(u8 taskId)
+{
+ u16 var0, var1;
+ struct Task *task = &gTasks[taskId];
+
+ task->data[3] = 16;
+ task->data[4] = 0;
+ task->data[13] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ var0 = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 3;
+ var1 = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 3;
+ task->data[12] = var0 > var1 ? var0 : var1;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+ task->func = sub_80B3618;
+}
+
+static void sub_80B3618(u8 taskId)
+{
+ u16 i;
+ u8 spriteId;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 8)
+ {
+ task->data[1] = 0;
+ spriteId = CreateSprite(&gUnknown_83E7044, task->data[13], task->data[14], 0);
+ task->data[task->data[2] + 8] = spriteId;
+ if (spriteId != MAX_SPRITES)
+ {
+ switch (task->data[2])
+ {
+ case 0:
+ gSprites[spriteId].pos2.x = task->data[12];
+ gSprites[spriteId].pos2.y = -task->data[12];
+ break;
+ case 1:
+ gSprites[spriteId].pos2.x = -task->data[12];
+ gSprites[spriteId].pos2.y = task->data[12];
+ break;
+ case 2:
+ gSprites[spriteId].pos2.x = task->data[12];
+ gSprites[spriteId].pos2.y = task->data[12];
+ break;
+ case 3:
+ gSprites[spriteId].pos2.x = -task->data[12];
+ gSprites[spriteId].pos2.y = -task->data[12];
+ break;
+ }
+ }
+
+ if (++task->data[2] == 5)
+ ++task->data[0];
+ }
+ break;
+ case 1:
+ if (task->data[1] & 1)
+ --task->data[3];
+ else
+ ++task->data[4];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4]));
+ if (++task->data[1] == 32)
+ {
+ for (i = 8; i < 13; ++i)
+ if (task->data[i] != 64)
+ DestroySprite(&gSprites[task->data[i]]);
+ ++task->data[0];
+ }
+ break;
+ case 2:
+ ++task->data[0];
+ break;
+ case 3:
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B37A4(struct Sprite *sprite)
+{
+ if (sprite->data[1] > sprite->data[0] - 10)
+ sprite->invisible = sprite->data[1] & 1;
+ if (sprite->data[1] == sprite->data[0])
+ DestroyAnimSprite(sprite);
+ ++sprite->data[1];
+}
+
+static void sub_80B37EC(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+ sprite->data[0] = gBattleAnimArgs[1];
+ sprite->callback = sub_80B37A4;
+}
+
+void sub_80B3834(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (IsContest())
+ {
+ if (gBattleAnimArgs[0] == 1)
+ {
+ task->data[10] = -10;
+ task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_RIGHT) - 8;
+ task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP) + 8;
+ task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_RIGHT) - 8;
+ task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP) + 8;
+ }
+ else
+ {
+ task->data[10] = 10;
+ task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_LEFT) + 8;
+ task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM) - 8;
+ task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_LEFT) + 8;
+ task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_BOTTOM) - 8;
+ }
+ }
+ else
+ {
+ if (gBattleAnimArgs[0] == 1)
+ {
+ task->data[10] = -10;
+ task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_LEFT) + 8;
+ task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP) + 8;
+ task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_LEFT) + 8;
+ task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP) + 8;
+ }
+ else
+ {
+ task->data[10] = 10;
+ task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_RIGHT) - 8;
+ task->data[12] = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM) - 8;
+ task->data[13] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_RIGHT) - 8;
+ task->data[14] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_BOTTOM) - 8;
+ }
+ }
+ task->data[1] = 6;
+ task->func = sub_80B3980;
+}
+
+static void sub_80B3980(u8 taskId)
+{
+ u8 spriteId;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 6)
+ {
+ task->data[1] = 0;
+ spriteId = CreateSprite(&gUnknown_83E7114, task->data[11], task->data[12], 0);
+ if (spriteId != 64)
+ {
+ gSprites[spriteId].data[0] = 16;
+ gSprites[spriteId].data[2] = task->data[13];
+ gSprites[spriteId].data[4] = task->data[14];
+ gSprites[spriteId].data[5] = task->data[10];
+ InitAnimArcTranslation(&gSprites[spriteId]);
+ StartSpriteAffineAnim(&gSprites[spriteId], task->data[2] & 3);
+ }
+
+ if (++task->data[2] == 12)
+ ++task->data[0];
+ }
+ break;
+ case 1:
+ if (++task->data[1] > 17)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B3A34(struct Sprite *sprite)
+{
+ if (TranslateAnimHorizontalArc(sprite))
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+ }
+}
+
+void sub_80B3A58(u8 taskId)
+{
+ s16 i;
+ u8 yOffset;
+ struct ScanlineEffectParams scanlineParams;
+ struct Task *task = &gTasks[taskId];
+
+ yOffset = GetBattlerYCoordWithElevation(gBattleAnimTarget);
+ task->data[14] = yOffset - 32;
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ task->data[11] = 2;
+ task->data[12] = 5;
+ task->data[13] = 64;
+ task->data[15] = yOffset + 32;
+ break;
+ case 1:
+ task->data[11] = 2;
+ task->data[12] = 5;
+ task->data[13] = 192;
+ task->data[15] = yOffset + 32;
+ break;
+ case 2:
+ task->data[11] = 4;
+ task->data[12] = 4;
+ task->data[13] = 0;
+ task->data[15] = yOffset + 32;
+ break;
+ }
+ if (task->data[14] < 0)
+ task->data[14] = 0;
+ if (GetBattlerSpriteBGPriorityRank(gBattleAnimTarget) == 1)
+ {
+ task->data[10] = gBattle_BG1_X;
+ scanlineParams.dmaDest = &REG_BG1HOFS;
+ }
+ else
+ {
+ task->data[10] = gBattle_BG2_X;
+ scanlineParams.dmaDest = &REG_BG2HOFS;
+ }
+ for (i = task->data[14]; i <= task->data[14] + 64; ++i)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[10];
+ gScanlineEffectRegBuffers[1][i] = task->data[10];
+ }
+ scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ ScanlineEffect_SetParams(scanlineParams);
+ task->func = sub_80B3B78;
+}
+
+static void sub_80B3B78(u8 taskId)
+{
+ s16 sineIndex, i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sineIndex = task->data[13];
+ for (i = task->data[14]; i <= task->data[15]; ++i)
+ {
+ s16 var2 = (gSineTable[sineIndex] >> task->data[12]);
+
+ if (var2 > 0)
+ var2 += (task->data[1] & 3);
+ else if (var2 < 0)
+ var2 -= (task->data[1] & 3);
+ gScanlineEffectRegBuffers[0][i] = task->data[10] + var2;
+ gScanlineEffectRegBuffers[1][i] = task->data[10] + var2;
+ sineIndex += task->data[11];
+ }
+ if (++task->data[1] > 23)
+ ++task->data[0];
+ break;
+ case 1:
+ gScanlineEffect.state = 3;
+ ++task->data[0];
+ break;
+ case 2:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80B3C78(u8 taskId)
+{
+ s16 spriteId;
+ s16 matrixNum;
+ struct Task *task = &gTasks[taskId];
+
+ matrixNum = AllocOamMatrix();
+ if (matrixNum == 0xFF)
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ spriteId = CloneBattlerSpriteWithBlend(gBattleAnimArgs[0]);
+ if (spriteId < 0)
+ {
+ FreeOamMatrix(matrixNum);
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ gSprites[spriteId].oam.matrixNum = matrixNum;
+ gSprites[spriteId].affineAnimPaused = TRUE;
+ ++gSprites[spriteId].subpriority;
+ SetSpriteRotScale(spriteId, 256, 256, 0);
+ CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
+ task->data[13] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ task->data[14] = matrixNum;
+ task->data[15] = spriteId;
+ task->func = sub_80B3D78;
+}
+
+static void sub_80B3D78(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[1] += 4;
+ task->data[2] = 256 - (gSineTable[task->data[1]] >> 1);
+ SetSpriteRotScale(task->data[15], task->data[2], task->data[2], 0);
+ SetBattlerSpriteYOffsetFromOtherYScale(task->data[15], task->data[13]);
+ if (task->data[1] == 48)
+ ++task->data[0];
+ break;
+ case 1:
+ task->data[1] -= 4;
+ task->data[2] = 256 - (gSineTable[task->data[1]] >> 1);;
+ SetSpriteRotScale(task->data[15], task->data[2], task->data[2], 0);
+ SetBattlerSpriteYOffsetFromOtherYScale(task->data[15], task->data[13]);
+ if (task->data[1] == 0)
+ ++task->data[0];
+ break;
+ case 2:
+ obj_delete_but_dont_free_vram(&gSprites[task->data[15]]);
+ ++task->data[0];
+ break;
+ case 3:
+ FreeOamMatrix(task->data[14]);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B3E84(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
+ if (IsContest())
+ sprite->pos1.y += 12;
+ sprite->data[1] = 8;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[1], 16 - sprite->data[1]));
+ ++sprite->data[0];
+ break;
+ case 1:
+ if (sprite->affineAnimEnded)
+ {
+ PlaySE12WithPanning(SE_W100, BattleAnimAdjustPanning(-64));
+ ChangeSpriteAffineAnim(sprite, 1);
+ ++sprite->data[0];
+ }
+ break;
+ case 2:
+ if (sprite->data[2]++ > 1)
+ {
+ sprite->data[2] = 0;
+ --sprite->data[1];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[1], 16 - sprite->data[1]));
+ if (sprite->data[1] == 0)
+ {
+ ++sprite->data[0];
+ sprite->invisible = TRUE;
+ }
+ }
+ sprite->data[3] += 0x380;
+ sprite->pos2.y -= sprite->data[3] >> 8;
+ sprite->data[3] &= 0xFF;
+ break;
+ case 3:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
diff --git a/src/quest_log.c b/src/quest_log.c
index c8bd19174..ef8f56249 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -92,188 +92,185 @@ struct UnkStruct_203AE98 * gUnknown_3005E94;
static struct UnkStruct_300201C * gUnknown_300201C;
static u16 gUnknown_3002020;
-EWRAM_DATA u8 gUnknown_203ADF8 = 0;
+static EWRAM_DATA u8 gUnknown_203ADF8 = 0;
static EWRAM_DATA u8 sNumScenes = 0;
EWRAM_DATA u8 gUnknown_203ADFA = 0;
-EWRAM_DATA u16 gUnknown_203ADFC = 0;
-EWRAM_DATA u8 gUnknown_203ADFE[3] = {0};
-EWRAM_DATA u16 * gUnknown_203AE04 = NULL;
-EWRAM_DATA u16 * gUnknown_203AE08 = NULL;
-EWRAM_DATA u16 * gUnknown_203AE0C[32] = {NULL};
-EWRAM_DATA void (* gUnknown_203AE8C)(void) = NULL;
-EWRAM_DATA u16 *gUnknown_203AE90 = NULL;
-EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0};
-EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0};
-EWRAM_DATA u16 gUnknown_203AF98 = 0;
-EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}};
-EWRAM_DATA u16 gUnknown_203B01A = 0;
-EWRAM_DATA u16 gUnknown_203B01C = 0;
-EWRAM_DATA u16 gUnknown_203B01E = 0;
-EWRAM_DATA u8 gUnknown_203B020 = 0;
-EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0};
-EWRAM_DATA struct UnkStruct_203B044 gUnknown_203B044 = {0};
-EWRAM_DATA u8 gUnknown_203B048 = 0;
-EWRAM_DATA u8 gUnknown_203B049 = 0;
-EWRAM_DATA u8 gUnknown_203B04A = 0;
-EWRAM_DATA u8 gUnknown_203B04B = 0;
-
-void sub_8110A00(void);
-void sub_8110A3C(void);
-void sub_8110BB0(u8);
-void sub_8110BE8(u8);
-void sub_8110E3C(void);
-void sub_8110D94(void);
-void sub_8110E20(void);
-void sub_8110D48(u8);
-u8 sub_8110E68(struct UnkStruct_203AE98 *);
-void sub_8110F90(u8);
-void sub_8111150(u8);
-void sub_8111368(void);
-void sub_81115E8(void);
-u16 sub_8111618(void);
-u16 sub_811164C(void);
-void sub_8111688(void);
-void sub_811175C(u8, struct UnkStruct_203AE98 *);
-void sub_81118F4(s8);
-void sub_8111914(void);
-void sub_8111984(void);
-void sub_8111A34(u8);
-void sub_8111AD8(void);
-void sub_8111B80(void);
-u8 sub_8111BD4(void);
-void sub_8111D10(void);
-void sub_8111D90(u8);
-void sub_8111E20(void);
-void sub_8111E64(s8);
-void sub_8111E84(void);
-bool8 sub_8111F60(void);
-void sub_8111F8C(u8);
-void sub_8111FCC(u8);
-void sub_8112044(u8);
-void sub_81120AC(u8);
-bool8 sub_81121D8(u8);
-void sub_811229C(void);
-void sub_8112364(void);
-void sub_8112888(u8);
-void sub_8112940(u8, struct UnkStruct_203AE98 *, u16);
-u8 sub_8112CAC(void);
-bool8 sub_8112CEC(void);
-bool8 sub_8112D1C(void);
-void sub_8113078(struct Var4038Struct *);
-void sub_81130BC(struct Var4038Struct *);
-u8 sub_8113194(struct Var4038Struct *);
-u16 sub_81132A0(struct Var4038Struct *);
-void sub_81132E0(struct Var4038Struct *);
-bool16 sub_811337C(struct Var4038Struct *);
-void sub_8113390(struct Var4038Struct *);
-void sub_8113414(struct LinkBattleRecords *, u8, u8);
-void sub_81134CC(struct Var4038Struct *);
-bool8 sub_8113508(struct Var4038Struct * );
-void sub_8113524(struct Var4038Struct *);
-bool8 sub_81136D4(void);
-bool8 sub_8113778(u16, u16 *);
-bool8 sub_81137E4(u16, u16 *);
-u16 * sub_8113828(u16, u16 *);
-bool8 sub_81138A0(u16, u16 *);
-bool8 sub_8113954(u16, u16 *);
-void sub_8113A1C(u16);
-void sub_811381C(void);
-void sub_81138F8(void);
-bool8 sub_8113A44(u16, u16 *);
-u16 * sub_8113A78(u16 *, u16 **);
-void sub_8113ABC(u16 *);
-bool8 sub_8113AE8(u16 *);
-bool8 sub_8113B44(u16 *);
-void sub_8113B88(void);
-void sub_8113B94(u16);
-void sub_8113BD8(void);
-u16 * sub_8113BF4(u16 *);
-u16 * sub_8113C20(u16 *, struct UnkStruct_203AE98 *);
-u16 * sub_8113C5C(u16 *, u16);
-u16 * sub_8113C8C(u16 *, struct UnkStruct_203AE98 *);
-u16 * sub_8113CC8(u16 *, struct UnkStruct_203AE98 *);
-u16 * sub_8113D08(u16 *, struct UnkStruct_203AE98 *);
-u16 * sub_8113D48(u16 *, struct UnkStruct_203AE98 *);
-u16 * sub_8113D94(u16 *, struct UnkStruct_203AE98 *);
-u16 * sub_8113F14(u16 *, const u16 *);
-const u16 * sub_8113F3C(const u16 *);
-u16 * sub_8113F80(u16 *, const u16 *);
-const u16 * sub_8113FBC(const u16 *);
-u16 * sub_8114174(u16 *, const u16 *);
-const u16 * sub_8114188(const u16 *);
-u16 * sub_81141D0(u16 *, const u16 *);
-const u16 * sub_81141E4(const u16 *);
-u16 * sub_811422C(u16 *, const u16 *);
-const u16 * sub_8114240(const u16 *);
-u16 * sub_8114288(u16 *, const u16 *);
-const u16 * sub_811429C(const u16 *);
-u16 * sub_8114310(u16 *, const u16 *);
-const u16 * sub_8114324(const u16 *);
-u16 * sub_8114380(u16 *, const u16 *);
-const u16 * sub_8114394(const u16 *);
-u16 * sub_81143F0(u16 *, const u16 *);
-const u16 * sub_811443C(const u16 *);
-u16 * sub_811445C(u16 *, const u16 *);
-const u16 * sub_811448C(const u16 *);
-u16 * sub_81144EC(u16 *, const u16 *);
-const u16 * sub_8114518(const u16 *);
-u16 * sub_8114578(u16 *, const u16 *);
-const u16 * sub_81145A4(const u16 *);
-u16 * sub_8114604(u16 *, const u16 *);
-const u16 * sub_811464C(const u16 *);
-u16 * sub_8114710(u16 *, const u16 *);
-const u16 * sub_8114724(const u16 *);
-u16 * sub_8114744(u16 *, const u16 *);
-const u16 * sub_8114758(const u16 *);
-u16 * sub_8114778(u16 *, const u16 *);
-const u16 * sub_81147A8(const u16 *);
-u16 * sub_8114808(u16 *, const u16 *);
-const u16 * sub_8114834(const u16 *);
-u16 * sub_811488C(u16 *, const u16 *);
-const u16 * sub_81148BC(const u16 *);
-u16 * sub_8114918(u16 *, const u16 *);
-const u16 * sub_8114944(const u16 *);
-u16 * sub_8114990(u16 *, const u16 *);
-const u16 * sub_81149D0(const u16 *);
-u16 * sub_8114A1C(u16 *, const u16 *);
-const u16 * sub_8114A4C(const u16 *);
-u16 * sub_8114AA0(u16 *, const u16 *);
-const u16 * sub_8114AC8(const u16 *);
-u16 * sub_8114B0C(u16 *, const u16 *);
-const u16 * sub_8114B34(const u16 *);
-u16 * sub_8114B78(u16 *, const u16 *);
-const u16 * sub_8114BA0(const u16 *);
-u16 * sub_8114BE4(u16 *, const u16 *);
-const u16 * sub_8114C0C(const u16 *);
-u16 * sub_8114C68(u16 *, const u16 *);
-const u16 * sub_8114C8C(const u16 *);
-u16 * sub_8114CC0(u16 *, const u16 *);
-const u16 * sub_8114CE4(const u16 *);
-u16 * sub_8114D4C(u16 *, const u16 *);
-const u16 * sub_8114D68(const u16 *);
-u16 * sub_8114DE8(u16 *, const u16 *);
-const u16 * sub_8114E68(const u16 *);
-bool8 sub_8114FBC(u16);
-u16 * sub_8114FF0(u16 *, const u16 *);
-const u16 * sub_811500C(const u16 *);
-u16 * sub_8115078(u16 *, const u16 *);
-const u16 * sub_81150CC(const u16 *);
-u16 * sub_81151C0(u16 *, const u16 *);
-const u16 * sub_81151DC(const u16 *);
-u16 * sub_8115280(u16 *, const u16 *);
-const u16 * sub_81152BC(const u16 *);
-bool8 sub_81153A8(u16, u16 *);
-bool8 sub_81153E4(u16, u16 *);
-u16 * sub_8115410(u16 *, const u16 *);
-const u16 * sub_8115460(const u16 *);
-u16 * sub_81154DC(u16 *, const u16 *);
-const u16 * sub_8115518(const u16 *);
-u16 * sub_81155A4(u16 *, const u16 *);
-const u16 * sub_81155E0(const u16 *);
-u16 * sub_81156D8(u16 *, const u16 *);
-const u16 * sub_8115700(const u16 *);
-u16 * sub_81157DC(u16 *, const u16 *);
-const u16 * sub_8115800(const u16 *);
+static EWRAM_DATA u16 gUnknown_203ADFC = 0;
+static EWRAM_DATA u8 gUnknown_203ADFE[3] = {0};
+static EWRAM_DATA u16 * gUnknown_203AE04 = NULL;
+static EWRAM_DATA u16 * gUnknown_203AE08 = NULL;
+static EWRAM_DATA u16 * gUnknown_203AE0C[32] = {NULL};
+static EWRAM_DATA void (* gUnknown_203AE8C)(void) = NULL;
+static EWRAM_DATA u16 *gUnknown_203AE90 = NULL;
+static EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0};
+static EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0};
+static EWRAM_DATA u16 gUnknown_203AF98 = 0;
+static EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}};
+static EWRAM_DATA u16 gUnknown_203B01A = 0;
+static EWRAM_DATA u16 gUnknown_203B01C = 0;
+static EWRAM_DATA u16 gUnknown_203B01E = 0;
+static EWRAM_DATA u8 sHelpMessageWindowId = 0;
+static EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0};
+static EWRAM_DATA struct UnkStruct_203B044 gUnknown_203B044 = {0};
+static EWRAM_DATA u8 gUnknown_203B048 = 0;
+static EWRAM_DATA u8 gUnknown_203B049 = 0;
+static EWRAM_DATA u8 gUnknown_203B04A = 0;
+static EWRAM_DATA u8 gUnknown_203B04B = 0;
+
+static void sub_8110A00(void);
+static void sub_8110A3C(void);
+static void sub_8110BB0(u8);
+static void sub_8110BE8(u8);
+static void sub_8110E3C(void);
+static void sub_8110D94(void);
+static void sub_8110E20(void);
+static void sub_8110D48(u8);
+static u8 sub_8110E68(struct UnkStruct_203AE98 *);
+static void sub_8110F90(u8);
+static void sub_8111150(u8);
+static void sub_8111368(void);
+static void sub_81115E8(void);
+static u16 sub_8111618(void);
+static u16 sub_811164C(void);
+static void sub_8111688(void);
+static void sub_811175C(u8, struct UnkStruct_203AE98 *);
+static void sub_81118F4(s8);
+static void sub_8111914(void);
+static void sub_8111984(void);
+static void sub_8111A34(u8);
+static void sub_8111AD8(void);
+static void sub_8111B80(void);
+static u8 sub_8111BD4(void);
+static void sub_8111D10(void);
+static void sub_8111D90(u8);
+static void sub_8111E20(void);
+static void sub_8111E64(s8);
+static void sub_8111E84(void);
+static bool8 sub_8111F60(void);
+static void sub_8111F8C(u8);
+static void sub_8111FCC(u8);
+static void sub_8112044(u8);
+static void sub_81120AC(u8);
+static bool8 sub_81121D8(u8);
+static void sub_811229C(void);
+static void sub_8112888(u8);
+static void sub_8112940(u8, struct UnkStruct_203AE98 *, u16);
+static bool8 sub_8112CEC(void);
+static bool8 sub_8112D1C(void);
+static void sub_8113078(struct Var4038Struct *);
+static void sub_81130BC(struct Var4038Struct *);
+static u8 sub_8113194(struct Var4038Struct *);
+static u16 sub_81132A0(struct Var4038Struct *);
+static void sub_81132E0(struct Var4038Struct *);
+static bool16 sub_811337C(struct Var4038Struct *);
+static void sub_8113390(struct Var4038Struct *);
+static void sub_8113414(struct LinkBattleRecords *, u8, u8);
+static void sub_81134CC(struct Var4038Struct *);
+static bool8 sub_8113508(struct Var4038Struct * );
+static void sub_8113524(struct Var4038Struct *);
+static bool8 sub_81136D4(void);
+static bool8 sub_8113778(u16, u16 *);
+static bool8 sub_81137E4(u16, u16 *);
+static u16 * sub_8113828(u16, u16 *);
+static bool8 sub_81138A0(u16, u16 *);
+static bool8 sub_8113954(u16, u16 *);
+static void sub_8113A1C(u16);
+static void sub_811381C(void);
+static bool8 sub_8113A44(u16, u16 *);
+static u16 * sub_8113A78(u16 *, u16 **);
+static void sub_8113ABC(u16 *);
+static bool8 sub_8113AE8(u16 *);
+static bool8 sub_8113B44(u16 *);
+static void sub_8113B88(void);
+static void sub_8113B94(u16);
+static void sub_8113BD8(void);
+static u16 * sub_8113BF4(u16 *);
+static u16 * sub_8113C20(u16 *, struct UnkStruct_203AE98 *);
+static u16 * sub_8113C5C(u16 *, u16);
+static u16 * sub_8113C8C(u16 *, struct UnkStruct_203AE98 *);
+static u16 * sub_8113CC8(u16 *, struct UnkStruct_203AE98 *);
+static u16 * sub_8113D08(u16 *, struct UnkStruct_203AE98 *);
+static u16 * sub_8113D48(u16 *, struct UnkStruct_203AE98 *);
+static u16 * sub_8113D94(u16 *, struct UnkStruct_203AE98 *);
+static u16 * sub_8113F14(u16 *, const u16 *);
+static const u16 * sub_8113F3C(const u16 *);
+static u16 * sub_8113F80(u16 *, const u16 *);
+static const u16 * sub_8113FBC(const u16 *);
+static u16 * sub_8114174(u16 *, const u16 *);
+static const u16 * sub_8114188(const u16 *);
+static u16 * sub_81141D0(u16 *, const u16 *);
+static const u16 * sub_81141E4(const u16 *);
+static u16 * sub_811422C(u16 *, const u16 *);
+static const u16 * sub_8114240(const u16 *);
+static u16 * sub_8114288(u16 *, const u16 *);
+static const u16 * sub_811429C(const u16 *);
+static u16 * sub_8114310(u16 *, const u16 *);
+static const u16 * sub_8114324(const u16 *);
+static u16 * sub_8114380(u16 *, const u16 *);
+static const u16 * sub_8114394(const u16 *);
+static u16 * sub_81143F0(u16 *, const u16 *);
+static const u16 * sub_811443C(const u16 *);
+static u16 * sub_811445C(u16 *, const u16 *);
+static const u16 * sub_811448C(const u16 *);
+static u16 * sub_81144EC(u16 *, const u16 *);
+static const u16 * sub_8114518(const u16 *);
+static u16 * sub_8114578(u16 *, const u16 *);
+static const u16 * sub_81145A4(const u16 *);
+static u16 * sub_8114604(u16 *, const u16 *);
+static const u16 * sub_811464C(const u16 *);
+static u16 * sub_8114710(u16 *, const u16 *);
+static const u16 * sub_8114724(const u16 *);
+static u16 * sub_8114744(u16 *, const u16 *);
+static const u16 * sub_8114758(const u16 *);
+static u16 * sub_8114778(u16 *, const u16 *);
+static const u16 * sub_81147A8(const u16 *);
+static u16 * sub_8114808(u16 *, const u16 *);
+static const u16 * sub_8114834(const u16 *);
+static u16 * sub_811488C(u16 *, const u16 *);
+static const u16 * sub_81148BC(const u16 *);
+static u16 * sub_8114918(u16 *, const u16 *);
+static const u16 * sub_8114944(const u16 *);
+static u16 * sub_8114990(u16 *, const u16 *);
+static const u16 * sub_81149D0(const u16 *);
+static u16 * sub_8114A1C(u16 *, const u16 *);
+static const u16 * sub_8114A4C(const u16 *);
+static u16 * sub_8114AA0(u16 *, const u16 *);
+static const u16 * sub_8114AC8(const u16 *);
+static u16 * sub_8114B0C(u16 *, const u16 *);
+static const u16 * sub_8114B34(const u16 *);
+static u16 * sub_8114B78(u16 *, const u16 *);
+static const u16 * sub_8114BA0(const u16 *);
+static u16 * sub_8114BE4(u16 *, const u16 *);
+static const u16 * sub_8114C0C(const u16 *);
+static u16 * sub_8114C68(u16 *, const u16 *);
+static const u16 * sub_8114C8C(const u16 *);
+static u16 * sub_8114CC0(u16 *, const u16 *);
+static const u16 * sub_8114CE4(const u16 *);
+static u16 * sub_8114D4C(u16 *, const u16 *);
+static const u16 * sub_8114D68(const u16 *);
+static u16 * sub_8114DE8(u16 *, const u16 *);
+static const u16 * sub_8114E68(const u16 *);
+static bool8 sub_8114FBC(u16);
+static u16 * sub_8114FF0(u16 *, const u16 *);
+static const u16 * sub_811500C(const u16 *);
+static u16 * sub_8115078(u16 *, const u16 *);
+static const u16 * sub_81150CC(const u16 *);
+static u16 * sub_81151C0(u16 *, const u16 *);
+static const u16 * sub_81151DC(const u16 *);
+static u16 * sub_8115280(u16 *, const u16 *);
+static const u16 * sub_81152BC(const u16 *);
+static bool8 sub_81153A8(u16, u16 *);
+static bool8 sub_81153E4(u16, u16 *);
+static u16 * sub_8115410(u16 *, const u16 *);
+static const u16 * sub_8115460(const u16 *);
+static u16 * sub_81154DC(u16 *, const u16 *);
+static const u16 * sub_8115518(const u16 *);
+static u16 * sub_81155A4(u16 *, const u16 *);
+static const u16 * sub_81155E0(const u16 *);
+static u16 * sub_81156D8(u16 *, const u16 *);
+static const u16 * sub_8115700(const u16 *);
+static u16 * sub_81157DC(u16 *, const u16 *);
+static const u16 * sub_8115800(const u16 *);
void sub_8115834(u8 *);
extern const u8 gUnknown_841A155[];
@@ -404,17 +401,17 @@ extern const u8 gUnknown_841B277[];
extern const u8 gUnknown_8418C1B[];
-const struct WindowTemplate gUnknown_845661C[3] = {
+static const struct WindowTemplate gUnknown_845661C[3] = {
{ 0, 0, 0, 30, 2, 15, 0x0e9 },
{ 0, 0, 18, 30, 2, 15, 0x0ad },
{ 0, 0, 14, 30, 6, 15, 0x14c }
};
-const u8 gUnknown_8456634[3] = {15, 1, 12};
+static const u8 gUnknown_8456634[3] = {15, 1, 12};
-const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin");
+static const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin");
-const u8 gUnknown_8456698[] = {17, 10, 3};
+static const u8 gUnknown_8456698[] = {17, 10, 3};
void sub_8110840(void * oldPointer)
{
@@ -493,7 +490,7 @@ void sub_81109CC(u8 a0)
gUnknown_203AE8C = sub_8110A3C;
}
-void sub_8110A00(void)
+static void sub_8110A00(void)
{
if (sub_8110E68(gUnknown_203AE98) != 1)
{
@@ -504,7 +501,7 @@ void sub_8110A00(void)
}
}
-void sub_8110A3C(void)
+static void sub_8110A3C(void)
{
if (gUnknown_203AE94.unk_0_0 == 2)
gUnknown_203AE94.unk_0_0 = 0;
@@ -556,7 +553,7 @@ void sub_8110AEC(u16 a0)
sub_81109CC(1);
}
-void sub_8110BB0(u8 a0)
+static void sub_8110BB0(u8 a0)
{
struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0];
questLog->unk_001 = gSaveBlock1Ptr->location.mapGroup;
@@ -567,7 +564,7 @@ void sub_8110BB0(u8 a0)
}
#ifdef NONMATCHING
-void sub_8110BE8(u8 a0)
+static void sub_8110BE8(u8 a0)
{
struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0];
u16 i; // r6
@@ -602,7 +599,7 @@ void sub_8110BE8(u8 a0)
}
#else
NAKED
-void sub_8110BE8(u8 a0)
+static void sub_8110BE8(u8 a0)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
@@ -767,7 +764,7 @@ void sub_8110BE8(u8 a0)
}
#endif // NONMATCHING
-void sub_8110D48(u8 a0)
+static void sub_8110D48(u8 a0)
{
struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0];
@@ -775,7 +772,7 @@ void sub_8110D48(u8 a0)
CpuCopy16(gSaveBlock1Ptr->vars, questLog->vars, VARS_COUNT * sizeof(u16));
}
-void sub_8110D94(void)
+static void sub_8110D94(void)
{
u16 i, j;
u16 sp0[4];
@@ -794,19 +791,19 @@ void sub_8110D94(void)
}
}
-void sub_8110E20(void)
+static void sub_8110E20(void)
{
VarSet(VAR_0x40AE, gSaveBlock1Ptr->mapDataId);
}
-void sub_8110E3C(void)
+static void sub_8110E3C(void)
{
sub_8113BF4(gUnknown_203AE08);
if (++gUnknown_203ADF8 > 3)
gUnknown_203ADF8 = 0;
}
-bool8 sub_8110E68(struct UnkStruct_203AE98 * a0)
+static bool8 sub_8110E68(struct UnkStruct_203AE98 * a0)
{
u16 i;
@@ -865,7 +862,7 @@ void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId)
}
}
-void sub_8110F90(u8 unused)
+static void sub_8110F90(u8 unused)
{
gSaveBlock1Ptr->location.mapGroup = 3;
gSaveBlock1Ptr->location.mapNum = 19;
@@ -937,7 +934,7 @@ void sub_8111134(void)
CopyWindowToVram(gUnknown_203ADFE[1], 1);
}
-void sub_8111150(u8 a0)
+static void sub_8111150(u8 a0)
{
struct QuestLog *questLog = &gSaveBlock1Ptr->questLog[a0];
u16 i;
@@ -982,7 +979,7 @@ void sub_8111274(u8 a0, u8 a1)
}
}
-void sub_8111368(void)
+static void sub_8111368(void)
{
gUnknown_203ADFA = 2;
sub_806E6FC();
@@ -1091,14 +1088,14 @@ void sub_8111438(void)
Free(r9);
}
-void sub_81115E8(void)
+static void sub_81115E8(void)
{
u16 r4 = sub_8111618();
u16 r1 = sub_811164C();
VarSet(VAR_0x4027, (r4 << 12) + r1);
}
-u16 sub_8111618(void)
+static u16 sub_8111618(void)
{
u16 count = 0;
u16 i;
@@ -1112,7 +1109,7 @@ u16 sub_8111618(void)
return count;
}
-u16 sub_811164C(void)
+static u16 sub_811164C(void)
{
u16 count = 0;
u16 i, j;
@@ -1129,7 +1126,7 @@ u16 sub_811164C(void)
return count;
}
-void sub_8111688(void)
+static void sub_8111688(void)
{
u16 i, j;
u16 sp0[4];
@@ -1161,7 +1158,7 @@ void sub_8111708(void)
}
}
-void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1)
+static void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1)
{
u16 i;
u16 *r4;
@@ -1208,13 +1205,13 @@ void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1)
}
}
-void sub_81118F4(s8 a0)
+static void sub_81118F4(s8 a0)
{
fade_screen(1, a0);
gUnknown_203AE8C = sub_8111914;
}
-void sub_8111914(void)
+static void sub_8111914(void)
{
if (!gPaletteFade.active)
{
@@ -1232,7 +1229,7 @@ void sub_8111914(void)
}
}
-void sub_8111984(void)
+static void sub_8111984(void)
{
sub_806E6FC();
Save_ResetSaveCounters();
@@ -1269,7 +1266,7 @@ bool8 sub_81119D4(void (*a0)(void))
return FALSE;
}
-void sub_8111A34(u8 taskId)
+static void sub_8111A34(u8 taskId)
{
void (*routine)(void);
s16 * data = gTasks[taskId].data;
@@ -1298,7 +1295,7 @@ void sub_8111A34(u8 taskId)
}
}
-void sub_8111AD8(void)
+static void sub_8111AD8(void)
{
if (gUnknown_203AE94.unk_0_0 == 1)
{
@@ -1327,7 +1324,7 @@ void sub_8111AD8(void)
}
}
-void sub_8111B80(void)
+static void sub_8111B80(void)
{
if (gUnknown_203AE94.unk_0_0 == 0)
{
@@ -1344,7 +1341,7 @@ void sub_8111B80(void)
sub_8112888(1);
}
-u8 sub_8111BD4(void)
+static u8 sub_8111BD4(void)
{
u16 i;
u16 count = 0;
@@ -1405,7 +1402,7 @@ void sub_8111CF0(void)
sub_8111070(sNumScenes);
}
-void sub_8111D10(void)
+static void sub_8111D10(void)
{
u16 i;
u8 count = 0;
@@ -1422,7 +1419,7 @@ void sub_8111D10(void)
ScheduleBgCopyTilemapToVram(0);
}
-void sub_8111D90(u8 a0)
+static void sub_8111D90(u8 a0)
{
const u16 * src = gUnknown_8456638;
u16 * buffer = Alloc(0x1680);
@@ -1459,7 +1456,7 @@ void sub_8111D90(u8 a0)
}
}
-void sub_8111E20(void)
+static void sub_8111E20(void)
{
ClearWindowTilemap(gUnknown_203ADFE[2]);
FillWindowPixelRect(gUnknown_203ADFE[2], 15, 0, 0, 0xf0, 0x30);
@@ -1468,13 +1465,13 @@ void sub_8111E20(void)
CopyWindowToVram(gUnknown_203ADFE[1], 1);
}
-void sub_8111E64(s8 a0)
+static void sub_8111E64(s8 a0)
{
fade_screen(1, a0);
gUnknown_203AE8C = sub_8111E84;
}
-void sub_8111E84(void)
+static void sub_8111E84(void)
{
if (!gPaletteFade.active)
{
@@ -1501,7 +1498,7 @@ void sub_8111F38(u16 a0, u16 a1)
CpuSet(gPlttBufferUnfaded + a0, gUnknown_203AE90 + a0, a1);
}
-bool8 sub_8111F60(void)
+static bool8 sub_8111F60(void)
{
LoadPalette(stdpal_get(4), 0xF0, 0x20);
sub_8111070(0);
@@ -1510,7 +1507,7 @@ bool8 sub_8111F60(void)
return TRUE;
}
-void sub_8111F8C(u8 taskId)
+static void sub_8111F8C(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -1524,7 +1521,7 @@ void sub_8111F8C(u8 taskId)
}
}
-void sub_8111FCC(u8 taskId)
+static void sub_8111FCC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -1544,7 +1541,7 @@ void sub_8111FCC(u8 taskId)
}
}
-void sub_8112044(u8 taskId)
+static void sub_8112044(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -1559,7 +1556,7 @@ void sub_8112044(u8 taskId)
task->data[0]++;
}
-void sub_81120AC(u8 taskId)
+static void sub_81120AC(u8 taskId)
{
s16 * data = gTasks[taskId].data;
u8 i;
@@ -1609,7 +1606,7 @@ void sub_81120AC(u8 taskId)
}
}
-bool8 sub_81121D8(u8 taskId)
+static bool8 sub_81121D8(u8 taskId)
{
s16 * data = gTasks[taskId].data;
@@ -1626,7 +1623,7 @@ bool8 sub_81121D8(u8 taskId)
return FALSE;
}
-void sub_811229C(void)
+static void sub_811229C(void)
{
u16 * buffer = Alloc(0x400);
CpuCopy16(gUnknown_203AE90, buffer, 0x400);
@@ -1833,7 +1830,7 @@ void sub_81127F8(struct UnkStruct_3005E90 * a0)
}
}
-void sub_8112888(u8 a0)
+static void sub_8112888(u8 a0)
{
switch (a0)
{
@@ -1875,7 +1872,7 @@ void sub_81128BC(u8 a0)
}
}
-void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2)
+static void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2)
{
s32 i;
@@ -2218,21 +2215,21 @@ u8 sub_8112CAC(void)
}
}
-bool8 sub_8112CEC(void)
+static bool8 sub_8112CEC(void)
{
if (gUnknown_203AF98 >= gUnknown_3005E8C || ScriptContext2_IsEnabled() == TRUE)
return TRUE;
return FALSE;
}
-bool8 sub_8112D1C(void)
+static bool8 sub_8112D1C(void)
{
if (gUnknown_203AF98 >= gUnknown_3005E8C)
return TRUE;
return FALSE;
}
-const struct UnkStruct_300201C gUnknown_84566A4 = {
+static const struct UnkStruct_300201C gUnknown_84566A4 = {
0,
FALSE,
0x7FFF
@@ -2294,37 +2291,37 @@ void sub_8112E3C(u8 a0, struct UnkStruct_300201C * a1, u16 a2)
const u16 gUnknown_84566A8[] = INCBIN_U16("data/graphics/unknown_84566a8.bin");
-const struct WindowTemplate gUnknown_8456928 = {
+static const struct WindowTemplate sHelpMessageWindowTemplate = {
0x00, 0, 15, 30, 5, 15, 0x008F
};
void MapNamePopupWindowIdSetDummy(void)
{
- gUnknown_203B020 = 0xFF;
+ sHelpMessageWindowId = 0xFF;
}
-u8 sub_8112EB4(void)
+u8 CreateHelpMessageWindow(void)
{
- if (gUnknown_203B020 == 0xFF)
+ if (sHelpMessageWindowId == 0xFF)
{
- gUnknown_203B020 = AddWindow(&gUnknown_8456928);
- PutWindowTilemap(gUnknown_203B020);
+ sHelpMessageWindowId = AddWindow(&sHelpMessageWindowTemplate);
+ PutWindowTilemap(sHelpMessageWindowId);
}
- return gUnknown_203B020;
+ return sHelpMessageWindowId;
}
-void sub_8112EDC(u8 a0)
+void DestroyHelpMessageWindow(u8 a0)
{
- if (gUnknown_203B020 != 0xFF)
+ if (sHelpMessageWindowId != 0xFF)
{
- FillWindowPixelBuffer(gUnknown_203B020, 0x00);
- ClearWindowTilemap(gUnknown_203B020);
+ FillWindowPixelBuffer(sHelpMessageWindowId, PIXEL_FILL(0));
+ ClearWindowTilemap(sHelpMessageWindowId);
if (a0)
- CopyWindowToVram(gUnknown_203B020, a0);
+ CopyWindowToVram(sHelpMessageWindowId, a0);
- RemoveWindow(gUnknown_203B020);
- gUnknown_203B020 = 0xFF;
+ RemoveWindow(sHelpMessageWindowId);
+ sHelpMessageWindowId = 0xFF;
}
}
@@ -2460,24 +2457,24 @@ void sub_8112F18(u8 a0)
void sub_8112FD0(void)
{
- sub_8112F18(gUnknown_203B020);
+ sub_8112F18(sHelpMessageWindowId);
}
-const u8 gUnknown_8456930[3] = {
+static const u8 gUnknown_8456930[3] = {
0, 10, 2
};
void sub_8112FE4(const u8 * a0)
{
- AddTextPrinterParameterized4(gUnknown_203B020, 0x02, 2, 5, 1, 1, gUnknown_8456930, -1, a0);
+ AddTextPrinterParameterized4(sHelpMessageWindowId, 0x02, 2, 5, 1, 1, gUnknown_8456930, -1, a0);
}
-void sub_8113018(const u8 * text, u8 mode)
+void PrintTextOnHelpMessageWindow(const u8 * text, u8 mode)
{
sub_8112FD0();
sub_8112FE4(text);
if (mode)
- CopyWindowToVram(gUnknown_203B020, mode);
+ CopyWindowToVram(sHelpMessageWindowId, mode);
}
void sub_8113044(void)
@@ -2491,7 +2488,7 @@ void sub_8113064(void)
sub_8113078(VAR_0x4038_STRUCT);
}
-void sub_8113078(struct Var4038Struct * varPtr)
+static void sub_8113078(struct Var4038Struct * varPtr)
{
if (sub_8113508(varPtr))
{
@@ -2505,7 +2502,7 @@ void sub_81130A8(void)
sub_81130BC(VAR_0x4038_STRUCT);
}
-void sub_81130BC(struct Var4038Struct * varPtr)
+static void sub_81130BC(struct Var4038Struct * varPtr)
{
if (!varPtr->unk_0_7)
{
@@ -2543,11 +2540,11 @@ u8 sub_8113114(struct Var4038Struct * a0, u8 a1)
return a0->unk_0_0;
}
-const u8 gUnknown_8456938[] = {
+static const u8 gUnknown_8456938[] = {
1, 3, 5, 0, 7, 6, 4, 2
};
-u8 sub_8113194(struct Var4038Struct * a0)
+static u8 sub_8113194(struct Var4038Struct * a0)
{
u8 i;
u8 retval = 0;
@@ -2568,7 +2565,7 @@ u8 sub_8113194(struct Var4038Struct * a0)
return gUnknown_8456938[retval];
}
-const u8 gUnknown_8456940[] = {
+static const u8 gUnknown_8456940[] = {
5, 6, 3, 7, 4, 1, 0, 2
};
@@ -2602,7 +2599,7 @@ u16 sub_8113288(void)
return sub_81132A0(VAR_0x4038_STRUCT);
}
-u16 sub_81132A0(struct Var4038Struct * a0)
+static u16 sub_81132A0(struct Var4038Struct * a0)
{
u8 count = 0;
u8 i;
@@ -2621,7 +2618,7 @@ void sub_81132CC(void)
sub_81132E0(VAR_0x4038_STRUCT);
}
-void sub_81132E0(struct Var4038Struct * a0)
+static void sub_81132E0(struct Var4038Struct * a0)
{
u8 i = 0;
u16 var_4039;
@@ -2653,12 +2650,12 @@ bool16 sub_8113364(void)
return sub_811337C(VAR_0x4038_STRUCT);
}
-bool16 sub_811337C(struct Var4038Struct * a0)
+static bool16 sub_811337C(struct Var4038Struct * a0)
{
return (a0->unk_1 >> gSpecialVar_0x8004) & 1;
}
-void sub_8113390(struct Var4038Struct * a0)
+static void sub_8113390(struct Var4038Struct * a0)
{
a0->unk_1 |= 1;
a0->unk_1 |= 2;
@@ -2697,7 +2694,7 @@ void sub_81133A4(void)
sub_8113414(&gSaveBlock2Ptr->linkBattleRecords, r3, r2);
}
-void sub_8113414(struct LinkBattleRecords * a0, u8 a1, u8 a2)
+static void sub_8113414(struct LinkBattleRecords * a0, u8 a1, u8 a2)
{
u8 * str;
const u8 * src = a0->entries[a1].name;
@@ -2742,7 +2739,7 @@ void sub_81134B8(void)
sub_81134CC(VAR_0x4038_STRUCT);
}
-void sub_81134CC(struct Var4038Struct * a0)
+static void sub_81134CC(struct Var4038Struct * a0)
{
if (VarGet(VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB) == 2)
{
@@ -2754,7 +2751,7 @@ void sub_81134CC(struct Var4038Struct * a0)
}
}
-bool8 sub_8113508(struct Var4038Struct * a0)
+static bool8 sub_8113508(struct Var4038Struct * a0)
{
return a0->unk_0_7;
}
@@ -2764,7 +2761,7 @@ void sub_8113510(void)
sub_8113524(VAR_0x4038_STRUCT);
}
-void sub_8113524(struct Var4038Struct * a0)
+static void sub_8113524(struct Var4038Struct * a0)
{
a0->unk_0_7 = TRUE;
}
@@ -3092,7 +3089,7 @@ void sub_8113550(u16 a0, const u16 * a1)
}
#endif // NONMATCHING
-bool8 sub_81136D4(void)
+static bool8 sub_81136D4(void)
{
if (gSaveBlock1Ptr->location.mapGroup == 2 && (gSaveBlock1Ptr->location.mapNum == 1 || gSaveBlock1Ptr->location.mapNum == 2 || gSaveBlock1Ptr->location.mapNum == 3 || gSaveBlock1Ptr->location.mapNum == 4 || gSaveBlock1Ptr->location.mapNum == 5 || gSaveBlock1Ptr->location.mapNum == 6 || gSaveBlock1Ptr->location.mapNum == 7 || gSaveBlock1Ptr->location.mapNum == 8 || gSaveBlock1Ptr->location.mapNum == 9 || gSaveBlock1Ptr->location.mapNum == 10 || gSaveBlock1Ptr->location.mapNum == 11))
return TRUE;
@@ -3123,7 +3120,7 @@ bool8 sub_8113748(void)
return FALSE;
}
-bool8 sub_8113778(u16 a0, u16 * a1)
+static bool8 sub_8113778(u16 a0, u16 * a1)
{
if (a0 == 36 || a0 == 11)
return TRUE;
@@ -3143,7 +3140,7 @@ bool8 sub_8113778(u16 a0, u16 * a1)
return FALSE;
}
-bool8 sub_81137E4(u16 a0, u16 * a1)
+static bool8 sub_81137E4(u16 a0, u16 * a1)
{
if (a0 == 34)
{
@@ -3158,12 +3155,12 @@ bool8 sub_81137E4(u16 a0, u16 * a1)
return FALSE;
}
-void sub_811381C(void)
+static void sub_811381C(void)
{
gUnknown_203B048 = 0;
}
-u16 * sub_8113828(u16 a0, u16 * a1)
+static u16 * sub_8113828(u16 a0, u16 * a1)
{
if (sub_8113778(a0, a1) == TRUE)
return NULL;
@@ -3182,7 +3179,7 @@ u16 * sub_8113828(u16 a0, u16 * a1)
return sQuestLogStorageCBs[a0](gUnknown_203AE08, a1);
}
-bool8 sub_81138A0(u16 a0, u16 * a1)
+static bool8 sub_81138A0(u16 a0, u16 * a1)
{
if (a0 < 12 || a0 > 19)
return FALSE;
@@ -3218,7 +3215,7 @@ void sub_811390C(void)
}
}
-bool8 sub_8113954(u16 a0, u16 * a1)
+static bool8 sub_8113954(u16 a0, u16 * a1)
{
if (a0 != 34 && a0 != 30 && a0 != 32 && a0 != 33)
return FALSE;
@@ -3250,13 +3247,13 @@ void sub_81139BC(void)
}
}
-void sub_8113A1C(u16 a0)
+static void sub_8113A1C(u16 a0)
{
gUnknown_203AE08 = sub_8113C5C(gUnknown_203AE08, a0);
gUnknown_203AF98++;
}
-bool8 sub_8113A44(u16 a0, u16 *a1)
+static bool8 sub_8113A44(u16 a0, u16 *a1)
{
if (a0 != 31)
return FALSE;
@@ -3316,7 +3313,7 @@ static const u16 * (*const sQuestLogScriptParsingCBs[])(const u16 *) = {
sub_8115800
};
-const u8 gUnknown_8456AA0[] = {
+static const u8 gUnknown_8456AA0[] = {
0x08,
0x08,
0x08,
@@ -3362,7 +3359,7 @@ const u8 gUnknown_8456AA0[] = {
0x06
};
-u16 * sub_8113A78(u16 * a0, u16 **a1)
+static u16 * sub_8113A78(u16 * a0, u16 **a1)
{
u16 r2 = a0[0] & 0xfff;
u16 r4 = a0[0] >> 12;
@@ -3374,7 +3371,7 @@ u16 * sub_8113A78(u16 * a0, u16 **a1)
return gUnknown_8456AA0[r2] + (gUnknown_8456AA0[r2] - 4) * r4 + (void *)a0;
}
-void sub_8113ABC(u16 * a0)
+static void sub_8113ABC(u16 * a0)
{
u8 * r2 = (u8 *)(a0 + 2);
if ((a0[0] & 0xFFF) != 35)
@@ -3384,7 +3381,7 @@ void sub_8113ABC(u16 * a0)
}
#ifdef NONMATCHING
-bool8 sub_8113AE8(u16 * a0)
+static bool8 sub_8113AE8(u16 * a0)
{
if (a0 == NULL || a0[1] > gUnknown_203AF98)
return FALSE;
@@ -3398,7 +3395,7 @@ bool8 sub_8113AE8(u16 * a0)
}
#else
NAKED
-bool8 sub_8113AE8(u16 * a0)
+static bool8 sub_8113AE8(u16 * a0)
{
asm_unified("\tpush {r4,lr}\n"
"\tadds r4, r0, 0\n"
@@ -3449,7 +3446,7 @@ bool8 sub_8113AE8(u16 * a0)
}
#endif
-bool8 sub_8113B44(u16 * a0)
+static bool8 sub_8113B44(u16 * a0)
{
if (gUnknown_203B044.unk_2 == 0)
return FALSE;
@@ -3461,12 +3458,12 @@ bool8 sub_8113B44(u16 * a0)
return TRUE;
}
-void sub_8113B88(void)
+static void sub_8113B88(void)
{
gUnknown_203B044 = (struct UnkStruct_203B044){};
}
-void sub_8113B94(u16 a0)
+static void sub_8113B94(u16 a0)
{
if (gUnknown_203B044.unk_0 != (u8)a0 || gUnknown_203B044.unk_2 != gUnknown_203AF98)
{
@@ -3478,14 +3475,14 @@ void sub_8113B94(u16 a0)
gUnknown_203B044.unk_1++;
}
-void sub_8113BD8(void)
+static void sub_8113BD8(void)
{
gUnknown_203B049 = 0;
gUnknown_203B04A = 0;
gUnknown_203B04B = 0;
}
-u16 * sub_8113BF4(u16 * a0)
+static u16 * sub_8113BF4(u16 * a0)
{
if (!sub_8110988(a0, gUnknown_8456AA0[39]))
return NULL;
@@ -3493,7 +3490,7 @@ u16 * sub_8113BF4(u16 * a0)
return a0 + 1;
}
-u16 * sub_8113C20(u16 * a0, struct UnkStruct_203AE98 * a1)
+static u16 * sub_8113C20(u16 * a0, struct UnkStruct_203AE98 * a1)
{
if (!sub_8110988(a0, gUnknown_8456AA0[39]))
return NULL;
@@ -3506,7 +3503,7 @@ u16 * sub_8113C20(u16 * a0, struct UnkStruct_203AE98 * a1)
return a0 + 1;
}
-u16 * sub_8113C5C(u16 * a0, u16 a1)
+static u16 * sub_8113C5C(u16 * a0, u16 a1)
{
if (!sub_8110988(a0, gUnknown_8456AA0[41]))
return NULL;
@@ -3515,7 +3512,7 @@ u16 * sub_8113C5C(u16 * a0, u16 a1)
return a0 + 2;
}
-u16 * sub_8113C8C(u16 * a0, struct UnkStruct_203AE98 * a1)
+static u16 * sub_8113C8C(u16 * a0, struct UnkStruct_203AE98 * a1)
{
if (!sub_8110988(a0, gUnknown_8456AA0[41]))
return NULL;
@@ -3528,7 +3525,7 @@ u16 * sub_8113C8C(u16 * a0, struct UnkStruct_203AE98 * a1)
return a0 + 2;
}
-u16 * sub_8113CC8(u16 * a0, struct UnkStruct_203AE98 * a1)
+static u16 * sub_8113CC8(u16 * a0, struct UnkStruct_203AE98 * a1)
{
u8 * r6 = (u8 *)a0 + 4;
@@ -3543,7 +3540,7 @@ u16 * sub_8113CC8(u16 * a0, struct UnkStruct_203AE98 * a1)
return (u16 *)(r6 + 4);
}
-u16 * sub_8113D08(u16 * a0, struct UnkStruct_203AE98 * a1)
+static u16 * sub_8113D08(u16 * a0, struct UnkStruct_203AE98 * a1)
{
u8 * r6 = (u8 *)a0 + 4;
@@ -3558,7 +3555,7 @@ u16 * sub_8113D08(u16 * a0, struct UnkStruct_203AE98 * a1)
return (u16 *)(r6 + 4);
}
-u16 * sub_8113D48(u16 * a0, struct UnkStruct_203AE98 * a1)
+static u16 * sub_8113D48(u16 * a0, struct UnkStruct_203AE98 * a1)
{
u16 * r4 = a0;
u8 * r6 = (u8 *)a0 + 4;
@@ -3577,7 +3574,7 @@ u16 * sub_8113D48(u16 * a0, struct UnkStruct_203AE98 * a1)
return (u16 *)(r6 + 4);
}
-u16 * sub_8113D94(u16 * a0, struct UnkStruct_203AE98 * a1)
+static u16 * sub_8113D94(u16 * a0, struct UnkStruct_203AE98 * a1)
{
u16 * r5 = a0;
u8 * r6 = (u8 *)a0 + 4;
@@ -3636,7 +3633,7 @@ u16 * sub_8113DE0(u16 a0, u16 * a1)
return r5;
}
-const u16 * sub_8113E88(u16 a0, const u16 * a1)
+static const u16 * sub_8113E88(u16 a0, const u16 * a1)
{
a1 = (const void *)a1 + (gUnknown_203B044.unk_2 * (gUnknown_8456AA0[a0] - 4) + 4);
return a1;
@@ -3663,7 +3660,7 @@ void QuestLog_AutoGetSpeciesName(u16 a0, u8 * a1, u8 a2)
}
}
-u16 * sub_8113F14(u16 * a0, const u16 * a1)
+static u16 * sub_8113F14(u16 * a0, const u16 * a1)
{
u16 * r2 = sub_8113DE0(3, a0);
if (r2 == NULL)
@@ -3674,7 +3671,7 @@ u16 * sub_8113F14(u16 * a0, const u16 * a1)
return r2 + 2;
}
-const u16 * sub_8113F3C(const u16 * a0)
+static const u16 * sub_8113F3C(const u16 * a0)
{
const u16 * r4 = sub_8113E88(3, a0);
QuestLog_AutoGetSpeciesName(r4[0], gStringVar1, 0);
@@ -3684,7 +3681,7 @@ const u16 * sub_8113F3C(const u16 * a0)
return r4;
}
-u16 * sub_8113F80(u16 * a0, const u16 * a1)
+static u16 * sub_8113F80(u16 * a0, const u16 * a1)
{
u16 * r2 = sub_8113DE0(4, a0);
if (r2 == NULL)
@@ -3700,7 +3697,7 @@ u16 * sub_8113F80(u16 * a0, const u16 * a1)
return r2 + 3;
}
-const u16 * sub_8113FBC(const u16 * a0)
+static const u16 * sub_8113FBC(const u16 * a0)
{
const u16 * r5 = sub_8113E88(4, a0);
@@ -3763,12 +3760,12 @@ u16 * sub_811414C(u16 a0, u16 * a1, const u16 * a2)
return r1 + 2;
}
-u16 * sub_8114174(u16 * a0, const u16 * a1)
+static u16 * sub_8114174(u16 * a0, const u16 * a1)
{
return sub_811414C(5, a0, a1);
}
-const u16 * sub_8114188(const u16 * a0)
+static const u16 * sub_8114188(const u16 * a0)
{
const u16 * r4 = sub_8113E88(5, a0);
QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0);
@@ -3778,12 +3775,12 @@ const u16 * sub_8114188(const u16 * a0)
return r4;
}
-u16 * sub_81141D0(u16 * a0, const u16 * a1)
+static u16 * sub_81141D0(u16 * a0, const u16 * a1)
{
return sub_811414C(6, a0, a1);
}
-const u16 * sub_81141E4(const u16 * a0)
+static const u16 * sub_81141E4(const u16 * a0)
{
const u16 * r4 = sub_8113E88(6, a0);
@@ -3794,12 +3791,12 @@ const u16 * sub_81141E4(const u16 * a0)
return r4;
}
-u16 * sub_811422C(u16 * a0, const u16 * a1)
+static u16 * sub_811422C(u16 * a0, const u16 * a1)
{
return sub_811414C(7, a0, a1);
}
-const u16 * sub_8114240(const u16 * a0)
+static const u16 * sub_8114240(const u16 * a0)
{
const u16 * r4 = sub_8113E88(7, a0);
@@ -3810,12 +3807,12 @@ const u16 * sub_8114240(const u16 * a0)
return r4;
}
-u16 * sub_8114288(u16 * a0, const u16 * a1)
+static u16 * sub_8114288(u16 * a0, const u16 * a1)
{
return sub_811414C(8, a0, a1);
}
-const u16 * sub_811429C(const u16 * a0)
+static const u16 * sub_811429C(const u16 * a0)
{
const u16 * r4 = sub_8113E88(8, a0);
@@ -3838,12 +3835,12 @@ u16 * sub_81142E4(u16 a0, u16 * a1, const u16 * a2)
return r1 + 3;
}
-u16 * sub_8114310(u16 * a0, const u16 * a1)
+static u16 * sub_8114310(u16 * a0, const u16 * a1)
{
return sub_81142E4(9, a0, a1);
}
-const u16 * sub_8114324(const u16 * a0)
+static const u16 * sub_8114324(const u16 * a0)
{
const u16 * r4 = sub_8113E88(9, a0);
QuestLog_AutoGetSpeciesName(r4[2], gStringVar1, 0);
@@ -3854,12 +3851,12 @@ const u16 * sub_8114324(const u16 * a0)
return r4;
}
-u16 * sub_8114380(u16 * a0, const u16 * a1)
+static u16 * sub_8114380(u16 * a0, const u16 * a1)
{
return sub_81142E4(10, a0, a1);
}
-const u16 * sub_8114394(const u16 * a0)
+static const u16 * sub_8114394(const u16 * a0)
{
const u16 * r4 = sub_8113E88(10, a0);
QuestLog_AutoGetSpeciesName(r4[2], gStringVar2, 0);
@@ -3870,7 +3867,7 @@ const u16 * sub_8114394(const u16 * a0)
return r4;
}
-u16 * sub_81143F0(u16 * a0, const u16 * a1)
+static u16 * sub_81143F0(u16 * a0, const u16 * a1)
{
u16 * r4 = a0;
if (gUnknown_203B044.unk_0 == 11 && gUnknown_203B044.unk_1 != 0)
@@ -3884,14 +3881,14 @@ u16 * sub_81143F0(u16 * a0, const u16 * a1)
return r4 + 2;
}
-const u16 * sub_811443C(const u16 * a0)
+static const u16 * sub_811443C(const u16 * a0)
{
StringExpandPlaceholders(gStringVar4, gUnknown_841A2B0);
a0 += 2;
return a0;
}
-u16 * sub_811445C(u16 * a0, const u16 * a1)
+static u16 * sub_811445C(u16 * a0, const u16 * a1)
{
u16 * r4 = a0 + 4;
@@ -3905,7 +3902,7 @@ u16 * sub_811445C(u16 * a0, const u16 * a1)
return r4;
}
-const u16 * sub_811448C(const u16 * a0)
+static const u16 * sub_811448C(const u16 * a0)
{
const u16 * r6 = a0 + 4;
@@ -3920,25 +3917,25 @@ const u16 * sub_811448C(const u16 * a0)
return r6;
}
-const u8 *const gUnknown_8456ACC[] = {
+static const u8 *const gUnknown_8456ACC[] = {
gUnknown_841A74E,
gUnknown_841A756,
gUnknown_841A762
};
-const u8 *const gUnknown_8456AD8[] = {
+static const u8 *const gUnknown_8456AD8[] = {
gUnknown_841AF98,
gUnknown_841A762,
gUnknown_841AF9F
};
-const u8 *const gUnknown_8456AE4[] = {
+static const u8 *const gUnknown_8456AE4[] = {
gUnknown_841A502,
gUnknown_841A506,
gUnknown_841AFD1
};
-u16 * sub_81144EC(u16 * a0, const u16 * a1)
+static u16 * sub_81144EC(u16 * a0, const u16 * a1)
{
a0[0] = 13;
a0[1] = gUnknown_203AF98;
@@ -3948,7 +3945,7 @@ u16 * sub_81144EC(u16 * a0, const u16 * a1)
return a0;
}
-const u16 * sub_8114518(const u16 * a0)
+static const u16 * sub_8114518(const u16 * a0)
{
DynamicPlaceholderTextUtil_Reset();
@@ -3962,7 +3959,7 @@ const u16 * sub_8114518(const u16 * a0)
return a0;
}
-u16 * sub_8114578(u16 * a0, const u16 * a1)
+static u16 * sub_8114578(u16 * a0, const u16 * a1)
{
a0[0] = 14;
a0[1] = gUnknown_203AF98;
@@ -3972,7 +3969,7 @@ u16 * sub_8114578(u16 * a0, const u16 * a1)
return a0;
}
-const u16 * sub_81145A4(const u16 * a0)
+static const u16 * sub_81145A4(const u16 * a0)
{
DynamicPlaceholderTextUtil_Reset();
@@ -3986,7 +3983,7 @@ const u16 * sub_81145A4(const u16 * a0)
return a0;
}
-u16 * sub_8114604(u16 * a0, const u16 * a1)
+static u16 * sub_8114604(u16 * a0, const u16 * a1)
{
a0[0] = 15;
a0[1] = gUnknown_203AF98;
@@ -3998,7 +3995,7 @@ u16 * sub_8114604(u16 * a0, const u16 * a1)
return a0;
}
-const u16 * sub_811464C(const u16 * a0)
+static const u16 * sub_811464C(const u16 * a0)
{
DynamicPlaceholderTextUtil_Reset();
@@ -4021,35 +4018,35 @@ const u16 * sub_811464C(const u16 * a0)
return a0;
}
-u16 * sub_8114710(u16 * a0, const u16 * a1)
+static u16 * sub_8114710(u16 * a0, const u16 * a1)
{
a0[0] = 16;
a0[1] = gUnknown_203AF98;
return a0 + 2;
}
-const u16 * sub_8114724(const u16 * a0)
+static const u16 * sub_8114724(const u16 * a0)
{
StringExpandPlaceholders(gStringVar4, gUnknown_841A50B);
a0 += 2;
return a0;
}
-u16 * sub_8114744(u16 * a0, const u16 * a1)
+static u16 * sub_8114744(u16 * a0, const u16 * a1)
{
a0[0] = 17;
a0[1] = gUnknown_203AF98;
return a0 + 2;
}
-const u16 * sub_8114758(const u16 * a0)
+static const u16 * sub_8114758(const u16 * a0)
{
StringExpandPlaceholders(gStringVar4, gUnknown_841A732);
a0 += 2;
return a0;
}
-u16 * sub_8114778(u16 * a0, const u16 * a1)
+static u16 * sub_8114778(u16 * a0, const u16 * a1)
{
u8 * r4 = (u8 *)(a0 + 4);
a0[0] = 18;
@@ -4061,7 +4058,7 @@ u16 * sub_8114778(u16 * a0, const u16 * a1)
return (u16 *)r4;
}
-const u16 * sub_81147A8(const u16 * a0)
+static const u16 * sub_81147A8(const u16 * a0)
{
const u8 * r6 = (const u8 *)(a0 + 4);
memset(gStringVar1, EOS, 8);
@@ -4074,7 +4071,7 @@ const u16 * sub_81147A8(const u16 * a0)
return (const u16 *)r6;
}
-u16 * sub_8114808(u16 * a0, const u16 * a1)
+static u16 * sub_8114808(u16 * a0, const u16 * a1)
{
a0[0] = 19;
a0[1] = gUnknown_203AF98;
@@ -4084,7 +4081,7 @@ u16 * sub_8114808(u16 * a0, const u16 * a1)
return a0;
}
-const u16 * sub_8114834(const u16 * a0)
+static const u16 * sub_8114834(const u16 * a0)
{
memset(gStringVar1, EOS, 8);
memcpy(gStringVar1, (const u8 *)a0 + 5, 7);
@@ -4095,7 +4092,7 @@ const u16 * sub_8114834(const u16 * a0)
return a0;
}
-u16 * sub_811488C(u16 * a0, const u16 * a1)
+static u16 * sub_811488C(u16 * a0, const u16 * a1)
{
a0 = sub_8113DE0(20, a0);
if (a0 == NULL)
@@ -4107,7 +4104,7 @@ u16 * sub_811488C(u16 * a0, const u16 * a1)
return a0 + 3;
}
-const u16 * sub_81148BC(const u16 * a0)
+static const u16 * sub_81148BC(const u16 * a0)
{
const u8 * boxIdxs;
a0 = sub_8113E88(20, a0);
@@ -4121,7 +4118,7 @@ const u16 * sub_81148BC(const u16 * a0)
return a0 + 3;
}
-u16 * sub_8114918(u16 * a0, const u16 * a1)
+static u16 * sub_8114918(u16 * a0, const u16 * a1)
{
a0 = sub_8113DE0(21, a0);
if (a0 == NULL)
@@ -4132,7 +4129,7 @@ u16 * sub_8114918(u16 * a0, const u16 * a1)
return a0 + 3;
}
-const u16 * sub_8114944(const u16 * a0)
+static const u16 * sub_8114944(const u16 * a0)
{
const u8 * boxIdxs;
a0 = sub_8113E88(21, a0);
@@ -4145,7 +4142,7 @@ const u16 * sub_8114944(const u16 * a0)
return a0 + 3;
}
-u16 * sub_8114990(u16 * a0, const u16 * a1)
+static u16 * sub_8114990(u16 * a0, const u16 * a1)
{
u16 * r2;
u16 * ret;
@@ -4168,7 +4165,7 @@ u16 * sub_8114990(u16 * a0, const u16 * a1)
return ret + 1;
}
-const u16 * sub_81149D0(const u16 * a0)
+static const u16 * sub_81149D0(const u16 * a0)
{
const u8 * boxIdxs;
a0 = sub_8113E88(22, a0);
@@ -4181,7 +4178,7 @@ const u16 * sub_81149D0(const u16 * a0)
return a0 + 3;
}
-u16 * sub_8114A1C(u16 * a0, const u16 * a1)
+static u16 * sub_8114A1C(u16 * a0, const u16 * a1)
{
u16 * r2;
u16 * ret;
@@ -4195,7 +4192,7 @@ u16 * sub_8114A1C(u16 * a0, const u16 * a1)
return ret + 1;
}
-const u16 * sub_8114A4C(const u16 * a0)
+static const u16 * sub_8114A4C(const u16 * a0)
{
const u8 * boxIdxs;
a0 = sub_8113E88(23, a0);
@@ -4208,7 +4205,7 @@ const u16 * sub_8114A4C(const u16 * a0)
return (const u16 *)boxIdxs + 1;
}
-u16 * sub_8114AA0(u16 * a0, const u16 * a1)
+static u16 * sub_8114AA0(u16 * a0, const u16 * a1)
{
u16 * r2;
r2 = sub_8113DE0(24, a0);
@@ -4219,7 +4216,7 @@ u16 * sub_8114AA0(u16 * a0, const u16 * a1)
return r2 + 2;
}
-const u16 * sub_8114AC8(const u16 * a0)
+static const u16 * sub_8114AC8(const u16 * a0)
{
const u8 * boxIdxs;
a0 = sub_8113E88(24, a0);
@@ -4231,7 +4228,7 @@ const u16 * sub_8114AC8(const u16 * a0)
return (const u16 *)boxIdxs + 1;
}
-u16 * sub_8114B0C(u16 * a0, const u16 * a1)
+static u16 * sub_8114B0C(u16 * a0, const u16 * a1)
{
u16 * r2;
r2 = sub_8113DE0(25, a0);
@@ -4242,7 +4239,7 @@ u16 * sub_8114B0C(u16 * a0, const u16 * a1)
return r2 + 2;
}
-const u16 * sub_8114B34(const u16 * a0)
+static const u16 * sub_8114B34(const u16 * a0)
{
const u8 * boxIdxs;
a0 = sub_8113E88(25, a0);
@@ -4254,7 +4251,7 @@ const u16 * sub_8114B34(const u16 * a0)
return (const u16 *)boxIdxs + 1;
}
-u16 * sub_8114B78(u16 * a0, const u16 * a1)
+static u16 * sub_8114B78(u16 * a0, const u16 * a1)
{
u16 * r2;
r2 = sub_8113DE0(26, a0);
@@ -4265,7 +4262,7 @@ u16 * sub_8114B78(u16 * a0, const u16 * a1)
return r2 + 2;
}
-const u16 * sub_8114BA0(const u16 * a0)
+static const u16 * sub_8114BA0(const u16 * a0)
{
const u8 * boxIdxs;
a0 = sub_8113E88(26, a0);
@@ -4277,7 +4274,7 @@ const u16 * sub_8114BA0(const u16 * a0)
return (const u16 *)boxIdxs + 1;
}
-u16 * sub_8114BE4(u16 * a0, const u16 * a1)
+static u16 * sub_8114BE4(u16 * a0, const u16 * a1)
{
u16 * r2;
r2 = sub_8113DE0(27, a0);
@@ -4288,7 +4285,7 @@ u16 * sub_8114BE4(u16 * a0, const u16 * a1)
return r2 + 1;
}
-const u16 * sub_8114C0C(const u16 * a0)
+static const u16 * sub_8114C0C(const u16 * a0)
{
const u16 *r4 = sub_8113E88(27, a0);
DynamicPlaceholderTextUtil_Reset();
@@ -4301,7 +4298,7 @@ const u16 * sub_8114C0C(const u16 * a0)
return r4 + 1;
}
-u16 * sub_8114C68(u16 * a0, const u16 * a1)
+static u16 * sub_8114C68(u16 * a0, const u16 * a1)
{
a0 = sub_8113DE0(28, a0);
if (a0 == NULL)
@@ -4310,7 +4307,7 @@ u16 * sub_8114C68(u16 * a0, const u16 * a1)
return a0 + 1;
}
-const u16 * sub_8114C8C(const u16 * a0)
+static const u16 * sub_8114C8C(const u16 * a0)
{
const u16 *r4 = sub_8113E88(28, a0);
CopyItemName(r4[0], gStringVar1);
@@ -4318,7 +4315,7 @@ const u16 * sub_8114C8C(const u16 * a0)
return r4 + 1;
}
-u16 * sub_8114CC0(u16 * a0, const u16 * a1)
+static u16 * sub_8114CC0(u16 * a0, const u16 * a1)
{
a0 = sub_8113DE0(29, a0);
if (a0 == NULL)
@@ -4327,7 +4324,7 @@ u16 * sub_8114CC0(u16 * a0, const u16 * a1)
return a0 + 1;
}
-const u16 * sub_8114CE4(const u16 * a0)
+static const u16 * sub_8114CE4(const u16 * a0)
{
const u16 *r4 = sub_8113E88(29, a0);
CopyItemName(r4[0], gStringVar1);
@@ -4348,13 +4345,13 @@ u16 * sub_8114D18(u16 a0, u16 * a1, const u16 * a2)
return a1 + 4;
}
-u16 * sub_8114D4C(u16 * a0, const u16 * a1)
+static u16 * sub_8114D4C(u16 * a0, const u16 * a1)
{
gUnknown_203B048 = TRUE;
return sub_8114D18(30, a0, a1);
}
-const u16 * sub_8114D68(const u16 * a0)
+static const u16 * sub_8114D68(const u16 * a0)
{
const u8 * r6;
a0 = sub_8113E88(30, a0);
@@ -4370,7 +4367,7 @@ const u16 * sub_8114D68(const u16 * a0)
return a0 + 4;
}
-u16 * sub_8114DE8(u16 * a0, const u16 * a1)
+static u16 * sub_8114DE8(u16 * a0, const u16 * a1)
{
u16 * r4 = a0;
u8 * r5 = (u8 *)a0 + 8;
@@ -4393,7 +4390,7 @@ u16 * sub_8114DE8(u16 * a0, const u16 * a1)
return (u16 *)(r5 + 4);
}
-const u16 * sub_8114E68(const u16 * a0)
+static const u16 * sub_8114E68(const u16 * a0)
{
const u8 * r6;
if (!sub_8110944(a0, gUnknown_8456AA0[31]))
@@ -4441,7 +4438,7 @@ const u16 * sub_8114E68(const u16 * a0)
return (const u16 *)(r6 + 4);
}
-bool8 sub_8114FBC(u16 a0)
+static bool8 sub_8114FBC(u16 a0)
{
switch (a0)
{
@@ -4454,13 +4451,13 @@ bool8 sub_8114FBC(u16 a0)
return FALSE;
}
-u16 * sub_8114FF0(u16 * a0, const u16 * a1)
+static u16 * sub_8114FF0(u16 * a0, const u16 * a1)
{
gUnknown_203B048 = TRUE;
return sub_8114D18(32, a0, a1);
}
-const u16 * sub_811500C(const u16 * a0)
+static const u16 * sub_811500C(const u16 * a0)
{
const u8 * r5;
a0 = sub_8113E88(32, a0);
@@ -4474,7 +4471,7 @@ const u16 * sub_811500C(const u16 * a0)
return a0 + 4;
}
-u16 * sub_8115078(u16 * a0, const u16 * a1)
+static u16 * sub_8115078(u16 * a0, const u16 * a1)
{
if (!sub_8110944(a0, gUnknown_8456AA0[33]))
return NULL;
@@ -4487,7 +4484,7 @@ u16 * sub_8115078(u16 * a0, const u16 * a1)
return a0 + 5;
}
-const u16 * sub_81150CC(const u16 * a0)
+static const u16 * sub_81150CC(const u16 * a0)
{
const u8 * r5;
if (!sub_8110944(a0, gUnknown_8456AA0[33]))
@@ -4518,13 +4515,13 @@ const u16 * sub_81150CC(const u16 * a0)
return (const u16 *)(r5 + 2);
}
-u16 * sub_81151C0(u16 * a0, const u16 * a1)
+static u16 * sub_81151C0(u16 * a0, const u16 * a1)
{
gUnknown_203B048 = TRUE;
return sub_8114D18(34, a0, a1);
}
-const u16 * sub_81151DC(const u16 * a0)
+static const u16 * sub_81151DC(const u16 * a0)
{
const u16 * r5 = sub_8113E88(34, a0);
const u8 * r6 = (const u8 *)r5 + 6;
@@ -4546,7 +4543,7 @@ const u16 * sub_81151DC(const u16 * a0)
return (const u16 *)(r6 + 2);
}
-const u8 *const gUnknown_8456AF0[] = {
+static const u8 *const gUnknown_8456AF0[] = {
gUnknown_841B09F,
gUnknown_841B0A4,
gUnknown_841B0B5,
@@ -4600,7 +4597,7 @@ const u8 *const gUnknown_8456AF0[] = {
gUnknown_841B277
};
-const u8 *const gUnknown_8456BBC[] = {
+static const u8 *const gUnknown_8456BBC[] = {
gUnknown_841A53A,
gUnknown_841AD9E,
gUnknown_841ADC8,
@@ -4613,7 +4610,7 @@ const u8 *const gUnknown_8456BBC[] = {
gUnknown_841B005
};
-const u8 gUnknown_8456BE4[] = {
+static const u8 gUnknown_8456BE4[] = {
0x03,
0x04,
0x05,
@@ -4667,7 +4664,7 @@ const u8 gUnknown_8456BE4[] = {
0x07
};
-const u8 gUnknown_8456C17[] = {
+static const u8 gUnknown_8456C17[] = {
0x5a,
0x5b,
0x5d,
@@ -4678,7 +4675,7 @@ const u8 gUnknown_8456C17[] = {
0x59
};
-const u8 *const gUnknown_8456C20[] = {
+static const u8 *const gUnknown_8456C20[] = {
gUnknown_841AC51,
gUnknown_841ABAB,
gUnknown_841ABCD,
@@ -4693,7 +4690,7 @@ const u8 *const gUnknown_8456C20[] = {
gUnknown_841AD3C
};
-u16 * sub_8115280(u16 * a0, const u16 * a1)
+static u16 * sub_8115280(u16 * a0, const u16 * a1)
{
u16 * r2 = sub_8113DE0(35, a0);
if (r2 == NULL)
@@ -4704,7 +4701,7 @@ u16 * sub_8115280(u16 * a0, const u16 * a1)
return r2 + 1;
}
-const u16 * sub_81152BC(const u16 * a0)
+static const u16 * sub_81152BC(const u16 * a0)
{
u8 r4, r6;
const u16 * r5 = sub_8113E88(35, a0);
@@ -4738,7 +4735,7 @@ void sub_811539C(void)
gUnknown_203B04B = TRUE;
}
-bool8 sub_81153A8(u16 a0, u16 * a1)
+static bool8 sub_81153A8(u16 a0, u16 * a1)
{
if (a0 != 35)
{
@@ -4751,7 +4748,7 @@ bool8 sub_81153A8(u16 a0, u16 * a1)
return TRUE;
}
-bool8 sub_81153E4(u16 a0, u16 * a1)
+static bool8 sub_81153E4(u16 a0, u16 * a1)
{
if (a0 != 35)
return TRUE;
@@ -4761,7 +4758,7 @@ bool8 sub_81153E4(u16 a0, u16 * a1)
return TRUE;
}
-u16 * sub_8115410(u16 * a0, const u16 * a1)
+static u16 * sub_8115410(u16 * a0, const u16 * a1)
{
u8 * r3;
a0 = sub_8113DE0(36, a0);
@@ -4778,7 +4775,7 @@ u16 * sub_8115410(u16 * a0, const u16 * a1)
return (u16 *)(r3 + 2);
}
-const u16 * sub_8115460(const u16 * a0)
+static const u16 * sub_8115460(const u16 * a0)
{
const u16 * r4 = sub_8113E88(36, a0);
const u8 * r5 = (const u8 *)r4 + 2;
@@ -4796,7 +4793,7 @@ const u16 * sub_8115460(const u16 * a0)
return (const u16 *)(r5 + 2);
}
-u16 * sub_81154DC(u16 * a0, const u16 * a1)
+static u16 * sub_81154DC(u16 * a0, const u16 * a1)
{
a0 = sub_8113DE0(37, a0);
if (a0 == NULL)
@@ -4810,7 +4807,7 @@ u16 * sub_81154DC(u16 * a0, const u16 * a1)
return a0 + 5;
}
-const u16 * sub_8115518(const u16 * a0)
+static const u16 * sub_8115518(const u16 * a0)
{
const u16 * r4 = sub_8113E88(37, a0);
const u8 * r7 = (const u8 *)r4 + 8;
@@ -4830,7 +4827,7 @@ const u16 * sub_8115518(const u16 * a0)
return (const u16 *)(r7 + 2);
}
-u16 * sub_81155A4(u16 * a0, const u16 * a1)
+static u16 * sub_81155A4(u16 * a0, const u16 * a1)
{
a0 = sub_8113DE0(38, a0);
if (a0 == NULL)
@@ -4844,7 +4841,7 @@ u16 * sub_81155A4(u16 * a0, const u16 * a1)
return a0 + 5;
}
-const u16 * sub_81155E0(const u16 * a0) {
+static const u16 * sub_81155E0(const u16 * a0) {
const u16 *r5 = sub_8113E88(38, a0);
const u8 *r7 = (const u8 *) r5 + 8;
u32 r6 = (r5[2] << 16) + r5[3];
@@ -4876,7 +4873,7 @@ const u16 * sub_81155E0(const u16 * a0) {
return (const u16 *)(r7 + 2);
}
-u16 * sub_81156D8(u16 * a0, const u16 * a1)
+static u16 * sub_81156D8(u16 * a0, const u16 * a1)
{
a0 = sub_8113DE0(40, a0);
if (a0 == NULL)
@@ -4886,7 +4883,7 @@ u16 * sub_81156D8(u16 * a0, const u16 * a1)
return a0 + 2;
}
-const u16 * sub_8115700(const u16 * a0)
+static const u16 * sub_8115700(const u16 * a0)
{
const u16 * r4 = sub_8113E88(40, a0);
const u8 * r5 = (const u8 *)r4 + 2;
@@ -4896,7 +4893,7 @@ const u16 * sub_8115700(const u16 * a0)
return (const u16 *)(r5 + 2);
}
-const u16 gUnknown_8456C50[] = {
+static const u16 gUnknown_8456C50[] = {
0x0891,
0x0892,
0x0893,
@@ -4993,7 +4990,7 @@ void sub_8115798(void)
}
}
-u16 * sub_81157DC(u16 * a0, const u16 * a1)
+static u16 * sub_81157DC(u16 * a0, const u16 * a1)
{
a0 = sub_8113DE0(42, a0);
if (a0 == NULL)
@@ -5002,7 +4999,7 @@ u16 * sub_81157DC(u16 * a0, const u16 * a1)
return a0 + 1;
}
-const u16 * sub_8115800(const u16 * a0)
+static const u16 * sub_8115800(const u16 * a0)
{
const u16 * r4 = sub_8113E88(42, a0);
sub_80C4DF8(gStringVar1, r4[0]);
diff --git a/src/rock.c b/src/rock.c
new file mode 100644
index 000000000..4db903344
--- /dev/null
+++ b/src/rock.c
@@ -0,0 +1,830 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "palette.h"
+#include "sound.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/songs.h"
+
+static void sub_80B4634(struct Sprite *sprite);
+static void sub_80B46F8(struct Sprite *sprite);
+static void AnimDirtParticleAcrossScreen(struct Sprite *sprite);
+static void AnimRaiseSprite(struct Sprite *sprite);
+static void sub_80B4D00(u8 taskId);
+static void sub_80B4F78(struct Sprite *sprite);
+static void sub_80B4FE4(struct Sprite *sprite);
+static void sub_80B5074(struct Sprite *sprite);
+static void sub_80B50A0(struct Sprite *sprite);
+static void sub_80B477C(struct Sprite *sprite);
+static void sub_80B46B4(struct Sprite *sprite);
+static void sub_80B47C4(struct Sprite *sprite);
+static void sub_80B490C(u8 taskId);
+static void sub_80B4E70(struct Task *task);
+static u8 sub_80B4FB8(void);
+static void sub_80B5024(struct Sprite *sprite);
+static void sub_80B50F8(struct Sprite *sprite);
+
+static const union AnimCmd gUnknown_83E7390[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_83E7398[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_83E73A0[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E73A8[] =
+{
+ gUnknown_83E7390,
+ gUnknown_83E7398,
+ gUnknown_83E73A0,
+};
+
+const struct SpriteTemplate gUnknown_83E73B4 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E73A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B4634,
+};
+
+const struct SpriteTemplate gUnknown_83E73CC =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E73A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B46F8,
+};
+
+const struct SpriteTemplate gUnknown_83E73E4 =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gOamData_83AC9C8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B477C,
+};
+
+static const union AffineAnimCmd gUnknown_83E73FC[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x2, 0xFFFD, 0, 5),
+ AFFINEANIMCMD_FRAME(0xFFFE, 0x3, 0, 5),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+static const union AffineAnimCmd *const gUnknown_83E741C[] =
+{
+ gUnknown_83E73FC,
+};
+
+const struct SpriteTemplate gUnknown_83E7420 =
+{
+ .tileTag = ANIM_TAG_WATER_ORB,
+ .paletteTag = ANIM_TAG_WATER_ORB,
+ .oam = &gOamData_83ACB50,
+ .anims = gUnknown_83E5958,
+ .images = NULL,
+ .affineAnims = gUnknown_83E741C,
+ .callback = sub_80B477C,
+};
+
+const struct SpriteTemplate gUnknown_83E7438 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E5D48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B477C,
+};
+
+const struct SpriteTemplate gUnknown_83E7450 =
+{
+ .tileTag = ANIM_TAG_FLYING_DIRT,
+ .paletteTag = ANIM_TAG_FLYING_DIRT,
+ .oam = &gOamData_83AC9F8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimDirtParticleAcrossScreen,
+};
+
+static const struct Subsprite gUnknown_83E7468[] =
+{
+ {
+ .x = -16,
+ .y = 0,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .tileOffset = 0,
+ .priority = 1,
+ },
+ {
+ .x = 16,
+ .y = 0,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .tileOffset = 8,
+ .priority = 1,
+ },
+};
+
+static const struct SubspriteTable gUnknown_83E7470[] =
+{
+ { ARRAY_COUNT(gUnknown_83E7468), gUnknown_83E7468 },
+};
+
+static const union AnimCmd gUnknown_83E7478[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_83E7480[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_83E7488[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_83E7490[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_83E7498[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_83E74A0[] =
+{
+ ANIMCMD_FRAME(80, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_83E74A8[] =
+{
+ gUnknown_83E7478,
+ gUnknown_83E7480,
+};
+
+static const union AnimCmd *const gUnknown_83E74B0[] =
+{
+ gUnknown_83E7488,
+ gUnknown_83E7490,
+};
+
+static const union AnimCmd *const gUnknown_83E74B8[] =
+{
+ gUnknown_83E7498,
+ gUnknown_83E74A0,
+};
+
+const struct SpriteTemplate gUnknown_83E74C0 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E74A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimRaiseSprite,
+};
+
+const struct SpriteTemplate gUnknown_83E74D8 =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gOamData_83AC9C8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B4F78,
+};
+
+const struct SpriteTemplate gUnknown_83E74F0 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gOamData_83AC9D8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B4F78,
+};
+
+const struct SpriteTemplate gUnknown_83E7508 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E74A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80B4FE4,
+};
+
+static const union AffineAnimCmd gUnknown_83E7520[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -5, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd gUnknown_83E7530[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 5, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd *const gUnknown_83E7540[] =
+{
+ gUnknown_83E7520,
+ gUnknown_83E7530,
+};
+
+const struct SpriteTemplate gUnknown_83E7548 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gOamData_83ACA38,
+ .anims = gUnknown_83E74A8,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7540,
+ .callback = sub_80B5074,
+};
+
+const struct SpriteTemplate gUnknown_83E7560 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gOamData_83ACA38,
+ .anims = gUnknown_83E74A8,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7540,
+ .callback = sub_80B50A0,
+};
+
+const struct SpriteTemplate gUnknown_83E7578 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gOamData_83AC9D8,
+ .anims = gUnknown_83E74B8,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7540,
+ .callback = AnimMoveTwisterParticle,
+};
+
+const struct SpriteTemplate gUnknown_83E7590 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gOamData_83ACA38,
+ .anims = gUnknown_83E74B0,
+ .images = NULL,
+ .affineAnims = gUnknown_83E7540,
+ .callback = sub_8077350,
+};
+
+static void sub_80B4634(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[3] != 0)
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += 14;
+ StartSpriteAnim(sprite, gBattleAnimArgs[1]);
+ AnimateSprite(sprite);
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 4;
+ sprite->data[3] = 16;
+ sprite->data[4] = -70;
+ sprite->data[5] = gBattleAnimArgs[2];
+ StoreSpriteCallbackInData6(sprite, sub_80B46B4);
+ sprite->callback = TranslateSpriteInEllipseOverDuration;
+ sprite->callback(sprite);
+}
+
+static void sub_80B46B4(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->data[5];
+ sprite->data[0] = 192;
+ sprite->data[1] = sprite->data[5];
+ sprite->data[2] = 4;
+ sprite->data[3] = 32;
+ sprite->data[4] = -24;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+ sprite->callback = TranslateSpriteInEllipseOverDuration;
+ sprite->callback(sprite);
+}
+
+static void sub_80B46F8(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[5]);
+ AnimateSprite(sprite);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
+ InitSpriteDataForLinearTranslation(sprite);
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->callback = TranslateSpriteLinearFixedPoint;
+ StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
+}
+
+static void sub_80B477C(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[6] == 0)
+ InitSpritePosToAnimAttacker(sprite, 0);
+ else
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = gBattleAnimArgs[5];
+ sprite->callback = sub_80B47C4;
+}
+
+static void sub_80B47C4(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[1];
+ sprite->pos2.y = -(sprite->data[4] >> 8);
+ sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
+ sprite->data[5] = (sprite->data[5] + sprite->data[2]) & 0xFF;
+ if (--sprite->data[0] == -1)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void AnimTask_LoadSandstormBackground(u8 taskId)
+{
+ s32 var0;
+ struct BattleAnimBgData animBg;
+
+ var0 = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
+ SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
+ sub_80752A0(&animBg);
+ AnimLoadCompressedBgTilemap(animBg.bgId, gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap);
+ AnimLoadCompressedBgGfx(animBg.bgId, gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet, animBg.tilesOffset);
+ LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, animBg.paletteId * 16, 32);
+ if (IsContest())
+ sub_80730C0(animBg.paletteId, animBg.bgTilemap, 0, 0);
+ if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ var0 = 1;
+ gTasks[taskId].data[0] = var0;
+ gTasks[taskId].func = sub_80B490C;
+}
+
+static void sub_80B490C(u8 taskId)
+{
+ struct BattleAnimBgData animBg;
+
+ if (gTasks[taskId].data[0] == 0)
+ gBattle_BG1_X += -6;
+ else
+ gBattle_BG1_X += 6;
+ gBattle_BG1_Y += -1;
+ switch (gTasks[taskId].data[12])
+ {
+ case 0:
+ if (++gTasks[taskId].data[10] == 4)
+ {
+ gTasks[taskId].data[10] = 0;
+ ++gTasks[taskId].data[11];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
+ if (gTasks[taskId].data[11] == 7)
+ {
+ ++gTasks[taskId].data[12];
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[11] == 101)
+ {
+ gTasks[taskId].data[11] = 7;
+ ++gTasks[taskId].data[12];
+ }
+ break;
+ case 2:
+ if (++gTasks[taskId].data[10] == 4)
+ {
+ gTasks[taskId].data[10] = 0;
+ --gTasks[taskId].data[11];
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
+ if (gTasks[taskId].data[11] == 0)
+ {
+ ++gTasks[taskId].data[12];
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 3:
+ sub_80752A0(&animBg);
+ sub_8075358(animBg.bgId);
+ ++gTasks[taskId].data[12];
+ break;
+ case 4:
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+// Animates the sprites that fly diagonally across the screen
+// in Sandstorm and Heat Wave.
+// arg 0: initial y pixel offset
+// arg 1: projectile speed
+// arg 2: y pixel drop
+// arg 3: ??? unknown (possibly a color bit)
+static void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ if (gBattleAnimArgs[3] != 0 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 304;
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ sprite->data[5] = 1;
+ sprite->oam.matrixNum = ST_OAM_HFLIP;
+ }
+ else
+ {
+ sprite->pos1.x = -64;
+ }
+ sprite->pos1.y = gBattleAnimArgs[0];
+ SetSubspriteTables(sprite, gUnknown_83E7470);
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ ++sprite->data[0];
+ }
+ else
+ {
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x += (sprite->data[3] >> 8);
+ sprite->pos2.y += (sprite->data[4] >> 8);
+ sprite->data[3] &= 0xFF;
+ sprite->data[4] &= 0xFF;
+ if (sprite->data[5] == 0)
+ {
+ if (sprite->pos1.x + sprite->pos2.x > 272)
+ {
+ sprite->callback = DestroyAnimSprite;
+ }
+ }
+ else if (sprite->pos1.x + sprite->pos2.x < -32)
+ {
+ sprite->callback = DestroyAnimSprite;
+ }
+ }
+}
+
+// Animates the rising rocks in Ancient Power.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: terminal y offset
+// arg 3: duration
+// arg 4: sprite size [1,5]
+static void AnimRaiseSprite(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+ InitSpritePosToAnimAttacker(sprite, 0);
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[2] = sprite->pos1.x;
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_80B4BD0(u8 taskId)
+{
+ u16 var0, var1, var2, var3;
+ u8 var4;
+ s32 var5;
+ s16 pan1, pan2;
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24;
+ var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24;
+ if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget)
+ var3 = var1;
+ var4 = sub_80B4FB8();
+ if (var4 == 1)
+ task->data[8] = 32;
+ else
+ task->data[8] = 48 - (var4 * 8);
+ task->data[0] = 0;
+ task->data[11] = 0;
+ task->data[9] = 0;
+ task->data[12] = 1;
+ var5 = task->data[8];
+ if (var5 < 0)
+ var5 += 7;
+ task->data[10] = (var5 >> 3) - 1;
+ task->data[2] = var0 * 8;
+ task->data[3] = var1 * 8;
+ task->data[4] = ((var2 - var0) * 8) / task->data[8];
+ task->data[5] = ((var3 - var1) * 8) / task->data[8];
+ task->data[6] = 0;
+ task->data[7] = 0;
+ pan1 = BattleAnimAdjustPanning(PAN_SIDE_PLAYER);
+ pan2 = BattleAnimAdjustPanning(PAN_SIDE_OPPONENT);
+ task->data[13] = pan1;
+ task->data[14] = (pan2 - pan1) / task->data[8];
+ task->data[1] = var4;
+ task->data[15] = GetAnimBattlerSpriteId(0);
+ task->func = sub_80B4D00;
+}
+
+static void sub_80B4D00(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[6] -= task->data[4];
+ task->data[7] -= task->data[5];
+ gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
+ gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+ if (++task->data[9] == 10)
+ {
+ task->data[11] = 20;
+ ++task->data[0];
+ }
+ PlaySE12WithPanning(SE_W029, task->data[13]);
+ break;
+ case 1:
+ if (--task->data[11] == 0)
+ ++task->data[0];
+ break;
+ case 2:
+ if (--task->data[9] != 0)
+ {
+ task->data[6] += task->data[4];
+ task->data[7] += task->data[5];
+ }
+ else
+ {
+ task->data[6] = 0;
+ task->data[7] = 0;
+ ++task->data[0];
+ }
+ gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
+ gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+ break;
+ case 3:
+ task->data[2] += task->data[4];
+ task->data[3] += task->data[5];
+ if (++task->data[9] >= task->data[10])
+ {
+ task->data[9] = 0;
+ sub_80B4E70(task);
+ task->data[13] += task->data[14];
+ PlaySE12WithPanning(SE_W091, task->data[13]);
+ }
+ if (--task->data[8] == 0)
+ {
+ ++task->data[0];
+ }
+ break;
+ case 4:
+ if (task->data[11] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80B4E70(struct Task *task)
+{
+ const struct SpriteTemplate *spriteTemplate;
+ s32 var0;
+ u16 x, y;
+ u8 spriteId;
+
+ switch (task->data[1])
+ {
+ case 1:
+ spriteTemplate = &gUnknown_83E74D8;
+ var0 = 0;
+ break;
+ case 2:
+ case 3:
+ spriteTemplate = &gUnknown_83E74F0;
+ var0 = 80;
+ break;
+ case 4:
+ spriteTemplate = &gUnknown_83E74F0;
+ var0 = 64;
+ break;
+ case 5:
+ spriteTemplate = &gUnknown_83E74F0;
+ var0 = 48;
+ break;
+ default:
+ return;
+ }
+ x = task->data[2] >> 3;
+ y = task->data[3] >> 3;
+ x += (task->data[12] * 4);
+ spriteId = CreateSprite(spriteTemplate, x, y, 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 18;
+ gSprites[spriteId].data[2] = ((task->data[12] * 20) + x) + (task->data[1] * 3);
+ gSprites[spriteId].data[4] = y;
+ gSprites[spriteId].data[5] = -16 - (task->data[1] * 2);
+ gSprites[spriteId].oam.tileNum += var0;
+ InitAnimArcTranslation(&gSprites[spriteId]);
+ ++task->data[11];
+ }
+ task->data[12] *= -1;
+}
+
+static void sub_80B4F78(struct Sprite *sprite)
+{
+ if (TranslateAnimHorizontalArc(sprite))
+ {
+ u8 taskId = FindTaskIdByFunc(sub_80B4D00);
+
+ if (taskId != TASK_NONE)
+ --gTasks[taskId].data[11];
+ DestroySprite(sprite);
+ }
+}
+
+static u8 sub_80B4FB8(void)
+{
+ u8 retVal = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer;
+ u8 var0 = retVal - 1;
+
+ if (var0 > 4)
+ retVal = 1;
+ return retVal;
+}
+
+static void sub_80B4FE4(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+ sprite->pos2.x = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] -= gBattleAnimArgs[2];
+ sprite->data[0] = 3;
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_80B5024;
+ sprite->invisible = TRUE;
+}
+
+static void sub_80B5024(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+ if (sprite->data[3] != 0)
+ {
+ sprite->pos2.y = sprite->data[2] + sprite->data[3];
+ sprite->data[3] += sprite->data[0];
+ ++sprite->data[0];
+ if (sprite->data[3] > 0)
+ {
+ sprite->data[3] = 0;
+ }
+ }
+ else if (--sprite->data[1] == 0)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_80B5074(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ StartSpriteAffineAnim(sprite, 1);
+ TranslateAnimSpriteToTargetMonLocation(sprite);
+}
+
+static void sub_80B50A0(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[5] = gBattleAnimArgs[2];
+ StartSpriteAnim(sprite, gBattleAnimArgs[3]);
+ sprite->callback = sub_80B50F8;
+}
+
+static void sub_80B50F8(struct Sprite *sprite)
+{
+ sprite->data[0] += 8;
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x += sprite->data[3] / 40;
+ sprite->pos2.y -= Sin(sprite->data[0], sprite->data[5]);
+ if (sprite->data[0] > 140)
+ DestroyAnimSprite(sprite);
+}
+
+void AnimTask_GetSeismicTossDamageLevel(u8 taskId)
+{
+ if (gAnimMoveDmg < 33)
+ gBattleAnimArgs[7] = 0;
+ if ((u32)gAnimMoveDmg - 33 < 33)
+ gBattleAnimArgs[7] = 1;
+ if (gAnimMoveDmg > 65)
+ gBattleAnimArgs[7] = 2;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80B5188(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_8075458(0);
+ gTasks[taskId].data[1] = 200;
+ }
+ gBattle_BG3_Y += gTasks[taskId].data[1] / 10;
+ gTasks[taskId].data[1] -= 3;
+ if (gTasks[taskId].data[0] == 120)
+ {
+ sub_8075458(1);
+ DestroyAnimVisualTask(taskId);
+ }
+ ++gTasks[taskId].data[0];
+}
+
+void sub_80B51EC(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_8075458(0);
+ ++gTasks[taskId].data[0];
+ gTasks[taskId].data[2] = gBattle_BG3_Y;
+ }
+ gTasks[taskId].data[1] += 80;
+ gTasks[taskId].data[1] &= 0xFF;
+ gBattle_BG3_Y = gTasks[taskId].data[2] + Cos(4, gTasks[taskId].data[1]);
+ if (gBattleAnimArgs[7] == 0xFFF)
+ {
+ gBattle_BG3_Y = 0;
+ sub_8075458(1);
+ DestroyAnimVisualTask(taskId);
+ }
+}
diff --git a/src/save.c b/src/save.c
index 9f580477b..45f5fc6f0 100644
--- a/src/save.c
+++ b/src/save.c
@@ -85,7 +85,7 @@ u16 gSaveUnusedVar;
u16 gSaveFileStatus;
void (*gGameContinueCallback)(void);
struct SaveBlockChunk gRamSaveSectionLocations[0xE];
-u16 gUnknown_3005420;
+u16 gSaveSucceeded;
EWRAM_DATA struct SaveSection gSaveDataBuffer = {0};
EWRAM_DATA u32 gSaveUnusedVar2 = 0;
@@ -702,11 +702,11 @@ u8 TrySavingData(u8 saveType)
else
goto OK; // really?
}
- gUnknown_3005420 = 0xFF;
+ gSaveSucceeded = 0xFF;
return 0xFF;
OK:
- gUnknown_3005420 = 1;
+ gSaveSucceeded = 1;
return 1;
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 85059691f..ae994fceb 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1284,14 +1284,14 @@ bool8 ScrCmd_loadhelp(struct ScriptContext *ctx)
if (msg == NULL)
msg = (const u8 *)ctx->data[0];
- sub_80F7974(msg);
+ DrawHelpMessageWindowWithText(msg);
CopyWindowToVram(GetStartMenuWindowId(), 1);
return FALSE;
}
bool8 ScrCmd_unloadhelp(struct ScriptContext *ctx)
{
- sub_80F7998();
+ DestroyHelpMessageWindow_();
return FALSE;
}
@@ -1566,7 +1566,7 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
if (ptr == NULL)
ptr = (u8 *)ctx->data[0];
- sub_80F6E9C();
+ LoadStdWindowFrameGfx();
DrawDialogueFrame(0, 1);
AddTextPrinterParameterized(0, 6, ptr, 0, 1, 0, NULL);
return FALSE;
diff --git a/src/start_menu.c b/src/start_menu.c
new file mode 100644
index 000000000..e3854b803
--- /dev/null
+++ b/src/start_menu.c
@@ -0,0 +1,1008 @@
+#include "global.h"
+#include "palette.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "scanline_effect.h"
+#include "overworld.h"
+#include "link.h"
+#include "pokedex.h"
+#include "item_menu.h"
+#include "party_menu.h"
+#include "save.h"
+#include "link_rfu.h"
+#include "event_data.h"
+#include "fieldmap.h"
+#include "safari_zone.h"
+#include "start_menu.h"
+#include "menu.h"
+#include "load_save.h"
+#include "strings.h"
+#include "string_util.h"
+#include "menu_helpers.h"
+#include "text_window.h"
+#include "field_fadetransition.h"
+#include "field_player_avatar.h"
+#include "new_menu_helpers.h"
+#include "map_obj_80688E4.h"
+#include "map_obj_lock.h"
+#include "script.h"
+#include "sound.h"
+#include "quest_log.h"
+#include "new_game.h"
+#include "event_scripts.h"
+#include "field_weather.h"
+#include "field_specials.h"
+#include "pokedex_screen.h"
+#include "trainer_card.h"
+#include "option_menu.h"
+#include "save_menu_util.h"
+#include "help_system.h"
+#include "constants/songs.h"
+#include "constants/flags.h"
+
+enum StartMenuOption
+{
+ STARTMENU_POKEDEX = 0,
+ STARTMENU_POKEMON,
+ STARTMENU_BAG,
+ STARTMENU_PLAYER,
+ STARTMENU_SAVE,
+ STARTMENU_OPTION,
+ STARTMENU_EXIT,
+ STARTMENU_RETIRE,
+ STARTMENU_PLAYER2,
+ MAX_STARTMENU_ITEMS
+};
+
+enum SaveCBReturn
+{
+ SAVECB_RETURN_CONTINUE = 0,
+ SAVECB_RETURN_OKAY,
+ SAVECB_RETURN_CANCEL,
+ SAVECB_RETURN_ERROR
+};
+
+static EWRAM_DATA bool8 (*sStartMenuCallback)(void) = NULL;
+static EWRAM_DATA u8 sStartMenuCursorPos = 0;
+static EWRAM_DATA u8 sNumStartMenuItems = 0;
+static EWRAM_DATA u8 sStartMenuOrder[MAX_STARTMENU_ITEMS] = {};
+static EWRAM_DATA s8 sDrawStartMenuState[2] = {};
+static EWRAM_DATA u8 sSafariZoneStatsWindowId = 0;
+static ALIGNED(4) EWRAM_DATA u8 sSaveStatsWindowId = 0;
+
+static u8 (*sSaveDialogCB)(void);
+static u8 sSaveDialogDelay;
+static bool8 sSaveDialogIsPrinting;
+
+static void SetUpStartMenu_Link(void);
+static void SetUpStartMenu_UnionRoom(void);
+static void SetUpStartMenu_SafariZone(void);
+static void SetUpStartMenu_NormalField(void);
+static bool8 StartCB_HandleInput(void);
+static void StartMenu_FadeScreenIfLeavingOverworld(void);
+static bool8 StartMenuPokedexSanityCheck(void);
+static bool8 StartMenuPokedexCallback(void);
+static bool8 StartMenuPokemonCallback(void);
+static bool8 StartMenuBagCallback(void);
+static bool8 StartMenuPlayerCallback(void);
+static bool8 StartMenuSaveCallback(void);
+static bool8 StartMenuOptionCallback(void);
+static bool8 StartMenuExitCallback(void);
+static bool8 StartMenuSafariZoneRetireCallback(void);
+static bool8 StartMenuLinkPlayerCallback(void);
+static bool8 StartCB_Save1(void);
+static bool8 StartCB_Save2(void);
+static void StartMenu_PrepareForSave(void);
+static u8 RunSaveDialogCB(void);
+static void task50_save_game(u8 taskId);
+static u8 SaveDialogCB_PrintAskSaveText(void);
+static u8 SaveDialogCB_AskSavePrintYesNoMenu(void);
+static u8 SaveDialogCB_AskSaveHandleInput(void);
+static u8 SaveDialogCB_PrintAskOverwriteText(void);
+static u8 SaveDialogCB_AskOverwritePrintYesNoMenu(void);
+static u8 SaveDialogCB_AskReplacePreviousFilePrintYesNoMenu(void);
+static u8 SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput(void);
+static u8 SaveDialogCB_PrintSavingDontTurnOffPower(void);
+static u8 SaveDialogCB_DoSave(void);
+static u8 SaveDialogCB_PrintSaveResult(void);
+static u8 SaveDialogCB_WaitPrintSuccessAndPlaySE(void);
+static u8 SaveDialogCB_ReturnSuccess(void);
+static u8 SaveDialogCB_WaitPrintErrorAndPlaySE(void);
+static u8 SaveDialogCB_ReturnError(void);
+static void CB2_WhileSavingAfterLinkBattle(void);
+static void task50_after_link_battle_save(u8 taskId);
+static void PrintSaveStats(void);
+static void CloseSaveStatsWindow(void);
+static void CloseStartMenu(void);
+
+static const struct MenuAction sStartMenuActionTable[] = {
+ { gStartMenuText_Pokedex, {.u8_void = StartMenuPokedexCallback} },
+ { gStartMenuText_Pokemon, {.u8_void = StartMenuPokemonCallback} },
+ { gStartMenuText_Bag, {.u8_void = StartMenuBagCallback} },
+ { gStartMenuText_Player, {.u8_void = StartMenuPlayerCallback} },
+ { gStartMenuText_Save, {.u8_void = StartMenuSaveCallback} },
+ { gStartMenuText_Option, {.u8_void = StartMenuOptionCallback} },
+ { gStartMenuText_Exit, {.u8_void = StartMenuExitCallback} },
+ { gStartMenuText_Retire, {.u8_void = StartMenuSafariZoneRetireCallback} },
+ { gStartMenuText_Player, {.u8_void = StartMenuLinkPlayerCallback} }
+};
+
+static const struct WindowTemplate sSafariZoneStatsWindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x008
+};
+
+static const u8 *const sStartMenuDescPointers[] = {
+ gStartMenuDesc_Pokedex,
+ gStartMenuDesc_Pokemon,
+ gStartMenuDesc_Bag,
+ gStartMenuDesc_Player,
+ gStartMenuDesc_Save,
+ gStartMenuDesc_Option,
+ gStartMenuDesc_Exit,
+ gStartMenuDesc_Retire,
+ gStartMenuDesc_Player
+};
+
+static const struct BgTemplate sBGTemplates_AfterLinkSaveMessage[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }
+};
+
+static const struct WindowTemplate sWindowTemplates_AfterLinkSaveMessage[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x198
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate sSaveStatsWindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 14,
+ .height = 9,
+ .paletteNum = 13,
+ .baseBlock = 0x008
+};
+
+static ALIGNED(2) const u8 sTextColor_StatName[] = { 1, 2, 3 };
+static ALIGNED(2) const u8 sTextColor_StatValue[] = { 1, 4, 5 };
+static ALIGNED(2) const u8 sTextColor_LocationHeader[] = { 1, 6, 7 };
+
+static void SetUpStartMenu(void)
+{
+ sNumStartMenuItems = 0;
+ if (IsUpdateLinkStateCBActive() == TRUE)
+ SetUpStartMenu_Link();
+ else if (InUnionRoom() == TRUE)
+ SetUpStartMenu_UnionRoom();
+ else if (GetSafariZoneFlag() == TRUE)
+ SetUpStartMenu_SafariZone();
+ else
+ SetUpStartMenu_NormalField();
+}
+
+static void AppendToStartMenuItems(u8 newEntry)
+{
+ AppendToList(sStartMenuOrder, &sNumStartMenuItems, newEntry);
+}
+
+static void SetUpStartMenu_NormalField(void)
+{
+ if (FlagGet(FLAG_0x829) == TRUE)
+ AppendToStartMenuItems(STARTMENU_POKEDEX);
+ if (FlagGet(FLAG_0x828) == TRUE)
+ AppendToStartMenuItems(STARTMENU_POKEMON);
+ AppendToStartMenuItems(STARTMENU_BAG);
+ AppendToStartMenuItems(STARTMENU_PLAYER);
+ AppendToStartMenuItems(STARTMENU_SAVE);
+ AppendToStartMenuItems(STARTMENU_OPTION);
+ AppendToStartMenuItems(STARTMENU_EXIT);
+}
+
+static void SetUpStartMenu_SafariZone(void)
+{
+ AppendToStartMenuItems(STARTMENU_RETIRE);
+ AppendToStartMenuItems(STARTMENU_POKEDEX);
+ AppendToStartMenuItems(STARTMENU_POKEMON);
+ AppendToStartMenuItems(STARTMENU_BAG);
+ AppendToStartMenuItems(STARTMENU_PLAYER);
+ AppendToStartMenuItems(STARTMENU_OPTION);
+ AppendToStartMenuItems(STARTMENU_EXIT);
+}
+
+static void SetUpStartMenu_Link(void)
+{
+ AppendToStartMenuItems(STARTMENU_POKEMON);
+ AppendToStartMenuItems(STARTMENU_BAG);
+ AppendToStartMenuItems(STARTMENU_PLAYER2);
+ AppendToStartMenuItems(STARTMENU_OPTION);
+ AppendToStartMenuItems(STARTMENU_EXIT);
+}
+
+static void SetUpStartMenu_UnionRoom(void)
+{
+ AppendToStartMenuItems(STARTMENU_POKEMON);
+ AppendToStartMenuItems(STARTMENU_BAG);
+ AppendToStartMenuItems(STARTMENU_PLAYER);
+ AppendToStartMenuItems(STARTMENU_OPTION);
+ AppendToStartMenuItems(STARTMENU_EXIT);
+}
+
+static void DrawSafariZoneStatsWindow(void)
+{
+ sSafariZoneStatsWindowId = AddWindow(&sSafariZoneStatsWindowTemplate);
+ PutWindowTilemap(sSafariZoneStatsWindowId);
+ DrawStdWindowFrame(sSafariZoneStatsWindowId, FALSE);
+ ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar2, 600, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar3, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84162A9);
+ AddTextPrinterParameterized(sSafariZoneStatsWindowId,2, gStringVar4, 4, 3, 0xFF, NULL);
+ CopyWindowToVram(sSafariZoneStatsWindowId, 2);
+}
+
+static void DestroySafariZoneStatsWindow(void)
+{
+ if (GetSafariZoneFlag())
+ {
+ ClearStdWindowAndFrameToTransparent(sSafariZoneStatsWindowId, FALSE);
+ CopyWindowToVram(sSafariZoneStatsWindowId, 2);
+ RemoveWindow(sSafariZoneStatsWindowId);
+ }
+}
+
+static s8 PrintStartMenuItems(s8 *cursor_p, u8 nitems)
+{
+ s16 i = *cursor_p;
+ do
+ {
+ if (sStartMenuOrder[i] == STARTMENU_PLAYER || sStartMenuOrder[i] == STARTMENU_PLAYER2)
+ {
+ Menu_PrintFormatIntlPlayerName(GetStartMenuWindowId(), sStartMenuActionTable[sStartMenuOrder[i]].text, 8, i * 15);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, sStartMenuActionTable[sStartMenuOrder[i]].text);
+ AddTextPrinterParameterized(GetStartMenuWindowId(), 2, gStringVar4, 8, i * 15, 0xFF, NULL);
+ }
+ i++;
+ if (i >= sNumStartMenuItems)
+ {
+ *cursor_p = i;
+ return TRUE;
+ }
+ } while (--nitems);
+ *cursor_p = i;
+ return FALSE;
+}
+
+static s8 DoDrawStartMenu(void)
+{
+ switch (sDrawStartMenuState[0])
+ {
+ case 0:
+ sDrawStartMenuState[0]++;
+ break;
+ case 1:
+ SetUpStartMenu();
+ sDrawStartMenuState[0]++;
+ break;
+ case 2:
+ LoadStdWindowFrameGfx();
+ DrawStdWindowFrame(CreateStartMenuWindow(sNumStartMenuItems), FALSE);
+ sDrawStartMenuState[0]++;
+ break;
+ case 3:
+ if (GetSafariZoneFlag())
+ DrawSafariZoneStatsWindow();
+ sDrawStartMenuState[0]++;
+ break;
+ case 4:
+ if (PrintStartMenuItems(&sDrawStartMenuState[1], 2) == TRUE)
+ sDrawStartMenuState[0]++;
+ break;
+ case 5:
+ sStartMenuCursorPos = Menu_InitCursor(GetStartMenuWindowId(), 2, 0, 0, 15, sNumStartMenuItems, sStartMenuCursorPos);
+ if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP)
+ {
+ DrawHelpMessageWindowWithText(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]]);
+ }
+ CopyWindowToVram(GetStartMenuWindowId(), 1);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void DrawStartMenuInOneGo(void)
+{
+ sDrawStartMenuState[0] = 0;
+ sDrawStartMenuState[1] = 0;
+ while (!DoDrawStartMenu())
+ ;
+}
+
+static void task50_startmenu(u8 taskId)
+{
+ if (DoDrawStartMenu() == TRUE)
+ SwitchTaskToFollowupFunc(taskId);
+}
+
+static void OpenStartMenuWithFollowupFunc(TaskFunc func)
+{
+ u8 taskId;
+ sDrawStartMenuState[0] = 0;
+ sDrawStartMenuState[1] = 0;
+ taskId = CreateTask(task50_startmenu, 80);
+ SetTaskFuncWithFollowupFunc(taskId, task50_startmenu, func);
+}
+
+static bool8 FieldCB2_DrawStartMenu(void)
+{
+ if (!DoDrawStartMenu())
+ return FALSE;
+ FadeTransition_FadeInOnReturnToStartMenu();
+ return TRUE;
+}
+
+void SetUpReturnToStartMenu(void)
+{
+ sDrawStartMenuState[0] = 0;
+ sDrawStartMenuState[1] = 0;
+ gFieldCallback2 = FieldCB2_DrawStartMenu;
+}
+
+void Task_StartMenuHandleInput(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ if (InUnionRoom() == TRUE)
+ var_800D_set_xB();
+ sStartMenuCallback = StartCB_HandleInput;
+ data[0]++;
+ break;
+ case 1:
+ if (sStartMenuCallback() == TRUE)
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void ShowStartMenu(void)
+{
+ if (!IsUpdateLinkStateCBActive())
+ {
+ player_bitmagic();
+ sub_805C270();
+ sub_805C780();
+ }
+ OpenStartMenuWithFollowupFunc(Task_StartMenuHandleInput);
+ ScriptContext2_Enable();
+}
+
+static bool8 StartCB_HandleInput(void)
+{
+ if (JOY_NEW(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ sStartMenuCursorPos = Menu_MoveCursor(-1);
+ if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP)
+ {
+ PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2);
+ }
+ }
+ if (JOY_NEW(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ sStartMenuCursorPos = Menu_MoveCursor(+1);
+ if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP)
+ {
+ PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2);
+ }
+ }
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ if (!StartMenuPokedexSanityCheck())
+ return FALSE;
+ sStartMenuCallback = sStartMenuActionTable[sStartMenuOrder[sStartMenuCursorPos]].func.u8_void;
+ StartMenu_FadeScreenIfLeavingOverworld();
+ return FALSE;
+ }
+ if (JOY_NEW(B_BUTTON | START_BUTTON))
+ {
+ DestroySafariZoneStatsWindow();
+ DestroyHelpMessageWindow_();
+ CloseStartMenu();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void StartMenu_FadeScreenIfLeavingOverworld(void)
+{
+ if (sStartMenuCallback != StartMenuSaveCallback
+ && sStartMenuCallback != StartMenuExitCallback
+ && sStartMenuCallback != StartMenuSafariZoneRetireCallback)
+ {
+ sub_80CCB68();
+ fade_screen(1, 0);
+ }
+}
+
+static bool8 StartMenuPokedexSanityCheck(void)
+{
+ if (sStartMenuActionTable[sStartMenuOrder[sStartMenuCursorPos]].func.u8_void == StartMenuPokedexCallback && GetNationalPokedexCount(0) == 0)
+ return FALSE;
+ return TRUE;
+}
+
+static bool8 StartMenuPokedexCallback(void)
+{
+ if (!gPaletteFade.active)
+ {
+ IncrementGameStat(GAME_STAT_CHECKED_POKEDEX);
+ PlayRainStoppingSoundEffect();
+ DestroySafariZoneStatsWindow();
+ CleanupOverworldWindowsAndTilemaps();
+ SetMainCallback2(CB2_OpenPokedexFromStartMenu);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 StartMenuPokemonCallback(void)
+{
+ if (!gPaletteFade.active)
+ {
+ PlayRainStoppingSoundEffect();
+ DestroySafariZoneStatsWindow();
+ CleanupOverworldWindowsAndTilemaps();
+ SetMainCallback2(CB2_PartyMenuFromStartMenu);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 StartMenuBagCallback(void)
+{
+ if (!gPaletteFade.active)
+ {
+ PlayRainStoppingSoundEffect();
+ DestroySafariZoneStatsWindow();
+ CleanupOverworldWindowsAndTilemaps();
+ SetMainCallback2(CB2_BagMenuFromStartMenu);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 StartMenuPlayerCallback(void)
+{
+ if (!gPaletteFade.active)
+ {
+ PlayRainStoppingSoundEffect();
+ DestroySafariZoneStatsWindow();
+ CleanupOverworldWindowsAndTilemaps();
+ InitTrainerCard(CB2_ReturnToStartMenu);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 StartMenuSaveCallback(void)
+{
+ sStartMenuCallback = StartCB_Save1;
+ return FALSE;
+}
+
+static bool8 StartMenuOptionCallback(void)
+{
+ if (!gPaletteFade.active)
+ {
+ PlayRainStoppingSoundEffect();
+ DestroySafariZoneStatsWindow();
+ CleanupOverworldWindowsAndTilemaps();
+ SetMainCallback2(CB2_OptionsMenuFromStartMenu);
+ gMain.savedCallback = CB2_ReturnToStartMenu;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 StartMenuExitCallback(void)
+{
+ DestroySafariZoneStatsWindow();
+ DestroyHelpMessageWindow_();
+ CloseStartMenu();
+ return TRUE;
+}
+
+static bool8 StartMenuSafariZoneRetireCallback(void)
+{
+ DestroySafariZoneStatsWindow();
+ DestroyHelpMessageWindow_();
+ CloseStartMenu();
+ SafariZoneRetirePrompt();
+ return TRUE;
+}
+
+
+static bool8 StartMenuLinkPlayerCallback(void)
+{
+ if (!gPaletteFade.active)
+ {
+ PlayRainStoppingSoundEffect();
+ CleanupOverworldWindowsAndTilemaps();
+ InitLinkPartnerTrainerCard(gUnknown_300502C, CB2_ReturnToStartMenu);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 StartCB_Save1(void)
+{
+ HelpSystem_BackupSomeVariable();
+ HelpSystem_SetSomeVariable2(12);
+ StartMenu_PrepareForSave();
+ sStartMenuCallback = StartCB_Save2;
+ return FALSE;
+}
+
+static bool8 StartCB_Save2(void)
+{
+ switch (RunSaveDialogCB())
+ {
+ case SAVECB_RETURN_CONTINUE:
+ break;
+ case SAVECB_RETURN_OKAY:
+ ClearDialogWindowAndFrameToTransparent(0, TRUE);
+ sub_80696C0();
+ ScriptContext2_Disable();
+ HelpSystem_RestoreSomeVariable();
+ return TRUE;
+ case SAVECB_RETURN_CANCEL:
+ ClearDialogWindowAndFrameToTransparent(0, FALSE);
+ DrawStartMenuInOneGo();
+ HelpSystem_RestoreSomeVariable();
+ sStartMenuCallback = StartCB_HandleInput;
+ break;
+ case SAVECB_RETURN_ERROR:
+ ClearDialogWindowAndFrameToTransparent(0, TRUE);
+ sub_80696C0();
+ ScriptContext2_Disable();
+ HelpSystem_RestoreSomeVariable();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void StartMenu_PrepareForSave(void)
+{
+ save_serialize_map();
+ sSaveDialogCB = SaveDialogCB_PrintAskSaveText;
+ sSaveDialogIsPrinting = FALSE;
+}
+
+static u8 RunSaveDialogCB(void)
+{
+ if (RunTextPrinters_CheckPrinter0Active() == TRUE)
+ return 0;
+ sSaveDialogIsPrinting = FALSE;
+ return sSaveDialogCB();
+}
+
+void Field_AskSaveTheGame(void)
+{
+ HelpSystem_BackupSomeVariable();
+ HelpSystem_SetSomeVariable2(12);
+ StartMenu_PrepareForSave();
+ CreateTask(task50_save_game, 80);
+}
+
+static void PrintSaveTextWithFollowupFunc(const u8 *str, bool8 (*saveDialogCB)(void))
+{
+ StringExpandPlaceholders(gStringVar4, str);
+ sub_80F7768(0, TRUE);
+ AddTextPrinterForMessage(TRUE);
+ sSaveDialogIsPrinting = TRUE;
+ sSaveDialogCB = saveDialogCB;
+}
+
+static void task50_save_game(u8 taskId)
+{
+ switch (RunSaveDialogCB())
+ {
+ case 0:
+ return;
+ case 2:
+ case 3:
+ gSpecialVar_Result = FALSE;
+ break;
+ case 1:
+ gSpecialVar_Result = TRUE;
+ break;
+ }
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ HelpSystem_RestoreSomeVariable();
+}
+
+static void CloseSaveMessageWindow(void)
+{
+ ClearDialogWindowAndFrame(0, TRUE);
+}
+
+static void CloseSaveStatsWindow_(void)
+{
+ CloseSaveStatsWindow();
+}
+
+static void SetSaveDialogDelayTo60Frames(void)
+{
+ sSaveDialogDelay = 60;
+}
+
+static bool8 SaveDialog_Wait60FramesOrAButtonHeld(void)
+{
+ sSaveDialogDelay--;
+ if (JOY_HELD(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return TRUE;
+ }
+ else if (sSaveDialogDelay == 0)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static bool8 SaveDialog_Wait60FramesThenCheckAButtonHeld(void)
+{
+ if (sSaveDialogDelay == 0)
+ {
+ if (JOY_HELD(A_BUTTON))
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ sSaveDialogDelay--;
+ return FALSE;
+ }
+}
+
+static u8 SaveDialogCB_PrintAskSaveText(void)
+{
+ ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE);
+ RemoveStartMenuWindow();
+ DestroyHelpMessageWindow(0);
+ PrintSaveStats();
+ PrintSaveTextWithFollowupFunc(gText_WouldYouLikeToSaveTheGame, SaveDialogCB_AskSavePrintYesNoMenu);
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_AskSavePrintYesNoMenu(void)
+{
+ DisplayYesNoMenuDefaultYes();
+ sSaveDialogCB = SaveDialogCB_AskSaveHandleInput;
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_AskSaveHandleInput(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ if ((gSaveFileStatus != SAVE_STATUS_EMPTY && gSaveFileStatus != SAVE_STATUS_INVALID) || !gDifferentSaveFile)
+ sSaveDialogCB = SaveDialogCB_PrintAskOverwriteText;
+ else
+ sSaveDialogCB = SaveDialogCB_PrintSavingDontTurnOffPower;
+ break;
+ case 1:
+ case -1:
+ CloseSaveStatsWindow_();
+ CloseSaveMessageWindow();
+ return SAVECB_RETURN_CANCEL;
+ }
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_PrintAskOverwriteText(void)
+{
+ if (gDifferentSaveFile == TRUE)
+ PrintSaveTextWithFollowupFunc(gText_DifferentGameFile, SaveDialogCB_AskReplacePreviousFilePrintYesNoMenu);
+ else
+ PrintSaveTextWithFollowupFunc(gText_AlreadySaveFile_WouldLikeToOverwrite, SaveDialogCB_AskOverwritePrintYesNoMenu);
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_AskOverwritePrintYesNoMenu(void)
+{
+ DisplayYesNoMenuDefaultYes();
+ sSaveDialogCB = SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput;
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_AskReplacePreviousFilePrintYesNoMenu(void)
+{
+ DisplayYesNoMenuDefaultNo();
+ sSaveDialogCB = SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput;
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ sSaveDialogCB = SaveDialogCB_PrintSavingDontTurnOffPower;
+ break;
+ case 1:
+ case -1:
+ CloseSaveStatsWindow_();
+ CloseSaveMessageWindow();
+ return SAVECB_RETURN_CANCEL;
+ }
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_PrintSavingDontTurnOffPower(void)
+{
+ sub_8112450();
+ PrintSaveTextWithFollowupFunc(gText_SavingDontTurnOffThePower, SaveDialogCB_DoSave);
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_DoSave(void)
+{
+ IncrementGameStat(GAME_STAT_SAVED_GAME);
+ if (gDifferentSaveFile == TRUE)
+ {
+ TrySavingData(SAVE_OVERWRITE_DIFFERENT_FILE);
+ gDifferentSaveFile = FALSE;
+ }
+ else
+ {
+ TrySavingData(SAVE_NORMAL);
+ }
+ sSaveDialogCB = SaveDialogCB_PrintSaveResult;
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_PrintSaveResult(void)
+{
+ if (gSaveSucceeded == TRUE)
+ PrintSaveTextWithFollowupFunc(gText_PlayerSavedTheGame, SaveDialogCB_WaitPrintSuccessAndPlaySE);
+ else
+ PrintSaveTextWithFollowupFunc(gText_SaveError_PleaseExchangeBackupMemory, SaveDialogCB_WaitPrintErrorAndPlaySE);
+ SetSaveDialogDelayTo60Frames();
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_WaitPrintSuccessAndPlaySE(void)
+{
+ if (!RunTextPrinters_CheckPrinter0Active())
+ {
+ PlaySE(SE_SAVE);
+ sSaveDialogCB = SaveDialogCB_ReturnSuccess;
+ }
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_ReturnSuccess(void)
+{
+ if (!IsSEPlaying() && SaveDialog_Wait60FramesOrAButtonHeld())
+ {
+ CloseSaveStatsWindow_();
+ return SAVECB_RETURN_OKAY;
+ }
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_WaitPrintErrorAndPlaySE(void)
+{
+ if (!RunTextPrinters_CheckPrinter0Active())
+ {
+ PlaySE(SE_BOO);
+ sSaveDialogCB = SaveDialogCB_ReturnError;
+ }
+ return SAVECB_RETURN_CONTINUE;
+}
+
+static u8 SaveDialogCB_ReturnError(void)
+{
+ if (!SaveDialog_Wait60FramesThenCheckAButtonHeld())
+ return SAVECB_RETURN_CONTINUE;
+ CloseSaveStatsWindow_();
+ return SAVECB_RETURN_ERROR;
+}
+
+static void VBlankCB_WhileSavingAfterLinkBattle(void)
+{
+ TransferPlttBuffer();
+}
+
+bool32 DoSetUpSaveAfterLinkBattle(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetVBlankCallback(NULL);
+ ScanlineEffect_Stop();
+ DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE);
+ DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
+ break;
+ case 1:
+ ResetSpriteData();
+ ResetTasks();
+ ResetPaletteFade();
+ ScanlineEffect_Clear();
+ break;
+ case 2:
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, sBGTemplates_AfterLinkSaveMessage, NELEMS(sBGTemplates_AfterLinkSaveMessage));
+ InitWindows(sWindowTemplates_AfterLinkSaveMessage);
+ TextWindow_SetStdFrame0_WithPal(0, 0x008, 0xF0);
+ break;
+ case 3:
+ ShowBg(0);
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ SetVBlankCallback(VBlankCB_WhileSavingAfterLinkBattle);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ break;
+ case 4:
+ return TRUE;
+ }
+ (*state)++;
+ return FALSE;
+}
+
+void CB2_SetUpSaveAfterLinkBattle(void)
+{
+ if (DoSetUpSaveAfterLinkBattle(&gMain.state))
+ {
+ CreateTask(task50_after_link_battle_save, 80);
+ SetMainCallback2(CB2_WhileSavingAfterLinkBattle);
+ }
+}
+
+static void CB2_WhileSavingAfterLinkBattle(void)
+{
+ RunTasks();
+ UpdatePaletteFade();
+}
+
+static void task50_after_link_battle_save(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ switch (data[0])
+ {
+ case 0:
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0xFF, NULL, 2, 1, 3);
+ DrawTextBorderOuter(0, 0x008, 0x0F);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ if (gWirelessCommType != 0 && InUnionRoom())
+ data[0] = 5;
+ else
+ data[0] = 1;
+ break;
+ case 1:
+ sub_804C1C0();
+ sub_80DA45C();
+ data[0] = 2;
+ break;
+ case 2:
+ if (sub_80DA4A0())
+ {
+ sav2_gender2_inplace_and_xFE();
+ data[0] = 3;
+ }
+ break;
+ case 3:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ data[0] = 4;
+ break;
+ case 4:
+ FreeAllWindowBuffers();
+ SetMainCallback2(gMain.savedCallback);
+ DestroyTask(taskId);
+ break;
+ case 5:
+ CreateTask(sub_80DA634, 5);
+ data[0] = 6;
+ break;
+ case 6:
+ if (!FuncIsActiveTask(sub_80DA634))
+ data[0] = 3;
+ break;
+ }
+ }
+}
+
+static void PrintSaveStats(void)
+{
+ u8 y;
+ u8 x;
+ sSaveStatsWindowId = AddWindow(&sSaveStatsWindowTemplate);
+ TextWindow_SetStdFrame0_WithPal(sSaveStatsWindowId, 0x21D, 0xD0);
+ DrawStdFrameWithCustomTileAndPalette(sSaveStatsWindowId, FALSE, 0x21D, 0x0D);
+ SaveStatToString(SAVE_STAT_LOCATION, gStringVar4, 8);
+ x = (u32)(112 - GetStringWidth(2, gStringVar4, -1)) / 2;
+ AddTextPrinterParameterized3(sSaveStatsWindowId, 2, x, 0, sTextColor_LocationHeader, -1, gStringVar4);
+ x = (u32)(112 - GetStringWidth(2, gStringVar4, -1)) / 2;
+ AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, 14, sTextColor_StatName, -1, gSaveStatName_Player);
+ SaveStatToString(SAVE_STAT_NAME, gStringVar4, 2);
+ Menu_PrintFormatIntlPlayerName(sSaveStatsWindowId, gStringVar4, 60, 14);
+ AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, 28, sTextColor_StatName, -1, gSaveStatName_Badges);
+ SaveStatToString(SAVE_STAT_BADGES, gStringVar4, 2);
+ AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, 28, sTextColor_StatValue, -1, gStringVar4);
+ y = 42;
+ if (FlagGet(FLAG_0x829) == TRUE)
+ {
+ AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, 42, sTextColor_StatName, -1, gSaveStatName_Pokedex);
+ SaveStatToString(SAVE_STAT_POKEDEX, gStringVar4, 2);
+ AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, 42, sTextColor_StatValue, -1, gStringVar4);
+ y = 56;
+ }
+ AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, y, sTextColor_StatName, -1, gSaveStatName_Time);
+ SaveStatToString(SAVE_STAT_TIME, gStringVar4, 2);
+ AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, y, sTextColor_StatValue, -1, gStringVar4);
+ CopyWindowToVram(sSaveStatsWindowId, 2);
+}
+
+static void CloseSaveStatsWindow(void)
+{
+ ClearStdWindowAndFrame(sSaveStatsWindowId, FALSE);
+ RemoveWindow(sSaveStatsWindowId);
+}
+
+static void CloseStartMenu(void)
+{
+ PlaySE(SE_SELECT);
+ ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE);
+ RemoveStartMenuWindow();
+ sub_80696C0();
+ ScriptContext2_Disable();
+}
+
+void AppendToList(u8 *list, u8 *cursor, u8 newEntry)
+{
+ list[*cursor] = newEntry;
+ (*cursor)++;
+}
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index 18da0997c..aa273073b 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -510,7 +510,7 @@ static void TeachyTvMainCallback(void)
ScheduleBgCopyTilemapToVram(1);
ScheduleBgCopyTilemapToVram(2);
ScheduleBgCopyTilemapToVram(3);
- sub_812B1E0(9); // help system something
+ HelpSystem_SetSomeVariable(9); // help system something
BlendPalettes(0xFFFFFFFF, 0x10, 0);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
SetVBlankCallback(TeachyTvVblankHandler);
@@ -736,7 +736,7 @@ static void TeachyTvOptionListController(u8 taskId)
{
input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow);
- if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != ReturnToBagFromKeyItem))
+ if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != CB2_BagMenuFromStartMenu))
{
PlaySE(SE_SELECT);
TeachyTvQuitBeginFade(taskId);
diff --git a/src/trade.c b/src/trade.c
index 742650e4a..ee28ff224 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -137,6 +137,7 @@ void sub_804C718(void)
SetMainCallback2(sub_804C728);
}
+#ifdef NONMATCHING
void sub_804C728(void)
{
int i;
@@ -319,6 +320,10 @@ void sub_804C728(void)
CreateSprite(&temp, xPos + gTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][0] + (i * 32), gTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][1], 1);
}
+ /*
+ * These three lines are a pain to match due to register alloc and
+ * pointer arithmetic misbehavior.
+ */
id = GetMultiplayerId();
id ^= 1;
width = GetStringWidth(1, gLinkPlayers[id].name, 0);
@@ -406,3 +411,915 @@ void sub_804C728(void)
BuildOamBuffer();
UpdatePaletteFade();
}
+#else
+NAKED
+void sub_804C728(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r8\n"
+ "\tpush {r7}\n"
+ "\tsub sp, 0x28\n"
+ "\tldr r1, _0804C74C @ =gMain\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r0, r1, r2\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r3, r1, 0\n"
+ "\tcmp r0, 0x16\n"
+ "\tbls _0804C742\n"
+ "\tb _0804CEE6\n"
+ "_0804C742:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804C750 @ =_0804C754\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_0804C74C: .4byte gMain\n"
+ "_0804C750: .4byte _0804C754\n"
+ "\t.align 2, 0\n"
+ "_0804C754:\n"
+ "\t.4byte _0804C7B0\n"
+ "\t.4byte _0804C7FC\n"
+ "\t.4byte _0804C8C8\n"
+ "\t.4byte _0804C8F4\n"
+ "\t.4byte _0804C950\n"
+ "\t.4byte _0804C9B0\n"
+ "\t.4byte _0804C9F0\n"
+ "\t.4byte _0804CA10\n"
+ "\t.4byte _0804CB50\n"
+ "\t.4byte _0804CB78\n"
+ "\t.4byte _0804CB9C\n"
+ "\t.4byte _0804CC30\n"
+ "\t.4byte _0804CC3E\n"
+ "\t.4byte _0804CD10\n"
+ "\t.4byte _0804CDE0\n"
+ "\t.4byte _0804CE20\n"
+ "\t.4byte _0804CE3A\n"
+ "\t.4byte _0804CE48\n"
+ "\t.4byte _0804CE5C\n"
+ "\t.4byte _0804CE7C\n"
+ "\t.4byte _0804CE9C\n"
+ "\t.4byte _0804CEB0\n"
+ "\t.4byte _0804CED0\n"
+ "_0804C7B0:\n"
+ "\tldr r4, _0804C7E8 @ =gUnknown_2031DA8\n"
+ "\tldr r0, _0804C7EC @ =0x000010f0\n"
+ "\tbl AllocZeroed\n"
+ "\tstr r0, [r4]\n"
+ "\tbl sub_804C600\n"
+ "\tldr r4, _0804C7F0 @ =gUnknown_2031C90\n"
+ "\tmovs r0, 0xE0\n"
+ "\tlsls r0, 4\n"
+ "\tbl AllocZeroed\n"
+ "\tstr r0, [r4]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r2, _0804C7F4 @ =gUnknown_2031C94\n"
+ "_0804C7CE:\n"
+ "\tlsls r1, r6, 8\n"
+ "\tldr r0, [r4]\n"
+ "\tadds r0, r1\n"
+ "\tstm r2!, {r0}\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0xD\n"
+ "\tble _0804C7CE\n"
+ "\tldr r1, _0804C7F8 @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804C7E8: .4byte gUnknown_2031DA8\n"
+ "_0804C7EC: .4byte 0x000010f0\n"
+ "_0804C7F0: .4byte gUnknown_2031C90\n"
+ "_0804C7F4: .4byte gUnknown_2031C94\n"
+ "_0804C7F8: .4byte gMain\n"
+ "_0804C7FC:\n"
+ "\tldr r2, _0804C864 @ =gPaletteFade\n"
+ "\tldrb r1, [r2, 0x8]\n"
+ "\tmovs r0, 0x7F\n"
+ "\tands r0, r1\n"
+ "\tstrb r0, [r2, 0x8]\n"
+ "\tmovs r6, 0\n"
+ "\tmovs r4, 0\n"
+ "_0804C80A:\n"
+ "\tmovs r0, 0x64\n"
+ "\tmuls r0, r6\n"
+ "\tldr r1, _0804C868 @ =gEnemyParty\n"
+ "\tadds r0, r1\n"
+ "\tstr r4, [sp]\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tstr r4, [sp, 0x8]\n"
+ "\tstr r4, [sp, 0xC]\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0x20\n"
+ "\tbl CreateMon\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x5\n"
+ "\tble _0804C80A\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804F5BC\n"
+ "\tmovs r0, 0\n"
+ "\tbl ShowBg\n"
+ "\tldr r0, _0804C86C @ =gReceivedRemoteLinkPlayers\n"
+ "\tldrb r2, [r0]\n"
+ "\tcmp r2, 0\n"
+ "\tbne _0804C8B4\n"
+ "\tldr r1, _0804C870 @ =gLinkType\n"
+ "\tldr r5, _0804C874 @ =0x00001122\n"
+ "\tadds r0, r5, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r0, _0804C878 @ =gUnknown_2031DA8\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0xA8\n"
+ "\tstrb r2, [r0]\n"
+ "\tldr r0, _0804C87C @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804C880\n"
+ "\tbl sub_800B1F4\n"
+ "\tbl OpenLink\n"
+ "\tbl sub_80FBB20\n"
+ "\tb _0804C892\n"
+ "\t.align 2, 0\n"
+ "_0804C864: .4byte gPaletteFade\n"
+ "_0804C868: .4byte gEnemyParty\n"
+ "_0804C86C: .4byte gReceivedRemoteLinkPlayers\n"
+ "_0804C870: .4byte gLinkType\n"
+ "_0804C874: .4byte 0x00001122\n"
+ "_0804C878: .4byte gUnknown_2031DA8\n"
+ "_0804C87C: .4byte gWirelessCommType\n"
+ "_0804C880:\n"
+ "\tbl OpenLink\n"
+ "\tldr r1, _0804C8A8 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "_0804C892:\n"
+ "\tldr r0, _0804C8AC @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804C89C\n"
+ "\tb _0804CEE6\n"
+ "_0804C89C:\n"
+ "\tldr r0, _0804C8B0 @ =sub_8081A90\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl CreateTask\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804C8A8: .4byte gMain\n"
+ "_0804C8AC: .4byte gWirelessCommType\n"
+ "_0804C8B0: .4byte sub_8081A90\n"
+ "_0804C8B4:\n"
+ "\tldr r0, _0804C8C4 @ =gMain\n"
+ "\tmovs r1, 0x87\n"
+ "\tlsls r1, 3\n"
+ "\tadds r0, r1\n"
+ "\tmovs r1, 0x4\n"
+ "\tstrb r1, [r0]\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804C8C4: .4byte gMain\n"
+ "_0804C8C8:\n"
+ "\tldr r2, _0804C8F0 @ =gUnknown_2031DA8\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0xA8\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r1, 0xA8\n"
+ "\tldrb r0, [r1]\n"
+ "\tcmp r0, 0xB\n"
+ "\tbhi _0804C8E2\n"
+ "\tb _0804CEE6\n"
+ "_0804C8E2:\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r1, r3, r2\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804C8F0: .4byte gUnknown_2031DA8\n"
+ "_0804C8F4:\n"
+ "\tbl GetLinkPlayerCount_2\n"
+ "\tadds r4, r0, 0\n"
+ "\tbl GetSavedPlayerCount\n"
+ "\tlsls r4, 24\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r4, r0\n"
+ "\tbcs _0804C908\n"
+ "\tb _0804CEE6\n"
+ "_0804C908:\n"
+ "\tbl IsLinkMaster\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804C940\n"
+ "\tldr r0, _0804C938 @ =gUnknown_2031DA8\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r1, 0xA8\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x1E\n"
+ "\tbhi _0804C928\n"
+ "\tb _0804CEE6\n"
+ "_0804C928:\n"
+ "\tbl CheckShouldAdvanceLinkState\n"
+ "\tldr r1, _0804C93C @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804C938: .4byte gUnknown_2031DA8\n"
+ "_0804C93C: .4byte gMain\n"
+ "_0804C940:\n"
+ "\tldr r1, _0804C94C @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804C94C: .4byte gMain\n"
+ "_0804C950:\n"
+ "\tldr r0, _0804C9A0 @ =gReceivedRemoteLinkPlayers\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _0804C95A\n"
+ "\tb _0804CEE6\n"
+ "_0804C95A:\n"
+ "\tbl IsLinkPlayerDataExchangeComplete\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _0804C968\n"
+ "\tb _0804CEE6\n"
+ "_0804C968:\n"
+ "\tbl sub_80FBB4C\n"
+ "\tbl CalculatePlayerPartyCount\n"
+ "\tldr r1, _0804C9A4 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804C9A8 @ =gUnknown_2031DA8\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0xA8\n"
+ "\tstrb r2, [r0]\n"
+ "\tldr r0, _0804C9AC @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804C992\n"
+ "\tb _0804CEE6\n"
+ "_0804C992:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_80FA484\n"
+ "\tbl sub_800AB9C\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804C9A0: .4byte gReceivedRemoteLinkPlayers\n"
+ "_0804C9A4: .4byte gMain\n"
+ "_0804C9A8: .4byte gUnknown_2031DA8\n"
+ "_0804C9AC: .4byte gWirelessCommType\n"
+ "_0804C9B0:\n"
+ "\tldr r0, _0804C9E0 @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804C9E8\n"
+ "\tbl IsRfuTaskFinished\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804C9C4\n"
+ "\tb _0804CEE6\n"
+ "_0804C9C4:\n"
+ "\tldr r1, _0804C9E4 @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tbl LoadWirelessStatusIndicatorSpriteGfx\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl CreateWirelessStatusIndicatorSprite\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804C9E0: .4byte gWirelessCommType\n"
+ "_0804C9E4: .4byte gMain\n"
+ "_0804C9E8:\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r1, r3, r2\n"
+ "\tb _0804CEC2\n"
+ "_0804C9F0:\n"
+ "\tbl shedinja_maker_maybe\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804C9FC\n"
+ "\tb _0804CEE6\n"
+ "_0804C9FC:\n"
+ "\tbl sub_804F9D8\n"
+ "\tldr r1, _0804CA0C @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CA0C: .4byte gMain\n"
+ "_0804CA10:\n"
+ "\tbl CalculateEnemyPartyCount\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r0, 0x50\n"
+ "\tmovs r1, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tldr r2, _0804CB2C @ =gUnknown_2031DA8\n"
+ "\tldr r0, [r2]\n"
+ "\tldr r1, _0804CB30 @ =gPlayerPartyCount\n"
+ "\tldrb r1, [r1]\n"
+ "\tadds r0, 0x36\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r2]\n"
+ "\tldr r1, _0804CB34 @ =gEnemyPartyCount\n"
+ "\tldrb r1, [r1]\n"
+ "\tadds r0, 0x37\n"
+ "\tstrb r1, [r0]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x36\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbge _0804CAA8\n"
+ "\tmov r8, r2\n"
+ "\tldr r7, _0804CB38 @ =gTradeMonSpriteCoords\n"
+ "_0804CA4A:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r4, r6, 0\n"
+ "\tmuls r4, r0\n"
+ "\tldr r0, _0804CB3C @ =gPlayerParty\n"
+ "\tadds r4, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x41\n"
+ "\tbl GetMonData\n"
+ "\tadds r5, r0, 0\n"
+ "\tlsls r5, 16\n"
+ "\tlsrs r5, 16\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetMonData\n"
+ "\tldrb r2, [r7]\n"
+ "\tlsls r2, 19\n"
+ "\tmovs r1, 0xE0\n"
+ "\tlsls r1, 12\n"
+ "\tadds r2, r1\n"
+ "\tasrs r2, 16\n"
+ "\tldrb r3, [r7, 0x1]\n"
+ "\tlsls r3, 19\n"
+ "\tldr r1, _0804CB40 @ =0xfff40000\n"
+ "\tadds r3, r1\n"
+ "\tasrs r3, 16\n"
+ "\tmovs r1, 0x1\n"
+ "\tstr r1, [sp]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tadds r0, r5, 0\n"
+ "\tldr r1, _0804CB44 @ =sub_809718C\n"
+ "\tbl CreateMonIcon\n"
+ "\tmov r2, r8\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0x28\n"
+ "\tadds r1, r6\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r7, 0x2\n"
+ "\tadds r6, 0x1\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x36\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tblt _0804CA4A\n"
+ "_0804CAA8:\n"
+ "\tmovs r6, 0\n"
+ "\tldr r1, _0804CB2C @ =gUnknown_2031DA8\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x37\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbge _0804CB20\n"
+ "\tldr r0, _0804CB38 @ =gTradeMonSpriteCoords\n"
+ "\tmov r8, r1\n"
+ "\tadds r7, r0, 0\n"
+ "\tadds r7, 0xC\n"
+ "_0804CABE:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r4, r6, 0\n"
+ "\tmuls r4, r0\n"
+ "\tldr r0, _0804CB48 @ =gEnemyParty\n"
+ "\tadds r4, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x41\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetMonData\n"
+ "\tadds r5, r0, 0\n"
+ "\tlsls r5, 16\n"
+ "\tlsrs r5, 16\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetMonData\n"
+ "\tldrb r2, [r7]\n"
+ "\tlsls r2, 19\n"
+ "\tmovs r3, 0xE0\n"
+ "\tlsls r3, 12\n"
+ "\tadds r2, r3\n"
+ "\tasrs r2, 16\n"
+ "\tldrb r3, [r7, 0x1]\n"
+ "\tlsls r3, 19\n"
+ "\tldr r1, _0804CB40 @ =0xfff40000\n"
+ "\tadds r3, r1\n"
+ "\tasrs r3, 16\n"
+ "\tmovs r1, 0x1\n"
+ "\tstr r1, [sp]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tadds r0, r5, 0\n"
+ "\tldr r1, _0804CB44 @ =sub_809718C\n"
+ "\tbl CreateMonIcon\n"
+ "\tmov r2, r8\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0x2E\n"
+ "\tadds r1, r6\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r7, 0x2\n"
+ "\tadds r6, 0x1\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x37\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tblt _0804CABE\n"
+ "_0804CB20:\n"
+ "\tldr r1, _0804CB4C @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CB2C: .4byte gUnknown_2031DA8\n"
+ "_0804CB30: .4byte gPlayerPartyCount\n"
+ "_0804CB34: .4byte gEnemyPartyCount\n"
+ "_0804CB38: .4byte gTradeMonSpriteCoords\n"
+ "_0804CB3C: .4byte gPlayerParty\n"
+ "_0804CB40: .4byte 0xfff40000\n"
+ "_0804CB44: .4byte sub_809718C\n"
+ "_0804CB48: .4byte gEnemyParty\n"
+ "_0804CB4C: .4byte gMain\n"
+ "_0804CB50:\n"
+ "\tbl LoadHeldItemIcons\n"
+ "\tldr r0, _0804CB70 @ =gUnknown_2031DA8\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x36\n"
+ "\tadds r1, 0x28\n"
+ "\tmovs r2, 0\n"
+ "\tbl sub_812256C\n"
+ "\tldr r1, _0804CB74 @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CB70: .4byte gUnknown_2031DA8\n"
+ "_0804CB74: .4byte gMain\n"
+ "_0804CB78:\n"
+ "\tldr r0, _0804CB94 @ =gUnknown_2031DA8\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x36\n"
+ "\tadds r1, 0x28\n"
+ "\tmovs r2, 0x1\n"
+ "\tbl sub_812256C\n"
+ "\tldr r1, _0804CB98 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CB94: .4byte gUnknown_2031DA8\n"
+ "_0804CB98: .4byte gMain\n"
+ "_0804CB9C:\n"
+ "\tldr r0, _0804CC14 @ =gSaveBlock2Ptr\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r6, _0804CC18 @ =gUnknown_2031C94\n"
+ "\tldr r1, [r6]\n"
+ "\tldr r5, _0804CC1C @ =gDecompressionBuffer\n"
+ "\tstr r5, [sp]\n"
+ "\tmovs r4, 0x3\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl sub_808BEB4\n"
+ "\tbl GetMultiplayerId\n"
+ "\tlsls r0, 24\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 17\n"
+ "\teors r1, r0\n"
+ "\tlsrs r1, 24\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804CC20 @ =gLinkPlayers + 8\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, [r6, 0xC]\n"
+ "\tstr r5, [sp]\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl sub_808BEB4\n"
+ "\tldr r4, _0804CC24 @ =gUnknown_8261ECC\n"
+ "\tldr r0, [r4]\n"
+ "\tldr r1, [r6, 0x18]\n"
+ "\tstr r5, [sp]\n"
+ "\tmovs r2, 0x2\n"
+ "\tstr r2, [sp, 0x4]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl sub_808BEB4\n"
+ "\tldr r0, [r4, 0x4]\n"
+ "\tldr r1, [r6, 0x20]\n"
+ "\tmovs r2, 0x18\n"
+ "\tbl sub_804F728\n"
+ "\tldr r1, _0804CC28 @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804CC2C @ =gUnknown_2031DA8\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0xA8\n"
+ "\tstrb r2, [r0]\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804CC14: .4byte gSaveBlock2Ptr\n"
+ "_0804CC18: .4byte gUnknown_2031C94\n"
+ "_0804CC1C: .4byte gDecompressionBuffer\n"
+ "_0804CC20: .4byte gLinkPlayers + 8\n"
+ "_0804CC24: .4byte gUnknown_8261ECC\n"
+ "_0804CC28: .4byte gMain\n"
+ "_0804CC2C: .4byte gUnknown_2031DA8\n"
+ "_0804CC30:\n"
+ "\tbl sub_804F610\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804CC3C\n"
+ "\tb _0804CEE6\n"
+ "_0804CC3C:\n"
+ "\tb _0804CEBA\n"
+ "_0804CC3E:\n"
+ "\tldr r0, _0804CCFC @ =gSaveBlock2Ptr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetStringWidth\n"
+ "\tadds r1, r0, 0\n"
+ "\tmovs r0, 0x38\n"
+ "\tsubs r0, r1\n"
+ "\tlsrs r1, r0, 31\n"
+ "\tadds r0, r1\n"
+ "\tmovs r6, 0\n"
+ "\tadd r5, sp, 0x10\n"
+ "\tldr r3, _0804CD00 @ =gTradeUnknownSpriteCoords\n"
+ "\tmov r8, r3\n"
+ "\tasrs r0, 1\n"
+ "\tldrb r7, [r3, 0x4]\n"
+ "\tadds r4, r0, r7\n"
+ "_0804CC62:\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tldr r0, _0804CD04 @ =gUnknown_8261CC8\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldrh r0, [r5]\n"
+ "\tadds r0, r6\n"
+ "\tstrh r0, [r5]\n"
+ "\tlsls r1, r4, 16\n"
+ "\tasrs r1, 16\n"
+ "\tadd r0, sp, 0x10\n"
+ "\tmov r3, r8\n"
+ "\tldrb r2, [r3, 0x5]\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tadds r4, 0x20\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x2\n"
+ "\tble _0804CC62\n"
+ "\tbl GetMultiplayerId\n"
+ "\tlsls r0, 24\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 17\n"
+ "\teors r1, r0\n"
+ "\tlsrs r1, 24\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804CD08 @ =gLinkPlayers + 8\n"
+ "\tadds r1, r0, r1\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetStringWidth\n"
+ "\tadds r1, r0, 0\n"
+ "\tmovs r0, 0x38\n"
+ "\tsubs r0, r1\n"
+ "\tlsrs r1, r0, 31\n"
+ "\tadds r0, r1\n"
+ "\tmovs r6, 0\n"
+ "\tadd r5, sp, 0x10\n"
+ "\tldr r7, _0804CD00 @ =gTradeUnknownSpriteCoords\n"
+ "\tmov r8, r7\n"
+ "\tasrs r0, 1\n"
+ "\tmov r1, r8\n"
+ "\tldrb r1, [r1, 0x6]\n"
+ "\tadds r4, r0, r1\n"
+ "_0804CCC6:\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tldr r0, _0804CD04 @ =gUnknown_8261CC8\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tadds r0, r6, 0x3\n"
+ "\tldrh r1, [r5]\n"
+ "\tadds r0, r1\n"
+ "\tstrh r0, [r5]\n"
+ "\tlsls r1, r4, 16\n"
+ "\tasrs r1, 16\n"
+ "\tadd r0, sp, 0x10\n"
+ "\tmov r3, r8\n"
+ "\tldrb r2, [r3, 0x7]\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tadds r4, 0x20\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x2\n"
+ "\tble _0804CCC6\n"
+ "\tldr r1, _0804CD0C @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CCFC: .4byte gSaveBlock2Ptr\n"
+ "_0804CD00: .4byte gTradeUnknownSpriteCoords\n"
+ "_0804CD04: .4byte gUnknown_8261CC8\n"
+ "_0804CD08: .4byte gLinkPlayers + 8\n"
+ "_0804CD0C: .4byte gMain\n"
+ "_0804CD10:\n"
+ "\tldr r4, _0804CDCC @ =gUnknown_8261CC8\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tadds r0, r4, 0\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r5,r7}\n"
+ "\tstm r1!, {r2,r5,r7}\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tadds r0, r1, 0\n"
+ "\tldrh r0, [r0]\n"
+ "\tadds r0, 0x6\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r0, r1, 0\n"
+ "\tmovs r1, 0xD7\n"
+ "\tmovs r2, 0x97\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tadd r0, sp, 0x10\n"
+ "\tldm r4!, {r3,r5,r7}\n"
+ "\tstm r0!, {r3,r5,r7}\n"
+ "\tldm r4!, {r1-r3}\n"
+ "\tstm r0!, {r1-r3}\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tadds r0, r1, 0\n"
+ "\tldrh r0, [r0]\n"
+ "\tadds r0, 0x7\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r0, r1, 0\n"
+ "\tmovs r1, 0xF7\n"
+ "\tmovs r2, 0x97\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tmovs r6, 0\n"
+ "\tadd r4, sp, 0x10\n"
+ "\tmovs r5, 0xC0\n"
+ "\tlsls r5, 13\n"
+ "_0804CD5C:\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tldr r0, _0804CDCC @ =gUnknown_8261CC8\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tadds r0, r6, 0\n"
+ "\tadds r0, 0x8\n"
+ "\tldrh r7, [r4]\n"
+ "\tadds r0, r7\n"
+ "\tstrh r0, [r4]\n"
+ "\tasrs r1, r5, 16\n"
+ "\tadd r0, sp, 0x10\n"
+ "\tmovs r2, 0x96\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tmovs r0, 0x80\n"
+ "\tlsls r0, 14\n"
+ "\tadds r5, r0\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x5\n"
+ "\tble _0804CD5C\n"
+ "\tldr r0, _0804CDD0 @ =gUnknown_8261CB0\n"
+ "\tldr r2, _0804CDD4 @ =gTradeMonSpriteCoords\n"
+ "\tldrb r1, [r2]\n"
+ "\tlsls r1, 19\n"
+ "\tmovs r3, 0x80\n"
+ "\tlsls r3, 14\n"
+ "\tadds r1, r3\n"
+ "\tasrs r1, 16\n"
+ "\tldrb r2, [r2, 0x1]\n"
+ "\tlsls r2, 3\n"
+ "\tmovs r3, 0x2\n"
+ "\tbl CreateSprite\n"
+ "\tldr r2, _0804CDD8 @ =gUnknown_2031DA8\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0x34\n"
+ "\tmovs r3, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x35\n"
+ "\tstrb r3, [r0]\n"
+ "\tldr r1, _0804CDDC @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tmovs r0, 0\n"
+ "\tbl rbox_fill_rectangle\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804CDCC: .4byte gUnknown_8261CC8\n"
+ "_0804CDD0: .4byte gUnknown_8261CB0\n"
+ "_0804CDD4: .4byte gTradeMonSpriteCoords\n"
+ "_0804CDD8: .4byte gUnknown_2031DA8\n"
+ "_0804CDDC: .4byte gMain\n"
+ "_0804CDE0:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804F748\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804F020\n"
+ "\tldr r2, _0804CE14 @ =gUnknown_2031DA8\n"
+ "\tldr r0, [r2]\n"
+ "\tmovs r1, 0\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r2]\n"
+ "\tstrb r1, [r0, 0x1]\n"
+ "\tbl sub_804D764\n"
+ "\tldr r1, _0804CE18 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804CE1C @ =0x00000111\n"
+ "\tbl PlayBGM\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804CE14: .4byte gUnknown_2031DA8\n"
+ "_0804CE18: .4byte gMain\n"
+ "_0804CE1C: .4byte 0x00000111\n"
+ "_0804CE20:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804F748\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804F020\n"
+ "\tldr r1, _0804CE44 @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "_0804CE3A:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804D694\n"
+ "\tb _0804CEBA\n"
+ "\t.align 2, 0\n"
+ "_0804CE44: .4byte gMain\n"
+ "_0804CE48:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804D694\n"
+ "\tldr r1, _0804CE58 @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CE58: .4byte gMain\n"
+ "_0804CE5C:\n"
+ "\tmovs r0, 0x1\n"
+ "\tnegs r0, r0\n"
+ "\tmovs r1, 0\n"
+ "\tstr r1, [sp]\n"
+ "\tmovs r2, 0x10\n"
+ "\tmovs r3, 0\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "\tldr r1, _0804CE78 @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CE78: .4byte gMain\n"
+ "_0804CE7C:\n"
+ "\tmovs r1, 0x82\n"
+ "\tlsls r1, 5\n"
+ "\tmovs r0, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl sub_804D694\n"
+ "\tldr r1, _0804CE98 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CE98: .4byte gMain\n"
+ "_0804CE9C:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804F890\n"
+ "\tldr r1, _0804CEAC @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CEAC: .4byte gMain\n"
+ "_0804CEB0:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804F890\n"
+ "\tbl sub_804F964\n"
+ "_0804CEBA:\n"
+ "\tldr r1, _0804CECC @ =gMain\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r1, r2\n"
+ "_0804CEC2:\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804CECC: .4byte gMain\n"
+ "_0804CED0:\n"
+ "\tldr r0, _0804CF08 @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804CEE6\n"
+ "\tldr r0, _0804CF0C @ =sub_804DFF0\n"
+ "\tstr r0, [r3]\n"
+ "\tldr r0, _0804CF10 @ =sub_804D638\n"
+ "\tbl SetMainCallback2\n"
+ "_0804CEE6:\n"
+ "\tbl RunTextPrinters\n"
+ "\tbl RunTasks\n"
+ "\tbl AnimateSprites\n"
+ "\tbl BuildOamBuffer\n"
+ "\tbl UpdatePaletteFade\n"
+ "\tadd sp, 0x28\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804CF08: .4byte gPaletteFade\n"
+ "_0804CF0C: .4byte sub_804DFF0\n"
+ "_0804CF10: .4byte sub_804D638");
+}
+#endif //NONMATCHING
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index 17f6b9e09..9512e73d1 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -1278,7 +1278,7 @@ void sub_815E720(void)
sub_815EC0C();
windowId = AddWindow(gUnknown_847A218);
- sub_80F6E9C();
+ LoadStdWindowFrameGfx();
DrawStdWindowFrame(windowId, FALSE);
AddTextPrinterParameterized(windowId, 2, gUnknown_83FE982, 0x4A, 0, 0xFF, NULL);
diff --git a/sym_bss.txt b/sym_bss.txt
index a2cf9ccd8..a8c5ba44c 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -53,19 +53,13 @@ gUnknown_3000E9C: @ 3000E9C
gUnknown_3000EA0: @ 3000EA0
.space 0x8
+ .align 2
.include "src/script.o"
-
.align 2
-gUnknown_3000FA4: @ 3000FA4
- .space 0x4
-
-gUnknown_3000FA8: @ 3000FA8
- .space 0x1
-
-gUnknown_3000FA9: @ 3000FA9
- .space 0x3
-
+ .include "src/start_menu.o"
+ .align 2
.include "src/tileset_anims.o"
+ .align 2
.include "src/sound.o"
.align 2
@@ -111,9 +105,9 @@ gUnknown_3002008: @ 3002008
gUnknown_3002018: @ 3002018
.space 0x4
- .include "src/quest_log.o"
+ .include "src/quest_log.o"
- .align 2
+ .align 2
gUnknown_3002024: @ 3002024
.space 0x4
diff --git a/sym_ewram.txt b/sym_ewram.txt
index f821f7170..0633da5bf 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -12,7 +12,7 @@
.align 2
.include "src/sprite.o"
.align 2
- .include "src/string_util.o"
+ .include "src/string_util.o"
.align 2
.include "src/link.o"
.space 8
@@ -44,10 +44,10 @@ gBattle_BG3_X: @ 2022980
gBattle_BG3_Y: @ 2022982
.space 0x2
-gUnknown_2022984: @ 2022984
+gBattle_WIN0H: @ 2022984
.space 0x2
-gUnknown_2022986: @ 2022986
+gBattle_WIN0V: @ 2022986
.space 0x2
gUnknown_2022988: @ 2022988
@@ -510,9 +510,9 @@ gUnknown_203709C: @ 203709C
.space 0x4
.include "src/script.o"
- .include "src/scrcmd.o"
+ .include "src/scrcmd.o"
- .align 2
+ .align 2
gSpecialVar_0x8000: @ 20370B8
.space 0x2
@@ -576,33 +576,13 @@ gUnknown_20370DE: @ 20370DE
gUnknown_20370E0: @ 20370E0
.space 0x10
-gUnknown_20370F0: @ 20370F0
- .space 0x4
-
-gUnknown_20370F4: @ 20370F4
- .space 0x1
-
-gUnknown_20370F5: @ 20370F5
- .space 0x1
-
-gUnknown_20370F6: @ 20370F6
- .space 0x9
-
-gUnknown_20370FF: @ 20370FF
- .space 0x1
-
-gUnknown_2037100: @ 2037100
- .space 0x1
-
-gUnknown_2037101: @ 2037101
- .space 0x3
-
-gUnknown_2037104: @ 2037104
- .space 0x4
-
+ .align 2
+ .include "src/start_menu.o"
+ .align 2
.include "src/tileset_anims.o"
+ .align 2
.include "src/palette.o"
-
+ .align 2
.include "src/sound.o"
.align 2
@@ -621,7 +601,7 @@ gUnknown_2037EE0: @ 2037EE0
gAnimScriptActive: @ 2037EE1
.space 0x1
-gUnknown_2037EE2: @ 2037EE2
+gAnimVisualTaskCount: @ 2037EE2
.space 0x1
gUnknown_2037EE3: @ 2037EE3
@@ -669,16 +649,13 @@ gBattleAnimAttacker: @ 2037F1A
gBattleAnimTarget: @ 2037F1B
.space 0x1
-gUnknown_2037F1C: @ 2037F1C
+gAnimBattlerSpecies: @ 2037F1C
.space 0x8
gUnknown_2037F24: @ 2037F24
.space 0x4
-gUnknown_2037F28: @ 2037F28
- .space 0x8
-
- .align 2
+ .include "src/battle_anim_mons.o"
.include "src/title_screen.o"
.align 2
@@ -881,15 +858,11 @@ gUnknown_203998C: @ 203998C
gUnknown_203999C: @ 203999C
.space 0x8
-gUnknown_20399A4: @ 20399A4
- .space 0x10
-
-gUnknown_20399B4: @ 20399B4
- .space 0x4
-
-gUnknown_20399B8: @ 20399B8
- .space 0x4
+ .include "src/dragon.o"
+ .include "src/battle_anim_utility_funcs.o"
+ .include "src/battle_intro.o"
+ .align 2
gUnknown_20399BC: @ 20399BC
.space 0x4
@@ -985,18 +958,9 @@ gUnknown_203AAB4: @ 203AAB4
gUnknown_203AAB8: @ 203AAB8
.space 0x4
-gUnknown_203AABC: @ 203AABC
- .space 0x4
-
-gUnknown_203AAC0: @ 203AAC0
- .space 0x4
-
-gUnknown_203AAC4: @ 203AAC4
- .space 0x2
-
-gUnknown_203AAC6: @ 203AAC6
- .space 0xE
-
+ .align 2
+ .include "src/player_pc.o"
+ .align 2
.include "src/intro.o"
.align 2
diff --git a/tools/br_ips/br_ips.c b/tools/br_ips/br_ips.c
index 64c454a3e..440705cab 100644
--- a/tools/br_ips/br_ips.c
+++ b/tools/br_ips/br_ips.c
@@ -53,7 +53,7 @@ static int getline(char ** lineptr, size_t * n, FILE * stream) {
static void getIncbinsFromFile(hunk_t ** hunks, size_t * num, size_t * maxnum, const char * fname, char ** strbuf, size_t * buffersize) {
// Recursively find incbinned segments and encode them as hunks.
FILE * file = fopen(fname, "r");
- if (file == NULL) FATAL_ERROR("unable to open file \"%s\" for reading\n", fname);
+ if (file == NULL) return;
hunk_t * data = *hunks;
size_t nhunks = *num;
size_t maxnhunks = *maxnum;