diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-14 10:41:27 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-14 10:46:04 -0400 |
commit | b8fec3d9f617ec9a764bb56804c526ff7449631f (patch) | |
tree | 2e84d0bf6107a15ebcb94a23c3158e2bc6382f6f | |
parent | 9fe74ac590f75a0571de8ebcd499fdf892419328 (diff) | |
parent | 8efae5c807bf6b27f5c90bfb0c5887dbde24f10d (diff) |
Merge branch 'master' into trade
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 @@ -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 @@ -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 Binary files differindex b1ef4e9dc..b4ea36d11 100644 --- a/baserom.ips +++ b/baserom.ips 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; @@ -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 = ®_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 = ®_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 = ®_BG1VOFS; + else + scanlineParams.dmaDest = ®_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 = ®_BG1HOFS; + task->data[2] = gBattle_BG1_X; + } + else + { + sp.dmaDest = ®_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 = ®_BG1HOFS; + } + else + { + bgX = gBattle_BG2_X; + scanlineParams.dmaDest = ®_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 = ®_BG1HOFS; + } + else + { + task->data[10] = gBattle_BG2_X; + scanlineParams.dmaDest = ®_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; |