ref: 6fcba7a28a0d3d7826603b54b187dc5fca853669
dir: /battle/anim_commands.asm/
; 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 Functioncc11c pop af ld [hVBlank], a ld a, $1 ld [hBGMapMode], a call BattleAnimDelayFrame call BattleAnimDelayFrame call BattleAnimDelayFrame call WaitSFX ret ; cc11c Functioncc11c: ; cc11c ld a, [FXAnimIDHi] and a jr nz, .asm_cc156 callba CheckBattleScene jr c, .asm_cc141 call BattleAnimClearHud call Functioncc163 call BattleAnimAssignPals call BattleAnimRequestPals xor a ld [hSCX], a ld [hSCY], a call BattleAnimDelayFrame call BattleAnimRestoreHuds .asm_cc141 ld a, [wcfca] and a jr z, .asm_cc15f ld l, a ld h, 0 ld de, $10e add hl, de ld a, l ld [FXAnimIDLo], a ld a, h ld [FXAnimIDHi], a .asm_cc156 call WaitSFX call Functioncc881 call Functioncc163 .asm_cc15f call Functioncc8f6 ret ; cc163 Functioncc163: ; cc163 call Functioncc8d3 .playframe call Functioncc25f call Functionccb48 call Functioncc96e call Function3b0c call BattleAnimRequestPals ; Speed up Rollout's animation. ld a, [FXAnimIDHi] or a jr nz, .asm_cc193 ld a, [FXAnimIDLo] cp ROLLOUT jr nz, .asm_cc193 ld a, $2e ld b, 5 ld de, 4 ld hl, ActiveBGEffects .asm_cc18c cp [hl] jr z, .asm_cc196 add hl, de dec b jr nz, .asm_cc18c .asm_cc193 call BattleAnimDelayFrame .asm_cc196 ld a, [BattleAnimFlags] bit 0, a jr z, .playframe call Functioncc23d 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, $f rst FarCall 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, [wcfc7] cp b call nz, Functioncc91a ld a, [rOBP0] ld b, a ld a, [wcfc8] cp b call nz, Functioncc94b 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, $80 ld [hBGMapAddress], a ld a, $9a ld [hBGMapAddress + 1], a call Function3200 ld a, $60 ld [hWY], a xor a ld [hBGMapAddress], a ld a, $98 ld [hBGMapAddress + 1], a call BattleAnimDelayFrame ret ; cc23d Functioncc23d: ; cc23d ld a, [BattleAnimFlags] bit 3, a jr z, .asm_cc254 ld hl, Sprites + 3 ld c, (SpritesEnd - Sprites) / 4 .asm_cc249 ld a, [hl] and $f0 ld [hli], a rept 3 inc hl endr dec c jr nz, .asm_cc249 ret .asm_cc254 ld hl, Sprites ld c, SpritesEnd - Sprites xor a .asm_cc25a ld [hli], a dec c jr nz, .asm_cc25a ret ; cc25f Functioncc25f: ; cc25f call Functioncc267 ret nc call Functioncc275 ret ; cc267 Functioncc267: ; cc267 ld a, [BattleAnimDuration] and a jr z, .asm_cc273 dec a ld [BattleAnimDuration], a and a ret .asm_cc273 scf ret ; cc275 Functioncc275: ; cc275 call GetBattleAnimByte cp $ff jr nz, .asm_cc286 ; Return from a subroutine. ld hl, BattleAnimFlags bit 1, [hl] jr nz, .asm_cc28e set 0, [hl] ret .asm_cc286 cp $d0 jr nc, .asm_cc28e ld [BattleAnimDuration], a ret .asm_cc28e call Functioncc293 jr Functioncc275 ; cc293 Functioncc293: ; cc293 ; Execute battle animation command in [BattleAnimByte]. ld a, [BattleAnimByte] sub $d0 ld e, a ld d, 0 ld hl, BattleAnimCommands rept 2 add hl, de endr ld a, [hli] ld h, [hl] ld l, a jp [hl] ; cc2a4 BattleAnimCommands:: ; cc2a4 (33:42a4) dw BattleAnimCmd_D0 dw BattleAnimCmd_D1 dw BattleAnimCmd_D2 dw BattleAnimCmd_D3 dw BattleAnimCmd_D4 dw BattleAnimCmd_D5 dw BattleAnimCmd_D6 dw BattleAnimCmd_D7 dw BattleAnimCmd_D8 dw BattleAnimCmd_D9 dw BattleAnimCmd_DA dw BattleAnimCmd_DB dw BattleAnimCmd_DC dw BattleAnimCmd_DD dw BattleAnimCmd_DE dw BattleAnimCmd_DF dw BattleAnimCmd_E0 dw BattleAnimCmd_E1 dw BattleAnimCmd_E2 dw BattleAnimCmd_E3 dw BattleAnimCmd_E4 dw BattleAnimCmd_E5 dw BattleAnimCmd_E6 dw BattleAnimCmd_E7 dw BattleAnimCmd_E8 dw BattleAnimCmd_E9 dw BattleAnimCmd_EA dw BattleAnimCmd_EB dw BattleAnimCmd_EC dw BattleAnimCmd_ED dw BattleAnimCmd_EE dw BattleAnimCmd_EF dw BattleAnimCmd_F0 dw BattleAnimCmd_F1 dw BattleAnimCmd_F2 dw BattleAnimCmd_F3 dw BattleAnimCmd_F4 dw BattleAnimCmd_F5 dw BattleAnimCmd_F6 dw BattleAnimCmd_F7 dw BattleAnimCmd_F8 dw BattleAnimCmd_F9 dw BattleAnimCmd_FA dw BattleAnimCmd_FB dw BattleAnimCmd_FC dw BattleAnimCmd_FD dw BattleAnimCmd_FE dw BattleAnimCmd_FF BattleAnimCmd_EA: BattleAnimCmd_EB: BattleAnimCmd_EC: BattleAnimCmd_ED: ; cc304 (33:4304) ret BattleAnimCmd_FF: ; 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_FE: ; 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_FC: ; 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_FD: ; cc348 (33:4348) call GetBattleAnimByte ld hl, BattleAnimFlags bit 2, [hl] jr nz, .asm_cc35b and a jr z, .asm_cc363 dec a set 2, [hl] ld [BattleAnimLoops], a .asm_cc35b ld hl, BattleAnimLoops ld a, [hl] and a jr z, .asm_cc372 dec [hl] .asm_cc363 call GetBattleAnimByte ld e, a call GetBattleAnimByte ld d, a ld hl, BattleAnimAddress ld [hl], e inc hl ld [hl], d ret .asm_cc372 ld hl, BattleAnimFlags res 2, [hl] ld hl, BattleAnimAddress ld e, [hl] inc hl ld d, [hl] rept 2 inc de endr ld [hl], d dec hl ld [hl], e ret BattleAnimCmd_EF: ; cc383 (33:4383) ld hl, wc689 ld a, [hl] and a jr z, .asm_cc39a dec [hl] call GetBattleAnimByte ld e, a call GetBattleAnimByte ld d, a ld hl, BattleAnimAddress ld [hl], e inc hl ld [hl], d ret .asm_cc39a ld hl, BattleAnimAddress ld e, [hl] inc hl ld d, [hl] rept 2 inc de endr ld [hl], d dec hl ld [hl], e ret BattleAnimCmd_F9: ; cc3a6 (33:43a6) call GetBattleAnimByte ld [BattleAnimVar], a ret BattleAnimCmd_FA: ; cc3ad (33:43ad) ld hl, BattleAnimVar inc [hl] ret BattleAnimCmd_FB: ; cc3b2 (33:43b2) call GetBattleAnimByte ld hl, BattleAnimVar cp [hl] jr z, .jump ld hl, BattleAnimAddress ld e, [hl] inc hl ld d, [hl] rept 2 inc de endr 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_F8: ; cc3d6 (33:43d6) call GetBattleAnimByte ld hl, wc689 cp [hl] jr z, .jump ld hl, BattleAnimAddress ld e, [hl] inc hl ld d, [hl] rept 2 inc de endr 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_EE: ; cc3fa (33:43fa) call GetBattleAnimByte ld e, a ld a, [wc689] and e jr nz, .jump ld hl, BattleAnimAddress ld e, [hl] inc hl ld d, [hl] rept 2 inc de endr 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_D0: ; cc41f (33:441f) call GetBattleAnimByte ld [BattleAnimTemps], a call GetBattleAnimByte ld [BattleAnimTemps + 1], a call GetBattleAnimByte ld [BattleAnimTemps + 2], a call GetBattleAnimByte ld [BattleAnimTemps + 3], a call Functioncc9a1 ret BattleAnimCmd_F0: ; cc43b (33:443b) call GetBattleAnimByte ld [BattleAnimTemps], a call GetBattleAnimByte ld [BattleAnimTemps + 1], a call GetBattleAnimByte ld [BattleAnimTemps + 2], a call GetBattleAnimByte ld [BattleAnimTemps + 3], a call Functionccb4f ret BattleAnimCmd_F1: ; cc457 (33:4457) call GetBattleAnimByte ld [wcfc7], a ret BattleAnimCmd_F2: ; cc45e (33:445e) call GetBattleAnimByte ld [wcfc8], a ret BattleAnimCmd_F3: ; cc465 (33:4465) call GetBattleAnimByte ld [wcfc9], a ret BattleAnimCmd_DF: ; cc46c (33:446c) ld a, [hSGB] ; $ff00+$e7 and a ld a, $e0 jr z, .asm_cc475 ld a, $f0 .asm_cc475 ld [wcfc8], a ret BattleAnimCmd_E5: ; cc479 (33:4479) ld hl, OTPartyMon3HP ld a, $a0 .asm_cc47e ld [hl], $0 inc hl dec a jr nz, .asm_cc47e ret BattleAnimCmd_D1: BattleAnimCmd_D2: BattleAnimCmd_D3: BattleAnimCmd_D4: BattleAnimCmd_D5: ; cc485 (33:4485) ld a, [BattleAnimByte] and $f ld c, a ld hl, w5_d300 xor a ld [BattleAnimTemps], a .asm_cc492 ld a, [BattleAnimTemps] cp $4f ret nc call GetBattleAnimByte ld [hli], a ld a, [BattleAnimTemps] ld [hli], a push bc push hl ld l, a ld h, $0 rept 4 add hl, hl endr ld de, $8310 add hl, de ld a, [BattleAnimByte] call Functionce846 ld a, [BattleAnimTemps] add c ld [BattleAnimTemps], a pop hl pop bc dec c jr nz, .asm_cc492 ret BattleAnimCmd_D6: ; cc4c0 (33:44c0) call GetBattleAnimByte ld e, $a ld bc, OTPartyMon3HP .asm_cc4c8 ld hl, $0 add hl, bc ld d, [hl] ld a, [BattleAnimByte] cp d jr z, .asm_cc4dd ld hl, $18 add hl, bc ld c, l ld b, h dec e jr nz, .asm_cc4c8 ret .asm_cc4dd ld hl, $e add hl, bc inc [hl] ret BattleAnimCmd_D8: ; cc4e3 (33:44e3) call GetBattleAnimByte ld e, $5 ld bc, ActiveBGEffects .asm_cc4eb ld hl, $0 add hl, bc ld d, [hl] ld a, [BattleAnimByte] cp d jr z, .asm_cc500 ld hl, $4 add hl, bc ld c, l ld b, h dec e jr nz, .asm_cc4eb ret .asm_cc500 ld hl, $1 add hl, bc inc [hl] ret BattleAnimCmd_D7: ; cc506 (33:4506) call GetBattleAnimByte ld e, $a ld bc, OTPartyMon3HP .asm_cc50e ld hl, $0 add hl, bc ld d, [hl] ld a, [BattleAnimByte] cp d jr z, .asm_cc523 ld hl, $18 add hl, bc ld c, l ld b, h dec e jr nz, .asm_cc50e ret .asm_cc523 call GetBattleAnimByte ld hl, $e add hl, bc ld [hl], a ret BattleAnimCmd_D9: ; cc52c (33:452c) ld hl, w5_d300 .asm_cc52f ld a, [hl] and a jr z, .asm_cc537 rept 2 inc hl endr jr .asm_cc52f .asm_cc537 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, $8730 ld de, $9060 ld a, $70 ld [BattleAnimTemps], a ld a, $7 call Functioncc561 ld de, $9310 ld a, $60 ld [BattleAnimTemps], a ld a, $6 call Functioncc561 ret Functioncc561: ; cc561 (33:4561) push af push hl push de ld bc, $3301 call Request2bpp pop de ld a, [BattleAnimTemps] ld l, a ld h, $0 add hl, de ld e, l ld d, h pop hl ld bc, $10 add hl, bc pop af dec a jr nz, Functioncc561 ret BattleAnimCmd_DA: ; cc57e (33:457e) ld hl, w5_d300 .asm_cc581 ld a, [hl] and a jr z, .asm_cc589 rept 2 inc hl endr jr .asm_cc581 .asm_cc589 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, $8660 ld de, $9050 ld a, $70 ld [BattleAnimTemps], a ld a, $7 call Functioncc5b3 ld de, $9310 ld a, $60 ld [BattleAnimTemps], a ld a, $6 call Functioncc5b3 ret Functioncc5b3: ; cc5b3 (33:45b3) push af push hl push de ld bc, $3302 call Request2bpp pop de ld a, [BattleAnimTemps] ld l, a ld h, $0 add hl, de ld e, l ld d, h pop hl ld bc, $20 add hl, bc pop af dec a jr nz, Functioncc5b3 ret BattleAnimCmd_DB: ; cc5d0 (33:45d0) callab GetPokeBallWobble ld a, c ld [BattleAnimVar], a ret BattleAnimCmd_E7: ; cc5db (33:45db) ret BattleAnimCmd_DC: ; cc5dc (33:45dc) ld a, [rSVBK] ; $ff00+$70 push af ld a, 1 ld [rSVBK], a ; $ff00+$70 ld a, [CurPartySpecies] ; CurPartySpecies push af ld a, [hBattleTurn] ; $ff00+$e4 and a jr z, .player ld a, [TempBattleMonSpecies] ; TempBattleMonSpecies ld [CurPartySpecies], a ; CurPartySpecies ld hl, BattleMonDVs ; BattleMonDVs predef GetUnownLetter ld de, $8000 predef GetFrontpic jr .done .player ld a, [TempEnemyMonSpecies] ; TempEnemyMonSpecies ld [CurPartySpecies], a ; CurPartySpecies ld hl, EnemyMonDVs ; EnemyMonDVs predef GetUnownLetter ld de, $8000 predef GetBackpic .done pop af ld [CurPartySpecies], a ; CurPartySpecies pop af ld [rSVBK], a ; $ff00+$70 ret BattleAnimCmd_E8: ; cc622 (33:4622) ld de, $8000 ld a, [hBattleTurn] ; $ff00+$e4 and a jr z, .player ld hl, $9000 ld b, 0 ld c, $31 call Request2bpp ret .player ld hl, $9310 ld b, 0 ld c, $24 call Request2bpp ret BattleAnimCmd_DD: ; cc640 (33:4640) ld a, [rSVBK] ; $ff00+$70 push af ld a, 1 ld [rSVBK], a ; $ff00+$70 xor a call GetSRAMBank GetSubstitutePic: ; cc64c ld hl, sScratch ld bc, $310 .loop xor a ld [hli], a dec bc ld a, c or b jr nz, .loop ld a, [hBattleTurn] ; $ff00+$e4 and a jr z, .player ld hl, MonsterSpriteGFX ld de, sScratch + $130 call CopyMonsterSpriteTile ld hl, MonsterSpriteGFX + $10 ld de, sScratch + $1a0 call CopyMonsterSpriteTile ld hl, MonsterSpriteGFX + $20 ld de, sScratch + $140 call CopyMonsterSpriteTile ld hl, MonsterSpriteGFX + $30 ld de, sScratch + $1b0 call CopyMonsterSpriteTile ld hl, $9000 ld de, sScratch lb bc, BANK(GetSubstitutePic), 7 * 7 call Request2bpp jr .done .player ld hl, MonsterSpriteGFX + $40 ld de, sScratch + $100 call CopyMonsterSpriteTile ld hl, MonsterSpriteGFX + $50 ld de, sScratch + $160 call CopyMonsterSpriteTile ld hl, MonsterSpriteGFX + $60 ld de, sScratch + $110 call CopyMonsterSpriteTile ld hl, MonsterSpriteGFX + $70 ld de, sScratch + $170 call CopyMonsterSpriteTile ld hl, $9310 ld de, sScratch lb bc, BANK(GetSubstitutePic), 6 * 6 call Request2bpp .done call CloseSRAM pop af ld [rSVBK], a ; $ff00+$70 ret CopyMonsterSpriteTile: ; cc6c6 (33:46c6) ld bc, $10 ld a, BANK(MonsterSpriteGFX) call FarCopyBytes ret BattleAnimCmd_E2: ; cc6cf (33:46cf) ld a, [rSVBK] ; $ff00+$70 push af ld a, $1 ld [rSVBK], a ; $ff00+$70 xor a call GetSRAMBank call GetMinimizePic call Request2bpp call CloseSRAM pop af ld [rSVBK], a ; $ff00+$70 ret GetMinimizePic: ; cc6e7 (33:46e7) ld hl, sScratch ld bc, $310 .loop xor a ld [hli], a dec bc ld a, c or b jr nz, .loop ld a, [hBattleTurn] ; $ff00+$e4 and a jr z, .player ld de, sScratch + $1a0 call CopyMinimizePic ld hl, $9000 ld de, sScratch lb bc, BANK(GetMinimizePic), $31 ret .player ld de, sScratch + $160 call CopyMinimizePic ld hl, $9310 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_E9: ; cc735 (33:4735) ld a, [rSVBK] ; $ff00+$70 push af ld a, $1 ld [rSVBK], a ; $ff00+$70 xor a call GetSRAMBank call GetMinimizePic ld hl, $8000 call Request2bpp call CloseSRAM pop af ld [rSVBK], a ; $ff00+$70 ret BattleAnimCmd_DE: ; cc750 (33:4750) ld a, [rSVBK] ; $ff00+$70 push af ld a, $1 ld [rSVBK], a ; $ff00+$70 ld a, [CurPartySpecies] ; CurPartySpecies push af ld a, [hBattleTurn] ; $ff00+$e4 and a jr z, .player callab Function3f486 jr .done .player callab Function3f447 .done pop af ld [CurPartySpecies], a ; CurPartySpecies pop af ld [rSVBK], a ; $ff00+$70 ret BattleAnimCmd_E6: ; cc776 (33:4776) ld a, [rSVBK] ; $ff00+$70 push af ld a, $1 ld [rSVBK], a ; $ff00+$70 ld a, [CurPartySpecies] ; CurPartySpecies push af ld a, [wc689] ld [CurPartySpecies], a ; CurPartySpecies ld a, [hBattleTurn] ; $ff00+$e4 and a jr z, .player ld hl, BattleMonDVs ; BattleMonDVs predef GetUnownLetter ld de, $9000 predef GetFrontpic jr .done .player ld hl, EnemyMonDVs ; EnemyMonDVs predef GetUnownLetter ld de, $9310 predef GetBackpic .done pop af ld [CurPartySpecies], a ; CurPartySpecies ld b, $1 call GetSGBLayout pop af ld [rSVBK], a ; $ff00+$70 ret BattleAnimCmd_E3: ; cc7bb (33:47bb) xor a ld [hOAMUpdate], a ; $ff00+$d8 ret BattleAnimCmd_E4: ; cc7bf (33:47bf) ld a, $1 ld [hOAMUpdate], a ; $ff00+$d8 ret BattleAnimCmd_F4: ; 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_E0: ; cc7cd (33:47cd) call GetBattleAnimByte ld e, a srl a srl a ld [wc2be], a call Functioncc7fc and 3 ld [CryTracks], a ; CryTracks ld e, a ld d, 0 ld hl, Datacc7f8 add hl, de ld a, [hl] ld [wc2bc], a call GetBattleAnimByte ld e, a ld d, 0 callab PlayStereoSFX ret ; cc7f8 (33:47f8) Datacc7f8: ; cc7f8 db $f0, $0f, $f0, $0f ; cc7fc Functioncc7fc: ; cc7fc (33:47fc) ld a, [hBattleTurn] ; $ff00+$e4 and a jr nz, .enemy ld a, e ret .enemy ld a, e xor 1 ret BattleAnimCmd_E1: ; cc807 (33:4807) call GetBattleAnimByte and 3 ld e, a ld d, 0 ld hl, Datacc871 rept 4 add hl, de endr ld a, [rSVBK] ; $ff00+$70 push af ld a, 1 ld [rSVBK], a ; $ff00+$70 ld a, [hBattleTurn] ; $ff00+$e4 and a jr nz, .enemy ld a, $f0 ld [CryTracks], a ; CryTracks ld a, [BattleMonSpecies] ; BattleMonSpecies jr .asm_cc834 .enemy ld a, $0f ld [CryTracks], a ; CryTracks ld a, [EnemyMonSpecies] ; EnemyMon .asm_cc834 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 [wc2bc], a callab _PlayCryHeader .done pop af ld [rSVBK], a ; $ff00+$70 ret ; cc871 (33:4871) Datacc871: ; cc871 ; +pitch, +length dw 0, $c0 dw 0, $40 dw 0, $00 dw 0, $00 ; cc881 Functioncc881: ; cc881 ld a, [wcfca] cp $1 jr z, .asm_cc88b cp $4 ret nz .asm_cc88b 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, .asm_cc8be ld a, [hSGB] and a ld a, $e0 jr z, .asm_cc8b2 ld a, $f0 .asm_cc8b2 ld [wcfc8], a ld a, $e4 ld [wcfc7], a ld [wcfc9], a ret .asm_cc8be ld a, $e4 ld [wcfc7], a ld [wcfc8], a ld [wcfc9], a call DmgToCgbBGPals ld de, $e4e4 call DmgToCgbObjPals ret ; cc8d3 Functioncc8d3: ; cc8d3 ld hl, LYOverrides ld bc, $0354 .asm_cc8d9 ld [hl], $0 inc hl dec bc ld a, c or b jr nz, .asm_cc8d9 ld hl, FXAnimIDLo ld e, [hl] inc hl ld d, [hl] ld hl, BattleAnimations rept 2 add hl, de endr call Function3ae1 call BattleAnimAssignPals call BattleAnimDelayFrame ret ; cc8f6 Functioncc8f6: ; cc8f6 call WaitTop ld a, $e4 ld [wcfc7], a ld [wcfc8], a ld [wcfc9], a call DmgToCgbBGPals ld de, $e4e4 call DmgToCgbObjPals xor a ld [hSCX], a ld [hSCY], a call BattleAnimDelayFrame ld a, $1 ld [hBGMapMode], a ret ; cc91a Functioncc91a: ; 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, Unkn1Pals ld a, [rBGP] ld b, a ld c, $7 call CopyPals ld hl, OBPals ld de, Unkn2Pals ld a, [rBGP] ld b, a ld c, $2 call CopyPals pop af ld [rSVBK], a ld a, $1 ld [hCGBPalUpdate], a ret ; cc94b Functioncc94b: ; 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 + $10 ld de, Unkn2Pals + $10 ld a, [rOBP0] ld b, a ld c, $2 call CopyPals pop af ld [rSVBK], a ld a, $1 ld [hCGBPalUpdate], a ret ; cc96e Functioncc96e: ; cc96e ld a, $0 ld [w5_d418], a ld hl, OTPartyMon3HP ld e, $a .asm_cc978 ld a, [hl] and a jr z, .asm_cc98a ld c, l ld b, h push hl push de call Functionccfbe call Functioncca09 pop de pop hl jr c, .asm_cc9a0 .asm_cc98a ld bc, $0018 add hl, bc dec e jr nz, .asm_cc978 ld a, [w5_d418] ld l, a ld h, $c4 .asm_cc997 ld a, l cp $a0 jr nc, .asm_cc9a0 xor a ld [hli], a jr .asm_cc997 .asm_cc9a0 ret ; cc9a1