summaryrefslogtreecommitdiff
path: root/battle/anim_commands.asm
diff options
context:
space:
mode:
authorRemy Oukaour <remy.oukaour@gmail.com>2017-12-26 17:47:05 -0500
committerRemy Oukaour <remy.oukaour@gmail.com>2017-12-26 17:47:05 -0500
commitb5417fafec7dd37cb4be391f3bd3d4541a2a381e (patch)
treea4e7d08afb2e862186a138e82c8ef4785d82786d /battle/anim_commands.asm
parent2f98c2032fd47ada3484bfc37d590992f286d3d4 (diff)
Split battle/ into data/ and engine/ components
Diffstat (limited to 'battle/anim_commands.asm')
-rw-r--r--battle/anim_commands.asm1515
1 files changed, 0 insertions, 1515 deletions
diff --git a/battle/anim_commands.asm b/battle/anim_commands.asm
deleted file mode 100644
index 78786f516..000000000
--- a/battle/anim_commands.asm
+++ /dev/null
@@ -1,1515 +0,0 @@
-; Battle animation command interpreter.
-
-
-PlayBattleAnim: ; cc0d6
-
- ld a, [rSVBK]
- push af
-
- ld a, 5
- ld [rSVBK], a
-
- call _PlayBattleAnim
-
- pop af
- ld [rSVBK], a
- ret
-; cc0e4
-
-_PlayBattleAnim: ; cc0e4
-
- ld c, 6
-.wait
- call BattleAnimDelayFrame
- dec c
- jr nz, .wait
-
- call BattleAnimAssignPals
- call BattleAnimRequestPals
- call BattleAnimDelayFrame
-
- ld c, 1
- ld a, [rKEY1]
- bit 7, a
- jr nz, .asm_cc0ff
- ld c, 3
-
-.asm_cc0ff
- ld hl, hVBlank
- ld a, [hl]
- push af
-
- ld [hl], c
- call BattleAnimRunScript
-
- pop af
- ld [hVBlank], a
-
- ld a, $1
- ld [hBGMapMode], a
-
- call BattleAnimDelayFrame
- call BattleAnimDelayFrame
- call BattleAnimDelayFrame
- call WaitSFX
- ret
-; cc11c
-
-BattleAnimRunScript: ; cc11c
-
- ld a, [FXAnimID + 1]
- and a
- jr nz, .hi_byte
-
- farcall CheckBattleScene
- jr c, .disabled
-
- call BattleAnimClearHud
- call RunBattleAnimScript
-
- call BattleAnimAssignPals
- call BattleAnimRequestPals
-
- xor a
- ld [hSCX], a
- ld [hSCY], a
- call BattleAnimDelayFrame
- call BattleAnimRestoreHuds
-
-.disabled
- ld a, [wNumHits]
- and a
- jr z, .done
-
- ld l, a
- ld h, 0
- ld de, ANIM_MISS
- add hl, de
- ld a, l
- ld [FXAnimID], a
- ld a, h
- ld [FXAnimID + 1], a
-
-.hi_byte
- call WaitSFX
- call PlayHitSound
- call RunBattleAnimScript
-
-.done
- call BattleAnim_RevertPals
- ret
-; cc163
-
-RunBattleAnimScript: ; cc163
-
- call ClearBattleAnims
-
-.playframe
- call RunBattleAnimCommand
- call _ExecuteBGEffects
- call BattleAnim_UpdateOAM_All
- call PushLYOverrides
- call BattleAnimRequestPals
-
-; Speed up Rollout's animation.
- ld a, [FXAnimID + 1]
- or a
- jr nz, .not_rollout
-
- ld a, [FXAnimID]
- cp ROLLOUT
- jr nz, .not_rollout
-
- ld a, $2e
- ld b, 5
- ld de, 4
- ld hl, ActiveBGEffects
-.find
- cp [hl]
- jr z, .done
- add hl, de
- dec b
- jr nz, .find
-
-.not_rollout
- call BattleAnimDelayFrame
-
-.done
- ld a, [BattleAnimFlags]
- bit 0, a
- jr z, .playframe
-
- call BattleAnim_ClearCGB_OAMFlags
- ret
-; cc1a1
-
-BattleAnimClearHud: ; cc1a1
-
- call BattleAnimDelayFrame
- call WaitTop
- call ClearActorHud
- ld a, $1
- ld [hBGMapMode], a
- call BattleAnimDelayFrame
- call BattleAnimDelayFrame
- call BattleAnimDelayFrame
- call WaitTop
- ret
-; cc1bb
-
-BattleAnimRestoreHuds: ; cc1bb
-
- call BattleAnimDelayFrame
- call WaitTop
-
- ld a, [rSVBK]
- push af
- ld a, $1
- ld [rSVBK], a
-
- ld hl, UpdateBattleHuds
- ld a, BANK(UpdatePlayerHUD)
- rst FarCall ; Why not "call UpdateBattleHuds"?
-
- pop af
- ld [rSVBK], a
-
- ld a, $1
- ld [hBGMapMode], a
- call BattleAnimDelayFrame
- call BattleAnimDelayFrame
- call BattleAnimDelayFrame
- call WaitTop
- ret
-; cc1e2
-
-BattleAnimRequestPals: ; cc1e2
-
- ld a, [hCGB]
- and a
- ret z
-
- ld a, [rBGP]
- ld b, a
- ld a, [wBGP]
- cp b
- call nz, BattleAnim_SetBGPals
-
- ld a, [rOBP0]
- ld b, a
- ld a, [wOBP0]
- cp b
- call nz, BattleAnim_SetOBPals
- ret
-; cc1fb
-
-BattleAnimDelayFrame: ; cc1fb
-; Like DelayFrame but wastes battery life.
-
- ld a, 1
- ld [VBlankOccurred], a
-.wait
- ld a, [VBlankOccurred]
- and a
- jr nz, .wait
- ret
-; cc207
-
-ClearActorHud: ; cc207
-
- ld a, [hBattleTurn]
- and a
- jr z, .player
-
- hlcoord 1, 0
- lb bc, 4, 10
- call ClearBox
- ret
-
-.player
- hlcoord 9, 7
- lb bc, 5, 11
- call ClearBox
- ret
-; cc220
-
-Functioncc220: ; cc220
-; Appears to be unused.
- xor a
- ld [hBGMapMode], a
- ld a, LOW(VBGMap0 tile $28)
- ld [hBGMapAddress], a
- ld a, HIGH(VBGMap0 tile $28)
- ld [hBGMapAddress + 1], a
- call WaitBGMap2
- ld a, $60
- ld [hWY], a
- xor a ; LOW(VBGMap0)
- ld [hBGMapAddress], a
- ld a, HIGH(VBGMap0)
- ld [hBGMapAddress + 1], a
- call BattleAnimDelayFrame
- ret
-; cc23d
-
-
-BattleAnim_ClearCGB_OAMFlags: ; cc23d
-
- ld a, [BattleAnimFlags]
- bit 3, a
- jr z, .delete
-
- ld hl, Sprites + 3
- ld c, (SpritesEnd - Sprites) / 4
-.loop
- ld a, [hl]
- and $f0
- ld [hli], a
- inc hl
- inc hl
- inc hl
- dec c
- jr nz, .loop
- ret
-
-.delete
- ld hl, Sprites
- ld c, SpritesEnd - Sprites
- xor a
-.loop2
- ld [hli], a
- dec c
- jr nz, .loop2
- ret
-; cc25f
-
-RunBattleAnimCommand: ; cc25f
- call .CheckTimer
- ret nc
- call .RunScript
- ret
-; cc267
-
-.CheckTimer: ; cc267
- ld a, [BattleAnimDuration]
- and a
- jr z, .done
-
- dec a
- ld [BattleAnimDuration], a
- and a
- ret
-
-.done
- scf
- ret
-; cc275
-
-.RunScript: ; cc275
-.loop
- call GetBattleAnimByte
-
- cp $ff
- jr nz, .not_done_with_anim
-
-; Return from a subroutine.
- ld hl, BattleAnimFlags
- bit 1, [hl]
- jr nz, .do_anim
-
- set 0, [hl]
- ret
-
-.not_done_with_anim
- cp $d0
- jr nc, .do_anim
-
- ld [BattleAnimDuration], a
- ret
-
-.do_anim
- call .DoCommand
-
- jr .loop
-; cc293
-
-.DoCommand: ; cc293
-; Execute battle animation command in [BattleAnimByte].
- ld a, [BattleAnimByte]
- sub $d0
-
- ld e, a
- ld d, 0
- ld hl, BattleAnimCommands
- add hl, de
- add hl, de
-
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp hl
-; cc2a4
-
-
-BattleAnimCommands:: ; cc2a4 (33:42a4)
-; entries correspond to macros/move_anim.asm enumeration
- dw BattleAnimCmd_Obj
- dw BattleAnimCmd_1GFX
- dw BattleAnimCmd_2GFX
- dw BattleAnimCmd_3GFX
- dw BattleAnimCmd_4GFX
- dw BattleAnimCmd_5GFX
- dw BattleAnimCmd_IncObj
- dw BattleAnimCmd_SetObj
- dw BattleAnimCmd_IncBGEffect
- dw BattleAnimCmd_EnemyFeetObj
- dw BattleAnimCmd_PlayerHeadObj
- dw BattleAnimCmd_CheckPokeball
- dw BattleAnimCmd_Transform
- dw BattleAnimCmd_RaiseSub
- dw BattleAnimCmd_DropSub
- dw BattleAnimCmd_ResetObp0
- dw BattleAnimCmd_Sound
- dw BattleAnimCmd_Cry
- dw BattleAnimCmd_MinimizeOpp
- dw BattleAnimCmd_OAMOn
- dw BattleAnimCmd_OAMOff
- dw BattleAnimCmd_ClearObjs
- dw BattleAnimCmd_BeatUp
- dw BattleAnimCmd_E7
- dw BattleAnimCmd_UpdateActorPic
- dw BattleAnimCmd_Minimize
- dw BattleAnimCmd_EA ; dummy
- dw BattleAnimCmd_EB ; dummy
- dw BattleAnimCmd_EC ; dummy
- dw BattleAnimCmd_ED ; dummy
- dw BattleAnimCmd_IfParamAnd
- dw BattleAnimCmd_JumpUntil
- dw BattleAnimCmd_BGEffect
- dw BattleAnimCmd_BGP
- dw BattleAnimCmd_OBP0
- dw BattleAnimCmd_OBP1
- dw BattleAnimCmd_ClearSprites
- dw BattleAnimCmd_F5
- dw BattleAnimCmd_F6
- dw BattleAnimCmd_F7
- dw BattleAnimCmd_IfParamEqual
- dw BattleAnimCmd_SetVar
- dw BattleAnimCmd_IncVar
- dw BattleAnimCmd_IfVarEqual
- dw BattleAnimCmd_Jump
- dw BattleAnimCmd_Loop
- dw BattleAnimCmd_Call
- dw BattleAnimCmd_Ret
-
-
-BattleAnimCmd_EA:
-BattleAnimCmd_EB:
-BattleAnimCmd_EC:
-BattleAnimCmd_ED: ; cc304 (33:4304)
- ret
-
-BattleAnimCmd_Ret: ; cc305 (33:4305)
- ld hl, BattleAnimFlags
- res 1, [hl]
- ld hl, BattleAnimParent
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, BattleAnimAddress
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-BattleAnimCmd_Call: ; cc317 (33:4317)
- call GetBattleAnimByte
- ld e, a
- call GetBattleAnimByte
- ld d, a
- push de
- ld hl, BattleAnimAddress
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, BattleAnimParent
- ld [hl], e
- inc hl
- ld [hl], d
- pop de
- ld hl, BattleAnimAddress
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, BattleAnimFlags
- set 1, [hl]
- ret
-
-BattleAnimCmd_Jump: ; cc339 (33:4339)
- call GetBattleAnimByte
- ld e, a
- call GetBattleAnimByte
- ld d, a
- ld hl, BattleAnimAddress
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-BattleAnimCmd_Loop: ; cc348 (33:4348)
- call GetBattleAnimByte
- ld hl, BattleAnimFlags
- bit 2, [hl]
- jr nz, .continue_loop
- and a
- jr z, .perpetual
- dec a
- set 2, [hl]
- ld [BattleAnimLoops], a
-.continue_loop
- ld hl, BattleAnimLoops
- ld a, [hl]
- and a
- jr z, .return_from_loop
- dec [hl]
-.perpetual
- call GetBattleAnimByte
- ld e, a
- call GetBattleAnimByte
- ld d, a
- ld hl, BattleAnimAddress
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-.return_from_loop
- ld hl, BattleAnimFlags
- res 2, [hl]
- ld hl, BattleAnimAddress
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc de
- inc de
- ld [hl], d
- dec hl
- ld [hl], e
- ret
-
-BattleAnimCmd_JumpUntil: ; cc383 (33:4383)
- ld hl, wBattleAnimParam
- ld a, [hl]
- and a
- jr z, .dont_jump
-
- dec [hl]
- call GetBattleAnimByte
- ld e, a
- call GetBattleAnimByte
- ld d, a
- ld hl, BattleAnimAddress
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-.dont_jump
- ld hl, BattleAnimAddress
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc de
- inc de
- ld [hl], d
- dec hl
- ld [hl], e
- ret
-
-BattleAnimCmd_SetVar: ; cc3a6 (33:43a6)
- call GetBattleAnimByte
- ld [BattleAnimVar], a
- ret
-
-BattleAnimCmd_IncVar: ; cc3ad (33:43ad)
- ld hl, BattleAnimVar
- inc [hl]
- ret
-
-BattleAnimCmd_IfVarEqual: ; cc3b2 (33:43b2)
- call GetBattleAnimByte
- ld hl, BattleAnimVar
- cp [hl]
- jr z, .jump
-
- ld hl, BattleAnimAddress
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc de
- inc de
- ld [hl], d
- dec hl
- ld [hl], e
- ret
-
-.jump
- call GetBattleAnimByte
- ld e, a
- call GetBattleAnimByte
- ld d, a
- ld hl, BattleAnimAddress
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-BattleAnimCmd_IfParamEqual: ; cc3d6 (33:43d6)
- call GetBattleAnimByte
- ld hl, wBattleAnimParam
- cp [hl]
- jr z, .jump
-
- ld hl, BattleAnimAddress
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc de
- inc de
- ld [hl], d
- dec hl
- ld [hl], e
- ret
-
-.jump
- call GetBattleAnimByte
- ld e, a
- call GetBattleAnimByte
- ld d, a
- ld hl, BattleAnimAddress
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-BattleAnimCmd_IfParamAnd: ; cc3fa (33:43fa)
- call GetBattleAnimByte
- ld e, a
- ld a, [wBattleAnimParam]
- and e
- jr nz, .jump
-
- ld hl, BattleAnimAddress
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc de
- inc de
- ld [hl], d
- dec hl
- ld [hl], e
- ret
-
-.jump
- call GetBattleAnimByte
- ld e, a
- call GetBattleAnimByte
- ld d, a
- ld hl, BattleAnimAddress
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-BattleAnimCmd_Obj: ; cc41f (33:441f)
-; index, x, y, param
- call GetBattleAnimByte
- ld [wBattleAnimTemp0], a
- call GetBattleAnimByte
- ld [wBattleAnimTemp1], a
- call GetBattleAnimByte
- ld [wBattleAnimTemp2], a
- call GetBattleAnimByte
- ld [wBattleAnimTemp3], a
- call QueueBattleAnimation
- ret
-
-BattleAnimCmd_BGEffect: ; cc43b (33:443b)
- call GetBattleAnimByte
- ld [wBattleAnimTemp0], a
- call GetBattleAnimByte
- ld [wBattleAnimTemp1], a
- call GetBattleAnimByte
- ld [wBattleAnimTemp2], a
- call GetBattleAnimByte
- ld [wBattleAnimTemp3], a
- call _QueueBGEffect
- ret
-
-BattleAnimCmd_BGP: ; cc457 (33:4457)
- call GetBattleAnimByte
- ld [wBGP], a
- ret
-
-BattleAnimCmd_OBP0: ; cc45e (33:445e)
- call GetBattleAnimByte
- ld [wOBP0], a
- ret
-
-BattleAnimCmd_OBP1: ; cc465 (33:4465)
- call GetBattleAnimByte
- ld [wOBP1], a
- ret
-
-BattleAnimCmd_ResetObp0: ; cc46c (33:446c)
- ld a, [hSGB]
- and a
- ld a, $e0
- jr z, .not_sgb
- ld a, $f0
-.not_sgb
- ld [wOBP0], a
- ret
-
-BattleAnimCmd_ClearObjs: ; cc479 (33:4479)
- ld hl, ActiveAnimObjects
- ld a, $a0
-.loop
- ld [hl], $0
- inc hl
- dec a
- jr nz, .loop
- ret
-
-BattleAnimCmd_1GFX:
-BattleAnimCmd_2GFX:
-BattleAnimCmd_3GFX:
-BattleAnimCmd_4GFX:
-BattleAnimCmd_5GFX: ; cc485 (33:4485)
- ld a, [BattleAnimByte]
- and $f
- ld c, a
- ld hl, wBattleAnimTileDict
- xor a
- ld [wBattleAnimTemp0], a
-.loop
- ld a, [wBattleAnimTemp0]
- cp (VTiles1 - VTiles0) / $10 - $31
- ret nc
- call GetBattleAnimByte
- ld [hli], a
- ld a, [wBattleAnimTemp0]
- ld [hli], a
- push bc
- push hl
- ld l, a
- ld h, $0
-rept 4
- add hl, hl
-endr
- ld de, VTiles0 tile $31
- add hl, de
- ld a, [BattleAnimByte]
- call LoadBattleAnimObj
- ld a, [wBattleAnimTemp0]
- add c
- ld [wBattleAnimTemp0], a
- pop hl
- pop bc
- dec c
- jr nz, .loop
- ret
-
-BattleAnimCmd_IncObj: ; cc4c0 (33:44c0)
- call GetBattleAnimByte
- ld e, 10
- ld bc, ActiveAnimObjects
-.loop
- ld hl, BATTLEANIMSTRUCT_INDEX
- add hl, bc
- ld d, [hl]
- ld a, [BattleAnimByte]
- cp d
- jr z, .found
- ld hl, BATTLEANIMSTRUCT_LENGTH
- add hl, bc
- ld c, l
- ld b, h
- dec e
- jr nz, .loop
- ret
-
-.found
- ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
- add hl, bc
- inc [hl]
- ret
-
-BattleAnimCmd_IncBGEffect: ; cc4e3 (33:44e3)
- call GetBattleAnimByte
- ld e, 5
- ld bc, ActiveBGEffects
-.loop
- ld hl, $0
- add hl, bc
- ld d, [hl]
- ld a, [BattleAnimByte]
- cp d
- jr z, .found
- ld hl, 4
- add hl, bc
- ld c, l
- ld b, h
- dec e
- jr nz, .loop
- ret
-
-.found
- ld hl, BG_EFFECT_STRUCT_JT_INDEX
- add hl, bc
- inc [hl]
- ret
-
-BattleAnimCmd_SetObj: ; cc506 (33:4506)
- call GetBattleAnimByte
- ld e, 10
- ld bc, ActiveAnimObjects
-.loop
- ld hl, BATTLEANIMSTRUCT_INDEX
- add hl, bc
- ld d, [hl]
- ld a, [BattleAnimByte]
- cp d
- jr z, .found
- ld hl, BATTLEANIMSTRUCT_LENGTH
- add hl, bc
- ld c, l
- ld b, h
- dec e
- jr nz, .loop
- ret
-
-.found
- call GetBattleAnimByte
- ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
- add hl, bc
- ld [hl], a
- ret
-
-BattleAnimCmd_EnemyFeetObj: ; cc52c (33:452c)
-
- ld hl, wBattleAnimTileDict
-.loop
- ld a, [hl]
- and a
- jr z, .okay
- inc hl
- inc hl
- jr .loop
-
-.okay
- ld a, $28
- ld [hli], a
- ld a, $42
- ld [hli], a
- ld a, $29
- ld [hli], a
- ld a, $49
- ld [hl], a
-
- ld hl, VTiles0 tile $73
- ld de, VTiles2 tile $06
- ld a, $70
- ld [wBattleAnimTemp0], a
- ld a, $7
- call .LoadFootprint
- ld de, VTiles2 tile $31
- ld a, $60
- ld [wBattleAnimTemp0], a
- ld a, $6
- call .LoadFootprint
- ret
-
-.LoadFootprint: ; cc561 (33:4561)
- push af
- push hl
- push de
- lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 1
- call Request2bpp
- pop de
- ld a, [wBattleAnimTemp0]
- ld l, a
- ld h, 0
- add hl, de
- ld e, l
- ld d, h
- pop hl
- ld bc, 1 tiles
- add hl, bc
- pop af
- dec a
- jr nz, .LoadFootprint
- ret
-
-BattleAnimCmd_PlayerHeadObj: ; cc57e (33:457e)
-
- ld hl, wBattleAnimTileDict
-.loop
- ld a, [hl]
- and a
- jr z, .okay
- inc hl
- inc hl
- jr .loop
-
-.okay
- ld a, $28
- ld [hli], a
- ld a, $35
- ld [hli], a
- ld a, $29
- ld [hli], a
- ld a, $43
- ld [hl], a
-
- ld hl, VTiles0 tile $66
- ld de, VTiles2 tile $05
- ld a, $70
- ld [wBattleAnimTemp0], a
- ld a, $7
- call .LoadHead
- ld de, VTiles2 tile $31
- ld a, $60
- ld [wBattleAnimTemp0], a
- ld a, $6
- call .LoadHead
- ret
-
-.LoadHead: ; cc5b3 (33:45b3)
- push af
- push hl
- push de
- lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 2
- call Request2bpp
- pop de
- ld a, [wBattleAnimTemp0]
- ld l, a
- ld h, 0
- add hl, de
- ld e, l
- ld d, h
- pop hl
- ld bc, 2 tiles
- add hl, bc
- pop af
- dec a
- jr nz, .LoadHead
- ret
-
-BattleAnimCmd_CheckPokeball: ; cc5d0 (33:45d0)
- callfar GetPokeBallWobble
- ld a, c
- ld [BattleAnimVar], a
- ret
-
-BattleAnimCmd_E7: ; cc5db (33:45db)
- ret
-
-BattleAnimCmd_Transform: ; cc5dc (33:45dc)
- ld a, [rSVBK]
- push af
- ld a, 1
- ld [rSVBK], a
- ld a, [CurPartySpecies] ; CurPartySpecies
- push af
-
- ld a, [hBattleTurn]
- and a
- jr z, .player
-
- ld a, [TempBattleMonSpecies] ; TempBattleMonSpecies
- ld [CurPartySpecies], a ; CurPartySpecies
- ld hl, BattleMonDVs ; BattleMonDVs
- predef GetUnownLetter
- ld de, VTiles0 tile $00
- predef GetMonFrontpic
- jr .done
-
-.player
- ld a, [TempEnemyMonSpecies] ; TempEnemyMonSpecies
- ld [CurPartySpecies], a ; CurPartySpecies
- ld hl, EnemyMonDVs ; EnemyMonDVs
- predef GetUnownLetter
- ld de, VTiles0 tile $00
- predef GetMonBackpic
-
-.done
- pop af
- ld [CurPartySpecies], a ; CurPartySpecies
- pop af
- ld [rSVBK], a
- ret
-
-BattleAnimCmd_UpdateActorPic: ; cc622 (33:4622)
-
- ld de, VTiles0 tile $00
- ld a, [hBattleTurn]
- and a
- jr z, .player
-
- ld hl, VTiles2 tile $00
- ld b, 0
- ld c, $31
- call Request2bpp
- ret
-
-.player
- ld hl, VTiles2 tile $31
- ld b, 0
- ld c, $24
- call Request2bpp
- ret
-
-BattleAnimCmd_RaiseSub: ; cc640 (33:4640)
-
- ld a, [rSVBK]
- push af
- ld a, 1
- ld [rSVBK], a
- xor a
- call GetSRAMBank
-
-GetSubstitutePic: ; cc64c
-
- ld hl, sScratch
- ld bc, (7 * 7) tiles
-.loop
- xor a
- ld [hli], a
- dec bc
- ld a, c
- or b
- jr nz, .loop
-
- ld a, [hBattleTurn]
- and a
- jr z, .player
-
- ld hl, MonsterSpriteGFX + 0 tiles
- ld de, sScratch + (2 * 7 + 5) tiles
- call .CopyTile
- ld hl, MonsterSpriteGFX + 1 tiles
- ld de, sScratch + (3 * 7 + 5) tiles
- call .CopyTile
- ld hl, MonsterSpriteGFX + 2 tiles
- ld de, sScratch + (2 * 7 + 6) tiles
- call .CopyTile
- ld hl, MonsterSpriteGFX + 3 tiles
- ld de, sScratch + (3 * 7 + 6) tiles
- call .CopyTile
-
- ld hl, VTiles2 tile $00
- ld de, sScratch
- lb bc, BANK(GetSubstitutePic), 7 * 7
- call Request2bpp
- jr .done
-
-.player
- ld hl, MonsterSpriteGFX + 4 tiles
- ld de, sScratch + (2 * 6 + 4) tiles
- call .CopyTile
- ld hl, MonsterSpriteGFX + 5 tiles
- ld de, sScratch + (3 * 6 + 4) tiles
- call .CopyTile
- ld hl, MonsterSpriteGFX + 6 tiles
- ld de, sScratch + (2 * 6 + 5) tiles
- call .CopyTile
- ld hl, MonsterSpriteGFX + 7 tiles
- ld de, sScratch + (3 * 6 + 5) tiles
- call .CopyTile
-
- ld hl, VTiles2 tile $31
- ld de, sScratch
- lb bc, BANK(GetSubstitutePic), 6 * 6
- call Request2bpp
-
-.done
- call CloseSRAM
- pop af
- ld [rSVBK], a
- ret
-
-.CopyTile: ; cc6c6 (33:46c6)
- ld bc, 1 tiles
- ld a, BANK(MonsterSpriteGFX)
- call FarCopyBytes
- ret
-
-BattleAnimCmd_MinimizeOpp: ; cc6cf (33:46cf)
- ld a, [rSVBK]
- push af
- ld a, $1
- ld [rSVBK], a
- xor a
- call GetSRAMBank
- call GetMinimizePic
- call Request2bpp
- call CloseSRAM
- pop af
- ld [rSVBK], a
- ret
-
-GetMinimizePic: ; cc6e7 (33:46e7)
- ld hl, sScratch
- ld bc, $31 tiles
-.loop
- xor a
- ld [hli], a
- dec bc
- ld a, c
- or b
- jr nz, .loop
-
- ld a, [hBattleTurn]
- and a
- jr z, .player
-
- ld de, sScratch + $1a tiles
- call CopyMinimizePic
- ld hl, VTiles2 tile $00
- ld de, sScratch
- lb bc, BANK(GetMinimizePic), $31
- ret
-
-.player
- ld de, sScratch + $160
- call CopyMinimizePic
- ld hl, VTiles2 tile $31
- ld de, sScratch
- lb bc, BANK(GetMinimizePic), $24
- ret
-
-CopyMinimizePic: ; cc719 (33:4719)
- ld hl, MinimizePic
- ld bc, $10
- ld a, BANK(MinimizePic)
- call FarCopyBytes
- ret
-; cc725 (33:4725)
-
-MinimizePic: ; cc725
-INCBIN "gfx/battle/minimize.2bpp"
-; cc735
-
-BattleAnimCmd_Minimize: ; cc735 (33:4735)
- ld a, [rSVBK]
- push af
- ld a, $1
- ld [rSVBK], a
- xor a
- call GetSRAMBank
- call GetMinimizePic
- ld hl, VTiles0 tile $00
- call Request2bpp
- call CloseSRAM
- pop af
- ld [rSVBK], a
- ret
-
-BattleAnimCmd_DropSub: ; cc750 (33:4750)
- ld a, [rSVBK]
- push af
- ld a, $1
- ld [rSVBK], a
-
- ld a, [CurPartySpecies] ; CurPartySpecies
- push af
- ld a, [hBattleTurn]
- and a
- jr z, .player
-
- callfar DropEnemySub
- jr .done
-
-.player
- callfar DropPlayerSub
-
-.done
- pop af
- ld [CurPartySpecies], a ; CurPartySpecies
- pop af
- ld [rSVBK], a
- ret
-
-BattleAnimCmd_BeatUp: ; cc776 (33:4776)
- ld a, [rSVBK]
- push af
- ld a, $1
- ld [rSVBK], a
- ld a, [CurPartySpecies] ; CurPartySpecies
- push af
-
- ld a, [wBattleAnimParam]
- ld [CurPartySpecies], a ; CurPartySpecies
-
- ld a, [hBattleTurn]
- and a
- jr z, .player
-
- ld hl, BattleMonDVs
- predef GetUnownLetter
- ld de, VTiles2 tile $00
- predef GetMonFrontpic
- jr .done
-
-.player
- ld hl, EnemyMonDVs
- predef GetUnownLetter
- ld de, VTiles2 tile $31
- predef GetMonBackpic
-
-.done
- pop af
- ld [CurPartySpecies], a ; CurPartySpecies
- ld b, SCGB_BATTLE_COLORS
- call GetSGBLayout
- pop af
- ld [rSVBK], a
- ret
-
-BattleAnimCmd_OAMOn: ; cc7bb (33:47bb)
- xor a
- ld [hOAMUpdate], a
- ret
-
-BattleAnimCmd_OAMOff: ; cc7bf (33:47bf)
- ld a, $1
- ld [hOAMUpdate], a
- ret
-
-BattleAnimCmd_ClearSprites: ; cc7c4 (33:47c4)
- ld hl, BattleAnimFlags
- set 3, [hl]
- ret
-
-BattleAnimCmd_F5: ; cc7ca (33:47ca)
- ret
-
-BattleAnimCmd_F6: ; cc7cb (33:47cb)
- ret
-
-BattleAnimCmd_F7: ; cc7cc (33:47cc)
- ret
-
-BattleAnimCmd_Sound: ; cc7cd (33:47cd)
- call GetBattleAnimByte
- ld e, a
- srl a
- srl a
- ld [wSFXDuration], a
- call .GetCryTrack
- and 3
- ld [CryTracks], a ; CryTracks
-
- ld e, a
- ld d, 0
- ld hl, .GetPanning
- add hl, de
- ld a, [hl]
- ld [wStereoPanningMask], a
-
- call GetBattleAnimByte
- ld e, a
- ld d, 0
- callfar PlayStereoSFX
-
- ret
-; cc7f8 (33:47f8)
-
-.GetPanning: ; cc7f8
- db $f0, $0f, $f0, $0f
-; cc7fc
-
-.GetCryTrack: ; cc7fc (33:47fc)
- ld a, [hBattleTurn]
- and a
- jr nz, .enemy
-
- ld a, e
- ret
-
-.enemy
- ld a, e
- xor 1
- ret
-
-BattleAnimCmd_Cry: ; cc807 (33:4807)
- call GetBattleAnimByte
- and 3
- ld e, a
- ld d, 0
- ld hl, .CryData
-rept 4
- add hl, de
-endr
-
- ld a, [rSVBK]
- push af
- ld a, 1
- ld [rSVBK], a
-
- ld a, [hBattleTurn]
- and a
- jr nz, .enemy
-
- ld a, $f0
- ld [CryTracks], a ; CryTracks
- ld a, [BattleMonSpecies] ; BattleMonSpecies
- jr .done_cry_tracks
-
-.enemy
- ld a, $0f
- ld [CryTracks], a ; CryTracks
- ld a, [EnemyMonSpecies] ; EnemyMon
-
-.done_cry_tracks
- push hl
- call LoadCryHeader
- pop hl
- jr c, .done
-
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
-
- push hl
- ld hl, CryPitch
- ld a, [hli]
- ld h, [hl]
- ld l, a
- add hl, bc
- ld a, l
- ld [CryPitch], a
- ld a, h
- ld [CryPitch + 1], a
- pop hl
-
- ld a, [hli]
- ld c, a
- ld b, [hl]
- ld hl, CryLength ; CryLength
- ld a, [hli]
- ld h, [hl]
- ld l, a
- add hl, bc
-
- ld a, l
- ld [CryLength], a ; CryLength
- ld a, h
- ld [CryLength + 1], a
- ld a, 1
- ld [wStereoPanningMask], a
-
- callfar _PlayCryHeader
-
-.done
- pop af
- ld [rSVBK], a
- ret
-; cc871 (33:4871)
-
-.CryData: ; cc871
-; +pitch, +length
- dw $0000, $00c0
- dw $0000, $0040
- dw $0000, $0000
- dw $0000, $0000
-; cc881
-
-
-PlayHitSound: ; cc881
- ld a, [wNumHits]
- cp $1
- jr z, .okay
- cp $4
- ret nz
-
-.okay
- ld a, [TypeModifier]
- and $7f
- ret z
-
- cp 10
- ld de, SFX_DAMAGE
- jr z, .play
-
- ld de, SFX_SUPER_EFFECTIVE
- jr nc, .play
-
- ld de, SFX_NOT_VERY_EFFECTIVE
-
-.play
- call PlaySFX
- ret
-; cc8a4
-
-BattleAnimAssignPals: ; cc8a4
- ld a, [hCGB]
- and a
- jr nz, .cgb
- ld a, [hSGB]
- and a
- ld a, %11100000
- jr z, .sgb
- ld a, %11110000
-
-.sgb
- ld [wOBP0], a
- ld a, %11100100
- ld [wBGP], a
- ld [wOBP1], a
- ret
-
-.cgb
- ld a, %11100100
- ld [wBGP], a
- ld [wOBP0], a
- ld [wOBP1], a
- call DmgToCgbBGPals
- lb de, %11100100, %11100100
- call DmgToCgbObjPals
- ret
-; cc8d3
-
-ClearBattleAnims: ; cc8d3
-; Clear animation block
- ld hl, LYOverrides
- ld bc, wBattleAnimEnd - LYOverrides
-.loop
- ld [hl], $0
- inc hl
- dec bc
- ld a, c
- or b
- jr nz, .loop
-
- ld hl, FXAnimID
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, BattleAnimations
- add hl, de
- add hl, de
- call GetBattleAnimPointer
- call BattleAnimAssignPals
- call BattleAnimDelayFrame
- ret
-; cc8f6
-
-BattleAnim_RevertPals: ; cc8f6
- call WaitTop
- ld a, %11100100
- ld [wBGP], a
- ld [wOBP0], a
- ld [wOBP1], a
- call DmgToCgbBGPals
- lb de, %11100100, %11100100
- call DmgToCgbObjPals
- xor a
- ld [hSCX], a
- ld [hSCY], a
- call BattleAnimDelayFrame
- ld a, $1
- ld [hBGMapMode], a
- ret
-; cc91a
-
-BattleAnim_SetBGPals: ; cc91a
- ld [rBGP], a
- ld a, [hCGB]
- and a
- ret z
- ld a, [rSVBK]
- push af
- ld a, $5
- ld [rSVBK], a
- ld hl, BGPals
- ld de, UnknBGPals
- ld a, [rBGP]
- ld b, a
- ld c, 7
- call CopyPals
- ld hl, OBPals
- ld de, UnknOBPals
- ld a, [rBGP]
- ld b, a
- ld c, 2
- call CopyPals
- pop af
- ld [rSVBK], a
- ld a, $1
- ld [hCGBPalUpdate], a
- ret
-; cc94b
-
-BattleAnim_SetOBPals: ; cc94b
- ld [rOBP0], a
- ld a, [hCGB]
- and a
- ret z
- ld a, [rSVBK]
- push af
- ld a, $5
- ld [rSVBK], a
- ld hl, OBPals palette PAL_BATTLE_OB_GRAY
- ld de, UnknOBPals palette PAL_BATTLE_OB_GRAY
- ld a, [rOBP0]
- ld b, a
- ld c, 2
- call CopyPals
- pop af
- ld [rSVBK], a
- ld a, $1
- ld [hCGBPalUpdate], a
- ret
-; cc96e
-
-BattleAnim_UpdateOAM_All: ; cc96e
- ld a, $0
- ld [wBattleAnimOAMPointerLo], a
- ld hl, ActiveAnimObjects
- ld e, 10
-.loop
- ld a, [hl]
- and a
- jr z, .next
- ld c, l
- ld b, h
- push hl
- push de
- call DoBattleAnimFrame
- call BattleAnimOAMUpdate
- pop de
- pop hl
- jr c, .done
-
-.next
- ld bc, BATTLEANIMSTRUCT_LENGTH
- add hl, bc
- dec e
- jr nz, .loop
- ld a, [wBattleAnimOAMPointerLo]
- ld l, a
- ld h, HIGH(Sprites)
-.loop2
- ld a, l
- cp LOW(SpritesEnd)
- jr nc, .done
- xor a
- ld [hli], a
- jr .loop2
-
-.done
- ret
-; cc9a1