ref: 0b7d8d44ad6b911c4fe2e74b7d5bcbee971d7c90
dir: /engine/sprite_anims.asm/
DoAnimFrame: ; 8d24b ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID add hl, bc ld e, [hl] ld d, 0 ld hl, .Jumptable add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a jp hl ; 8d25b .Jumptable: ; 8d25b (23:525b) ; entries correspond to SPRITE_ANIM_SEQ_* constants dw .Null dw .PartyMon dw .PartyMonSwitch dw .PartyMonSelected dw .sprite_anim_seq_04 dw .namingscreencursor dw .GameFreakLogo dw .GSIntroStar dw .GSIntroSparkle dw .SlotsGolem dw .SlotsChansey dw .SlotsChanseyEgg dw .MailCursor dw .sprite_anim_seq_0D dw .sprite_anim_seq_0E dw .sprite_anim_seq_0F dw .TradePokeBall dw .TradeTubeBulge dw .TrademonInTube dw .RevealNewMon dw .RadioTuningKnob dw .CutLeaves dw .FlyFrom dw .FlyLeaf dw .FlyTo dw .sprite_anim_seq_19 dw .sprite_anim_seq_1A dw .sprite_anim_seq_1B dw .sprite_anim_seq_1C dw .IntroSuicune dw .IntroPichuWooper dw .Celebi dw .IntroUnown dw .IntroUnownF dw .IntroSuicuneAway .Null: ; 8d2a1 (23:52a1) ret .PartyMon ; 8d2a2 (23:52a2) ld a, [wMenuCursorY] ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc cp [hl] jr z, .PartyMonSwitch ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], 8 * 2 ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], $0 ret .PartyMonSwitch ; 8d2b9 (23:52b9) ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], 8 * 3 ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] ld d, a inc [hl] and $f ret nz ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld e, [hl] ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld a, d and $10 ; bit 4 jr z, .load_zero ld a, e and a jr z, .load_minus_two cp $1 jr z, .load_minus_one .load_zero xor a ld [hl], a ret .load_minus_one ld a, -1 ld [hl], a ret .load_minus_two ld a, -2 ld [hl], a ret .PartyMonSelected ; 8d2ea (23:52ea) ld a, [wMenuCursorY] ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc cp [hl] jr z, .three_offset_right ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], 8 * 2 ret .three_offset_right ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], 8 * 3 ret .sprite_anim_seq_04 ; 8d302 (23:5302) call .AnonymousJumptable jp hl ; 8d306 (23:5306) ; Anonymous dw (see .AnonymousJumptable) dw .four_zero dw .four_one ; 8d30a .four_zero ; 8d30a call .IncrementJumptableIndex ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc ld a, [hl] ld hl, SPRITEANIMSTRUCT_0D add hl, bc and $3 ld [hl], a inc [hl] swap a ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a .four_one ; 8d321 ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] cp $a4 jr nc, .asm_8d356 ld hl, SPRITEANIMSTRUCT_0D add hl, bc add $4 ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], a ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc inc [hl] ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] sla a sla a ld d, $2 ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] add $3 ld [hl], a call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret .asm_8d356 call DeinitializeSprite ret ; 8d35a .sprite_anim_seq_19 ; 8d35a (23:535a) ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] inc a ld [hl], a ld d, $2 call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret .namingscreencursor ; 8d36c (23:536c) callab NamingScreen_AnimateCursor ret .MailCursor ; 8d373 (23:5373) callab ComposeMail_AnimateCursor ret .GameFreakLogo: ; 8d37a (23:537a) callab GameFreakLogoJumper ret .GSIntroStar ; 8d381 (23:5381) ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a jr z, .asm_8d3ba dec [hl] dec [hl] ld d, a and $1f jr nz, .asm_8d395 ld hl, SPRITEANIMSTRUCT_0D add hl, bc dec [hl] .asm_8d395 ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld a, [hl] push af push de call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af call .Sprites_Cosine ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc add [hl] ld [hl], a ret .asm_8d3ba ld a, $1 ld [wcf64], a call DeinitializeSprite ret .GSIntroSparkle ; 8d3c3 (23:53c3) ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hli] or [hl] jr z, .asm_8d41e ld hl, SPRITEANIMSTRUCT_0F add hl, bc ld d, [hl] ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld a, [hl] push af push de call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af call .Sprites_Cosine ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld e, [hl] inc hl ld d, [hl] ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld a, [hli] ld h, [hl] ld l, a add hl, de ld e, l ld d, h ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld [hl], e inc hl ld [hl], d ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hli] ld h, [hl] ld l, a ld de, -$10 add hl, de ld e, l ld d, h ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], e inc hl ld [hl], d ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld a, [hl] xor $20 ld [hl], a ret .asm_8d41e call DeinitializeSprite ret .SlotsGolem: ; 8d422 (23:5422) callab SlotMachine_AnimateGolem ret .SlotsChansey: ; 8d429 (23:5429) callab Slots_AnimateChansey ld hl, wcf64 ld a, [hl] cp $2 ret nz ld [hl], $3 ld a, SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY_2 call _ReinitSpriteAnimFrame ret .SlotsChanseyEgg: ; 8d43e (23:543e) ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld a, [hl] dec [hl] ld e, a and $1 jr z, .move_vertical ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] cp 15 * 8 jr c, .move_right call DeinitializeSprite ld a, $4 ld [wcf64], a ld de, SFX_PLACE_PUZZLE_PIECE_DOWN call PlaySFX ret .move_right inc [hl] .move_vertical ld a, e ld d, $20 call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret .sprite_anim_seq_0D ; 8d46e (23:546e) callab ret_e00ed ret .sprite_anim_seq_0F ; 8d475 (23:5475) callab AnimatePokegearModeIndicatorArrow ret .sprite_anim_seq_0E ; 8d47c (23:547c) callab DummyGame_InterpretJoypad_AnimateCursor ret .TradePokeBall ; 8d483 (23:5483) call .AnonymousJumptable jp hl ; 8d487 (23:5487) ; Anonymous dw (see .AnonymousJumptable) dw .TradePokeBall_zero dw .TradePokeBall_one dw .TradePokeBall_two dw .TradePokeBall_three dw .TradePokeBall_four dw .TradePokeBall_five ; 8d493 .TradePokeBall_zero ; 8d493 ld a, SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_0 call _ReinitSpriteAnimFrame ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld [hl], $2 ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $20 ret ; 8d4a5 .TradePokeBall_two ; 8d4a5 ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a jr z, .asm_8d4af dec [hl] ret .asm_8d4af call .IncrementJumptableIndex ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $40 .TradePokeBall_three ; 8d4b8 ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $30 jr c, .asm_8d4cd dec [hl] ld d, $28 call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret .asm_8d4cd ld de, SFX_GOT_SAFARI_BALLS call PlaySFX jr .TradePokeBall_five ; 8d4d5 .TradePokeBall_one ; 8d4d5 ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld [hl], $4 ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $30 ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $24 ret ; 8d4e8 .TradePokeBall_four ; 8d4e8 ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] and a jr z, .asm_8d51c ld d, a ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] call Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ld hl, SPRITEANIMSTRUCT_0C add hl, bc inc [hl] ld a, [hl] and $3f ret nz ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $20 ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] sub $c ld [hl], a ld de, SFX_SWITCH_POKEMON call PlaySFX ret .asm_8d51c xor a ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a call .IncrementJumptableIndex ret .TradePokeBall_five ; 8d526 call DeinitializeSprite ret ; 8d52a .TradeTubeBulge ; 8d52a (23:552a) ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] inc [hl] inc [hl] cp $b0 jr nc, .delete and $3 ret nz ld de, SFX_POKEBALLS_PLACED_ON_TABLE call PlaySFX ret .delete call DeinitializeSprite ret .TrademonInTube ; 8d543 (23:5543) callab TradeAnim_AnimateTrademonInTube ret .RevealNewMon: ; 8d54a (23:554a) ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $80 jr nc, .finish_EggShell ld d, a add $8 ld [hl], a ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld a, [hl] xor $20 ld [hl], a push af push de call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af call .Sprites_Cosine ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .finish_EggShell call DeinitializeSprite ret .RadioTuningKnob: ; 8d578 (23:5578) callab AnimateTuningKnob ret .CutLeaves ; 8d57f (23:557f) ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld e, [hl] inc hl ld d, [hl] ld hl, $80 add hl, de ld e, l ld d, h ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], e inc hl ld [hl], d ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] inc [hl] inc [hl] inc [hl] push af push de call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af call .Sprites_Cosine ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .FlyFrom: ; 8d5b0 (23:55b0) ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] and a ret z ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] inc [hl] cp $40 ret c ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc dec [hl] dec [hl] ld hl, SPRITEANIMSTRUCT_0F add hl, bc ld a, [hl] ld d, a cp $40 jr nc, .skip add $8 ld [hl], a .skip ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld a, [hl] inc [hl] call .Sprites_Cosine ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .FlyLeaf: ; 8d5e2 (23:55e2) ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] cp -9 * 8 jr nc, .delete_leaf inc [hl] inc [hl] ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc dec [hl] ld d, $40 ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] inc [hl] call .Sprites_Cosine ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .delete_leaf call DeinitializeSprite ret .FlyTo: ; 8d607 (23:5607) ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] cp 10 * 8 + 4 ret z ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc inc [hl] inc [hl] ld hl, SPRITEANIMSTRUCT_0F add hl, bc ld a, [hl] ld d, a and a jr z, .asm_8d621 sub $2 ld [hl], a .asm_8d621 ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld a, [hl] inc [hl] call .Sprites_Cosine ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .sprite_anim_seq_1B ; 8d630 (23:5630) callba Function108bc7 ret .sprite_anim_seq_1C ; 8d637 (23:5637) callba Function108be0 ret .IntroSuicune ; 8d63e (23:563e) ld a, [wcf65] and a jr nz, .asm_8d645 ret .asm_8d645 ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], $0 ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] add $2 ld [hl], a xor $ff inc a ld d, $20 call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ld a, SPRITE_ANIM_FRAMESET_INTRO_SUICUNE_2 call _ReinitSpriteAnimFrame ret .IntroPichuWooper ; 8d666 (23:5666) ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $14 jr nc, .asm_8d67f add $2 ld [hl], a xor $ff inc a ld d, $20 call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a .asm_8d67f ret .IntroUnown ; 8d680 (23:5680) ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld d, [hl] inc [hl] inc [hl] inc [hl] ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] push af push de call .Sprites_Sine ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af call .Sprites_Cosine ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .IntroUnownF ; 8d6a2 (23:56a2) ld a, [wcf64] cp $40 ret nz ld a, SPRITE_ANIM_FRAMESET_INTRO_UNOWN_F_2 call _ReinitSpriteAnimFrame ret .IntroSuicuneAway ; 8d6ae (23:56ae) ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] add $10 ld [hl], a ret .sprite_anim_seq_1A ; 8d6b7 (23:56b7) callba AnimateEZChatCursor ret .Celebi ; 8d6be (23:56be) callba UpdateCelebiPosition ret .AnonymousJumptable: ; 8d6c5 (23:56c5) ld hl, sp+$0 ld e, [hl] inc hl ld d, [hl] inc de ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld l, [hl] ld h, $0 add hl, hl add hl, de ld a, [hli] ld h, [hl] ld l, a ret ; 8d6d8 (23:56d8) .IncrementJumptableIndex: ; 8d6d8 ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc inc [hl] ret ; 8d6de .Sprites_Sine: ; 8d6de (23:56de) call Sprites_Sine ret .Sprites_Cosine: ; 8d6e2 (23:56e2) call Sprites_Cosine ret ; 8d6e6 (23:56e6)