@@ -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 :=
|
||||
|
||||
+20
-20
@@ -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
|
||||
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
|
||||
|
||||
|
||||
+53
-53
@@ -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
|
||||
|
||||
+161
-161
File diff suppressed because it is too large
Load Diff
+116
-116
@@ -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]
|
||||
|
||||
+149
-149
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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.
|
||||
+22
-22
@@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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.
|
||||
-2323
File diff suppressed because it is too large
Load Diff
-835
@@ -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.
|
||||
+30
-30
@@ -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]
|
||||
|
||||
+38
-38
@@ -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
|
||||
|
||||
|
||||
+26
-26
@@ -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]
|
||||
|
||||
-2945
File diff suppressed because it is too large
Load Diff
-4054
File diff suppressed because it is too large
Load Diff
-1787
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
-1978
File diff suppressed because it is too large
Load Diff
+47
-11
@@ -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.
|
||||
|
||||
+8
-8
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
-2180
File diff suppressed because it is too large
Load Diff
-1558
File diff suppressed because it is too large
Load Diff
+8
-8
@@ -9300,7 +9300,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]
|
||||
@@ -9324,7 +9324,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
|
||||
@@ -10839,7 +10839,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
|
||||
@@ -10906,7 +10906,7 @@ _08052070:
|
||||
b _080522AC
|
||||
.align 2, 0
|
||||
_0805211C: .4byte gSprites
|
||||
_08052120: .4byte gUnknown_82349CC
|
||||
_08052120: .4byte gMonFrontPicCoords
|
||||
_08052124: .4byte 0x000fffff
|
||||
_08052128:
|
||||
movs r1, 0xAA
|
||||
@@ -11476,7 +11476,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]
|
||||
@@ -11500,7 +11500,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
|
||||
@@ -13064,7 +13064,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
|
||||
@@ -13131,7 +13131,7 @@ _080534CC:
|
||||
b _08053708
|
||||
.align 2, 0
|
||||
_08053578: .4byte gSprites
|
||||
_0805357C: .4byte gUnknown_82349CC
|
||||
_0805357C: .4byte gMonFrontPicCoords
|
||||
_08053580: .4byte 0x000fffff
|
||||
_08053584:
|
||||
movs r1, 0xAA
|
||||
|
||||
+32
-32
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+2
-2
@@ -55,7 +55,7 @@ gUnknown_823499C:: @ 823499C
|
||||
gUnknown_82349BC:: @ 82349BC
|
||||
.incbin "baserom.gba", 0x2349BC, 0x10
|
||||
|
||||
gUnknown_82349CC:: @ 82349CC
|
||||
gMonFrontPicCoords:: @ 82349CC
|
||||
.incbin "baserom.gba", 0x2349CC, 0x6E0
|
||||
|
||||
gMonFrontPicTable:: @ 82350AC
|
||||
@@ -64,7 +64,7 @@ gMonFrontPicTable:: @ 82350AC
|
||||
gUnknown_8235194:: @ 8235194
|
||||
.incbin "baserom.gba", 0x235194, 0xCD8
|
||||
|
||||
gUnknown_8235E6C:: @ 8235E6C
|
||||
gMonBackPicCoords:: @ 8235E6C
|
||||
.incbin "baserom.gba", 0x235E6C, 0x6E0
|
||||
|
||||
gMonBackPicTable:: @ 823654C
|
||||
|
||||
+10
-53
@@ -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
|
||||
.incbin "baserom.gba", 0x3E65A4, 0x544
|
||||
|
||||
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
|
||||
|
||||
gUnknown_83E7CD4:: @ 83E7CD4
|
||||
.incbin "baserom.gba", 0x3E7CD4, 0x28
|
||||
.section .rodata.83E7CFC
|
||||
|
||||
gUnknown_83E7CFC:: @ 83E7CFC
|
||||
.incbin "baserom.gba", 0x3E7CFC, 0x14
|
||||
|
||||
+15
-15
@@ -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
|
||||
|
||||
@@ -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
|
||||
+1
-4
@@ -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;
|
||||
|
||||
+253
-51
@@ -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);
|
||||
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_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
|
||||
// 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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
+31
-1
@@ -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[];
|
||||
|
||||
@@ -18,11 +18,6 @@ struct LinkPlayerMapObject
|
||||
u8 mode;
|
||||
};
|
||||
|
||||
struct UCoords32
|
||||
{
|
||||
u32 x, y;
|
||||
};
|
||||
|
||||
struct CreditsOverworldCmd
|
||||
{
|
||||
s16 unk_0;
|
||||
|
||||
@@ -16,5 +16,6 @@ u16 sub_8096FD4(u16);
|
||||
u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32);
|
||||
void sub_8097070(struct Sprite *);
|
||||
u16 GetUnownLetterByPersonality(u32 personality);
|
||||
u8 UpdateMonIconFrame(struct Sprite *sprite);
|
||||
|
||||
#endif // GUARD_POKEMON_ICON_H
|
||||
|
||||
@@ -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
|
||||
@@ -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);
|
||||
|
||||
+26
-12
@@ -111,7 +111,7 @@ SECTIONS {
|
||||
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);
|
||||
@@ -161,16 +161,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);
|
||||
@@ -200,7 +201,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);
|
||||
@@ -412,6 +413,7 @@ SECTIONS {
|
||||
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);
|
||||
@@ -421,6 +423,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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
+40
-42
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
+921
@@ -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)
|
||||
{
|
||||
u8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? 1 : 0;
|
||||
|
||||
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)
|
||||
{
|
||||
u8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? 1 : 0;
|
||||
|
||||
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);
|
||||
}
|
||||
+2
-2
@@ -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
|
||||
{
|
||||
|
||||
+431
@@ -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);
|
||||
}
|
||||
+1289
File diff suppressed because it is too large
Load Diff
+1484
File diff suppressed because it is too large
Load Diff
+724
@@ -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];
|
||||
}
|
||||
}
|
||||
+916
@@ -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);
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
+1083
File diff suppressed because it is too large
Load Diff
+830
@@ -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);
|
||||
}
|
||||
}
|
||||
+9
-16
@@ -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
|
||||
@@ -621,7 +621,7 @@ gUnknown_2037EE0: @ 2037EE0
|
||||
gAnimScriptActive: @ 2037EE1
|
||||
.space 0x1
|
||||
|
||||
gUnknown_2037EE2: @ 2037EE2
|
||||
gAnimVisualTaskCount: @ 2037EE2
|
||||
.space 0x1
|
||||
|
||||
gUnknown_2037EE3: @ 2037EE3
|
||||
@@ -669,16 +669,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 +878,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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user