diff options
Diffstat (limited to 'engine/gfx/sprite_anims.asm')
-rwxr-xr-x | engine/gfx/sprite_anims.asm | 2800 |
1 files changed, 1468 insertions, 1332 deletions
diff --git a/engine/gfx/sprite_anims.asm b/engine/gfx/sprite_anims.asm index 2877539d..a6e717e8 100755 --- a/engine/gfx/sprite_anims.asm +++ b/engine/gfx/sprite_anims.asm @@ -1,1361 +1,1497 @@ -DoAnimFrame: ; 8d463 - ld hl, $2 ; 23:5463 - add hl, bc ; 23:5466 - ld e, [hl] ; 23:5467 - ld d, $0 ; 23:5468 - ld hl, .Jumptable ; 23:546a - add hl, de ; 23:546d - add hl, de ; 23:546e - ld a, [hli] ; 23:546f - ld h, [hl] ; 23:5470 - ld l, a ; 23:5471 - jp hl ; 23:5472 - -.Jumptable: ; 23:5473 - dw Function8d4c7 - dw Function8d4c8 - dw Function8d4df - dw Function8d510 - dw Function8d528 - dw Function8d54e - dw Function8d55d - dw Function8d5a2 - dw Function8d5bf - dw Function8d623 - dw Function8d66b - dw Function8d690 - dw Function8d702 - dw Function8d765 - dw Function8d7b1 - dw Function8d7ef - dw Function8d82d - dw Function8d897 - dw Function8d8b8 - dw Function8d8bf - dw Function8d909 - dw Function8d91a - dw Function8d928 - dw Function8d92f - dw Function8d971 - dw Function8d9d0 - dw Function8d9d7 - dw Function8d9ec - dw Function8d921 - dw Function8da1c - dw Function8da2a - dw Function8da23 - dw Function8da31 - dw Function8dad8 - dw Function8daf0 - dw Function8daf7 - dw Function8db25 - dw Function8db2c - dw Function8db5d - dw Function8db8f - dw Function8dbb4 - dw Function8d885 - -Function8d4c7: ; 8d4c7 - ret ; 23:54c7 - -Function8d4c8: ; 8d4c8 - ld a, [$cee0] ; 23:54c8 - ld hl, $0 ; 23:54cb - add hl, bc ; 23:54ce - cp [hl] ; 23:54cf - jr z, Function8d4df ; 23:54d0 - ld hl, $4 ; 23:54d2 - add hl, bc ; 23:54d5 - ld [hl], $10 ; 23:54d6 - ld hl, $7 ; 23:54d8 - add hl, bc ; 23:54db - ld [hl], $0 ; 23:54dc - ret ; 23:54de - -Function8d4df: ; 8d4df - ld hl, $4 ; 23:54df - add hl, bc ; 23:54e2 - ld [hl], $18 ; 23:54e3 - ld hl, $c ; 23:54e5 - add hl, bc ; 23:54e8 - ld a, [hl] ; 23:54e9 - ld d, a ; 23:54ea - inc [hl] ; 23:54eb - and $f ; 23:54ec - ret nz ; 23:54ee - ld hl, $d ; 23:54ef - add hl, bc ; 23:54f2 - ld e, [hl] ; 23:54f3 - ld hl, $7 ; 23:54f4 - add hl, bc ; 23:54f7 - ld a, d ; 23:54f8 - and $10 ; 23:54f9 - jr z, .asm_8d505 ; 23:54fb - ld a, e ; 23:54fd - and a ; 23:54fe - jr z, Function8d50c ; 23:54ff - cp $1 ; 23:5501 - jr z, Function8d508 ; 23:5503 -.asm_8d505 - xor a ; 23:5505 - ld [hl], a ; 23:5506 - ret ; 23:5507 - -Function8d508: ; 8d508 - ld a, $ff ; 23:5508 - ld [hl], a ; 23:550a - ret ; 23:550b - -Function8d50c: ; 8d50c - ld a, $fe ; 23:550c - ld [hl], a ; 23:550e - ret ; 23:550f - -Function8d510: ; 8d510 - ld a, [$cee0] ; 23:5510 - ld hl, $0 ; 23:5513 - add hl, bc ; 23:5516 - cp [hl] ; 23:5517 - jr z, Function8d521 ; 23:5518 - ld hl, $4 ; 23:551a - add hl, bc ; 23:551d - ld [hl], $10 ; 23:551e - ret ; 23:5520 - -Function8d521: ; 8d521 - ld hl, $4 ; 23:5521 - add hl, bc ; 23:5524 - ld [hl], $18 ; 23:5525 - ret ; 23:5527 - -Function8d528: ; 8d528 - ld hl, $d ; 23:5528 - add hl, bc ; 23:552b - ld a, [hl] ; 23:552c - inc [hl] ; 23:552d - cp $40 ; 23:552e - jr nc, Function8d54a ; 23:5530 - ld hl, $7 ; 23:5532 - add hl, bc ; 23:5535 - dec [hl] ; 23:5536 - ld hl, $c ; 23:5537 - add hl, bc ; 23:553a - ld a, [hl] ; 23:553b - add a, $2 ; 23:553c - ld [hl], a ; 23:553e - ld d, $8 ; 23:553f - call Function8dbf6 ; 23:5541 - ld hl, $6 ; 23:5544 - add hl, bc ; 23:5547 - ld [hl], a ; 23:5548 - ret ; 23:5549 - -Function8d54a: ; 8d54a - call DeinitializeSprite ; 23:554a - ret ; 23:554d - -Function8d54e: ; 8d54e - ld a, [$c5c7] ; 23:554e - ld hl, $5 ; 23:5551 - add hl, bc ; 23:5554 - add [hl] ; 23:5555 - cp $b0 ; 23:5556 - ret c ; 23:5558 - call DeinitializeSprite ; 23:5559 - ret ; 23:555c - -Function8d55d: ; 8d55d - call Function8dbdd ; 23:555d - jp hl ; 23:5560 - -; anonymous jumptable - dw Function8d565 - dw Function8d576 - -Function8d565: ; 8d565 - call Function8dbf0 ; 23:5565 - ld hl, $0 ; 23:5568 - add hl, bc ; 23:556b - ld a, [hl] ; 23:556c - and $3 ; 23:556d - swap a ; 23:556f - ld hl, $c ; 23:5571 - add hl, bc ; 23:5574 - ld [hl], a ; 23:5575 -Function8d576: ; 8d576 - ld de, $201 ; 23:5576 - ldh a, [$ffe9] ; 23:5579 - and a ; 23:557b - jr z, .asm_8d581 ; 23:557c - ld de, $402 ; 23:557e +DoAnimFrame: + 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 + +.Jumptable: +; entries correspond to SPRITE_ANIM_SEQ_* constants + dw .Null + dw .PartyMon + dw .PartyMonSwitch + dw .PartyMonSelected + dw .GSIntroBubble + dw .GSIntroShellder + dw .GSIntroMagikarp + dw .GSIntroLapras + dw .GSIntroLapras2 + dw .GSIntroNote + dw .GSIntroJigglypuff + dw .GSIntroPikachu + dw .GSIntroPikachuTail + dw .GSIntroFireball + dw .GSIntroChikoritaTotodile + dw .GSIntroCyndaquil + dw .GSTitleTrail + dw .UnusedPikachu + dw .UnusedPikachuTail + dw .UnusedNote + dw .UnusedJigglypuff + dw .NamingScreenCursor + dw .GameFreakLogo + dw .GSIntroStar + dw .GSIntroSparkle + dw .SlotsGolem + dw .SlotsChansey + dw .SlotsChanseyEgg + dw .MailCursor + dw .UnusedCursor + dw .DummyGameCursor + dw .PokegearArrow + dw .TradePokeBall + dw .TradeTubeBulge + dw .TrademonInTube + dw .RevealNewMon + dw .RadioTuningKnob + dw .CutLeaves + dw .FlyFrom + dw .FlyLeaf + dw .FlyTo + dw .GSIntroHoOhLugia + +.Null: + ret + +.PartyMon + 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 + 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 + 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 + +.GSIntroBubble + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + inc [hl] + cp $40 + jr nc, .asm_8d54a + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + dec [hl] + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + add $02 + ld [hl], a + ld d, $08 + call .Sprites_Sine + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +.asm_8d54a + call DeinitializeSprite + ret + +.GSIntroShellder + ld a, [wGlobalAnimYOffset] + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + add [hl] + cp $b0 + ret c + call DeinitializeSprite + ret + +.GSIntroMagikarp + call .AnonymousJumptable + jp hl + +; Anonymous dw (see .AnonymousJumptable) + dw .Function8d565 + dw .Function8d576 + +.Function8d565 + call .IncrementJumptableIndex + + ld hl, SPRITEANIMSTRUCT_INDEX + add hl, bc + ld a, [hl] + + and $03 + swap a + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], a + +.Function8d576 + ld de, $0201 + ldh a, [hSGB] + and a + jr z, .asm_8d581 + ld de, $0402 + .asm_8d581 - ld hl, $6 ; 23:5581 - add hl, bc ; 23:5584 - ld a, [hl] ; 23:5585 - cp $f0 ; 23:5586 - jr nc, Function8d59e ; 23:5588 - add d ; 23:558a - ld [hl], a ; 23:558b - ld hl, $c ; 23:558c - add hl, bc ; 23:558f - ld a, [hl] ; 23:5590 - add e ; 23:5591 - ld [hl], a ; 23:5592 - ld d, $8 ; 23:5593 - call Function8dbf6 ; 23:5595 - ld hl, $7 ; 23:5598 - add hl, bc ; 23:559b - ld [hl], a ; 23:559c - ret ; 23:559d - -Function8d59e: ; 8d59e - call DeinitializeSprite ; 23:559e - ret ; 23:55a1 - -Function8d5a2: ; 8d5a2 - ld hl, $4 ; 23:55a2 - add hl, bc ; 23:55a5 - ld a, [hl] ; 23:55a6 - cp $b0 ; 23:55a7 - jr nc, Function8d5bb ; 23:55a9 - inc [hl] ; 23:55ab - ld hl, $c ; 23:55ac - add hl, bc ; 23:55af - ld a, [hl] ; 23:55b0 - inc [hl] ; 23:55b1 - and $1 ; 23:55b2 - ret z ; 23:55b4 - ld hl, $5 ; 23:55b5 - add hl, bc ; 23:55b8 - inc [hl] ; 23:55b9 - ret ; 23:55ba - -Function8d5bb: ; 8d5bb - call DeinitializeSprite ; 23:55bb - ret ; 23:55be - -Function8d5bf: ; 8d5bf - call Function8dbdd ; 23:55bf - jp hl ; 23:55c2 + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld a, [hl] + cp $f0 + jr nc, .asm_8d59e + + add d + ld [hl], a + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + add e + ld [hl], a + ld d, $08 + call .Sprites_Sine + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.asm_8d59e + call DeinitializeSprite + ret + +.GSIntroLapras + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $b0 + jr nc, .asm_8d5bb + + inc [hl] + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + inc [hl] + and $1 + ret z + + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + inc [hl] + ret + +.asm_8d5bb + call DeinitializeSprite + ret + +.GSIntroLapras2 + call .AnonymousJumptable + jp hl ; anonymous jumptable - dw Function8d5c9 - dw Function8d5e2 - dw Function8d5f3 - -Function8d5c9: ; 8d5c9 - call Function8d60b ; 23:55c9 - ret z ; 23:55cc - ld hl, $4 ; 23:55cd - add hl, bc ; 23:55d0 - ld a, [hl] ; 23:55d1 - cp $58 ; 23:55d2 - jr c, Function8d5d8 ; 23:55d4 - dec [hl] ; 23:55d6 - ret ; 23:55d7 - -Function8d5d8: ; 8d5d8 - call Function8dbf0 ; 23:55d8 - ld hl, $d ; 23:55db - add hl, bc ; 23:55de - ld [hl], $b0 ; 23:55df - ret ; 23:55e1 - -Function8d5e2: ; 8d5e2 - call Function8d60b ; 23:55e2 - ld hl, $d ; 23:55e5 - add hl, bc ; 23:55e8 - ld a, [hl] ; 23:55e9 - and a ; 23:55ea - jr z, Function8d5ef ; 23:55eb - dec [hl] ; 23:55ed - ret ; 23:55ee - -Function8d5ef: ; 8d5ef - call Function8dbf0 ; 23:55ef - ret ; 23:55f2 - -Function8d5f3: ; 8d5f3 - call Function8d60b ; 23:55f3 - ret z ; 23:55f6 - ld hl, $4 ; 23:55f7 - add hl, bc ; 23:55fa - ld a, [hl] ; 23:55fb - cp $d0 ; 23:55fc - jr z, Function8d602 ; 23:55fe - dec [hl] ; 23:5600 - ret ; 23:5601 - -Function8d602: ; 8d602 - call DeinitializeSprite ; 23:5602 - ld a, $1 ; 23:5605 - ld [$cb19], a ; 23:5607 - ret ; 23:560a - -Function8d60b: ; 8d60b - ld hl, $c ; 23:560b - add hl, bc ; 23:560e - ld a, [hl] ; 23:560f - inc [hl] ; 23:5610 - ld d, $4 ; 23:5611 - call Function8dbf6 ; 23:5613 - ld hl, $7 ; 23:5616 - add hl, bc ; 23:5619 - ld [hl], a ; 23:561a - ld hl, $c ; 23:561b - add hl, bc ; 23:561e - ld a, [hl] ; 23:561f - and $1 ; 23:5620 - ret ; 23:5622 - -Function8d623: ; 8d623 - call Function8dbdd ; 23:5623 - jp hl ; 23:5626 + dw .Function8d5c9 + dw .Function8d5e2 + dw .Function8d5f3 + +.Function8d5c9 + call .Function8d60b + ret z + + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $58 + jr c, .asm_8d5d8 + + dec [hl] + ret + + +.asm_8d5d8 + call .IncrementJumptableIndex + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld [hl], $b0 + ret + +.Function8d5e2 + call .Function8d60b + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d5ef + + dec [hl] + ret + +.asm_8d5ef + call .IncrementJumptableIndex + ret + +.Function8d5f3 + call .Function8d60b + ret z + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $d0 + jr z, .asm_8d602 + dec [hl] + ret + +.asm_8d602 + call DeinitializeSprite + ld a, $1 + ld [wBattleMonLevel], a + ret + +.Function8d60b + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + inc [hl] + ld d, 4 + call .Sprites_Sine + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + and $1 + ret + +.GSIntroNote + call .AnonymousJumptable + jp hl ; anonymous jumptable - dw Function8d62b - dw Function8d63e - -Function8d62b: ; 8d62b - call Function8dbf0 ; 23:562b - ld hl, $0 ; 23:562e - add hl, bc ; 23:5631 - ld a, [hl] ; 23:5632 - and $1 ; 23:5633 - swap a ; 23:5635 - sla a ; 23:5637 - ld hl, $c ; 23:5639 - add hl, bc ; 23:563c - ld [hl], a ; 23:563d -Function8d63e: ; 8d63e - ld hl, $6 ; 23:563e - add hl, bc ; 23:5641 - ld a, [hl] ; 23:5642 - cp $80 ; 23:5643 - jr nc, Function8d667 ; 23:5645 - inc [hl] ; 23:5647 - ld d, $4 ; 23:5648 - ld hl, $c ; 23:564a - add hl, bc ; 23:564d - ld a, [hl] ; 23:564e - add a, $2 ; 23:564f - ld [hl], a ; 23:5651 - call Function8dbf6 ; 23:5652 - ld hl, $7 ; 23:5655 - add hl, bc ; 23:5658 - ld [hl], a ; 23:5659 - ld hl, $c ; 23:565a - add hl, bc ; 23:565d - and $2 ; 23:565e - ret z ; 23:5660 - ld hl, $5 ; 23:5661 - add hl, bc ; 23:5664 - dec [hl] ; 23:5665 - ret ; 23:5666 - -Function8d667: ; 8d667 - call DeinitializeSprite ; 23:5667 - ret ; 23:566a - -Function8d66b: ; 8d66b - call Function8dbdd ; 23:566b - jp hl ; 23:566e + dw .Function8d62b + dw .Function8d63e + +.Function8d62b + call .IncrementJumptableIndex + ld hl, 0 + add hl, bc + ld a, [hl] + and $1 + swap a + sla a + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], a +.Function8d63e + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld a, [hl] + cp $80 + jr nc, .asm_8d667 + inc [hl] + ld d, $04 + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + add $02 + ld [hl], a + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + and $2 + ret z + + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] + ret + +.asm_8d667 + call DeinitializeSprite + ret + +.GSIntroJigglypuff + call .AnonymousJumptable + jp hl ; anonymous jumptable - dw Function8d673 - dw Function8d680 - -Function8d673: ; 8d673 - ld a, [$cb19] ; 23:5673 - and a ; 23:5676 - ret z ; 23:5677 - call Function8dbf0 ; 23:5678 - ld a, $c ; 23:567b - call Function8d332 ; 23:567d -Function8d680: ; 8d680 - ld hl, $4 ; 23:5680 - add hl, bc ; 23:5683 - ld a, [hl] ; 23:5684 - cp $d0 ; 23:5685 - jr z, Function8d68c ; 23:5687 - dec [hl] ; 23:5689 - dec [hl] ; 23:568a - ret ; 23:568b - -Function8d68c: ; 8d68c - call DeinitializeSprite ; 23:568c - ret ; 23:568f - -Function8d690: ; 8d690 - call Function8dbdd ; 23:5690 - jp hl ; 23:5693 + dw .Function8d673 + dw .Function8d680 + +.Function8d673 + ld a, [wBattleMonLevel] + and a + ret z + call .IncrementJumptableIndex + ld a, SPRITE_ANIM_FRAMESET_GS_INTRO_JIGGLYPUFF_2 + call _ReinitSpriteAnimFrame +.Function8d680 + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $d0 + jr z, .asm_8d68c + dec [hl] + dec [hl] + ret + +.asm_8d68c + call DeinitializeSprite + ret + +.GSIntroPikachu + call .AnonymousJumptable + jp hl ; anonymous jumptable - dw Function8d69c - dw Function8d6b6 - dw Function8d6c9 - dw Function8d6f2 -Function8d69c: - ld hl, $4 ; 23:569c - add hl, bc ; 23:569f - ld a, [hl] ; 23:56a0 - cp $80 ; 23:56a1 - jr z, Function8d6a7 ; 23:56a3 - dec [hl] ; 23:56a5 - ret ; 23:56a6 - -Function8d6a7: ; 8d6a7 - call Function8dbf0 ; 23:56a7 - ld hl, $d ; 23:56aa - add hl, bc ; 23:56ad - ld [hl], $30 ; 23:56ae - ld a, $e ; 23:56b0 - call Function8d332 ; 23:56b2 - ret ; 23:56b5 - -Function8d6b6: ; 8d6b6 - ld hl, $d ; 23:56b6 - add hl, bc ; 23:56b9 - ld a, [hl] ; 23:56ba - and a ; 23:56bb - jr z, Function8d6c0 ; 23:56bc - dec [hl] ; 23:56be - ret ; 23:56bf - -Function8d6c0: ; 8d6c0 - call Function8dbf0 ; 23:56c0 - ld a, $f ; 23:56c3 - call Function8d332 ; 23:56c5 - ret ; 23:56c8 - -Function8d6c9: ; 8d6c9 - ld hl, $c ; 23:56c9 - add hl, bc ; 23:56cc - ld a, [hl] ; 23:56cd - add a, $4 ; 23:56ce - ld [hl], a ; 23:56d0 - ld d, $4 ; 23:56d1 - call Function8dbf6 ; 23:56d3 - ld hl, $7 ; 23:56d6 - add hl, bc ; 23:56d9 - ld [hl], a ; 23:56da - ld hl, $4 ; 23:56db - add hl, bc ; 23:56de - ld a, [hl] ; 23:56df - cp $50 ; 23:56e0 - jr z, Function8d6e9 ; 23:56e2 - dec [hl] ; 23:56e4 - dec [hl] ; 23:56e5 - dec [hl] ; 23:56e6 - dec [hl] ; 23:56e7 - ret ; 23:56e8 - -Function8d6e9: ; 8d6e9 - ld a, $1 ; 23:56e9 - ld [$cb19], a ; 23:56eb - call Function8dbf0 ; 23:56ee - ret ; 23:56f1 - -Function8d6f2: ; 8d6f2 - ld hl, $4 ; 23:56f2 - add hl, bc ; 23:56f5 - ld a, [hl] ; 23:56f6 - cp $d0 ; 23:56f7 - jr z, Function8d6fe ; 23:56f9 - dec [hl] ; 23:56fb - dec [hl] ; 23:56fc - ret ; 23:56fd - -Function8d6fe: ; 8d6fe - call DeinitializeSprite ; 23:56fe - ret ; 23:5701 - -Function8d702: ; 8d702 - call Function8dbdd ; 23:5702 - jp hl ; 23:5705 + dw .Function8d69c + dw .Function8d6b6 + dw .Function8d6c9 + dw .Function8d6f2 + +.Function8d69c + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $80 + jr z, .asm_8d6a7 + dec [hl] + ret + +.asm_8d6a7 + call .IncrementJumptableIndex + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld [hl], $30 + ld a, SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_2 + call _ReinitSpriteAnimFrame + ret + +.Function8d6b6 + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d6c0 + dec [hl] + ret + +.asm_8d6c0 + call .IncrementJumptableIndex + ld a, SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_3 + call _ReinitSpriteAnimFrame + ret + +.Function8d6c9 + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + add $04 + ld [hl], a + ld d, $04 + call .Sprites_Sine + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $50 + jr z, .asm_8d6e9 + dec [hl] + dec [hl] + dec [hl] + dec [hl] + ret + +.asm_8d6e9 + ld a, 1 + ld [wBattleMonLevel], a + call .IncrementJumptableIndex + ret + +.Function8d6f2 + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $d0 + jr z, .asm_8d6fe + dec [hl] + dec [hl] + ret + +.asm_8d6fe + call DeinitializeSprite + ret + +.GSIntroPikachuTail + call .AnonymousJumptable + jp hl ; anonymous jumptable - dw Function8d70c - dw Function8d726 - dw Function8d73c - -Function8d70c: ; 8d70c - ld hl, $4 ; 23:570c - add hl, bc ; 23:570f - ld a, [hl] ; 23:5710 - cp $80 ; 23:5711 - jr z, Function8d717 ; 23:5713 - dec [hl] ; 23:5715 - ret ; 23:5716 - -Function8d717: ; 8d717 - call Function8dbf0 ; 23:5717 - ld hl, $d ; 23:571a - add hl, bc ; 23:571d - ld [hl], $30 ; 23:571e - ld a, $11 ; 23:5720 - call Function8d332 ; 23:5722 - ret ; 23:5725 - -Function8d726: ; 8d726 - ld hl, $d ; 23:5726 - add hl, bc ; 23:5729 - ld a, [hl] ; 23:572a - and a ; 23:572b - jr z, Function8d738 ; 23:572c - dec [hl] ; 23:572e - cp $20 ; 23:572f - ret nz ; 23:5731 - ld a, $10 ; 23:5732 - call Function8d332 ; 23:5734 - ret ; 23:5737 - -Function8d738: ; 8d738 - call Function8dbf0 ; 23:5738 - ret ; 23:573b - -Function8d73c: ; 8d73c - ld hl, $c ; 23:573c - add hl, bc ; 23:573f - ld a, [hl] ; 23:5740 - add a, $4 ; 23:5741 - ld [hl], a ; 23:5743 - ld d, $4 ; 23:5744 - call Function8dbf6 ; 23:5746 - ld hl, $7 ; 23:5749 - add hl, bc ; 23:574c - ld [hl], a ; 23:574d - ld hl, $4 ; 23:574e - add hl, bc ; 23:5751 - ld a, [hl] ; 23:5752 - cp $d0 ; 23:5753 - jr z, Function8d761 ; 23:5755 - dec [hl] ; 23:5757 - dec [hl] ; 23:5758 - ld a, [$cb19] ; 23:5759 - and a ; 23:575c - ret nz ; 23:575d - dec [hl] ; 23:575e - dec [hl] ; 23:575f - ret ; 23:5760 - -Function8d761: ; 8d761 - call DeinitializeSprite ; 23:5761 - ret ; 23:5764 - -Function8d765: ; 8d765 - call Function8dbdd ; 23:5765 - jp hl ; 23:5768 + dw .Function8d70c + dw .Function8d726 + dw .Function8d73c + +.Function8d70c + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $80 + jr z, .asm_8d717 + dec [hl] + ret + +.asm_8d717 + call .IncrementJumptableIndex + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld [hl], $30 + ld a, SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_TAIL_2 + call _ReinitSpriteAnimFrame + ret + +.Function8d726 + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d738 + dec [hl] + cp $20 + ret nz + ld a, SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_TAIL + call _ReinitSpriteAnimFrame + ret + +.asm_8d738 + call .IncrementJumptableIndex + ret + +.Function8d73c + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + add $04 + ld [hl], a + ld d, $04 + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $d0 + jr z, .asm_8d761 + dec [hl] + dec [hl] + ld a, [wBattleMonLevel] + and a + ret nz + dec [hl] + dec [hl] + ret + +.asm_8d761 + call DeinitializeSprite + ret + +.GSIntroFireball + call .AnonymousJumptable + jp hl ; anonymous jumptable - dw Function8d76d - dw Function8d786 - -Function8d76d: ; 8d76d - call Function8dbf0 ; 23:576d - ld hl, $0 ; 23:5770 - add hl, bc ; 23:5773 - ld a, [hl] ; 23:5774 - and $4 ; 23:5775 - sla a ; 23:5777 - ld e, a ; 23:5779 - ld a, [hl] ; 23:577a - and $3 ; 23:577b - swap a ; 23:577d - add e ; 23:577f - ld hl, $c ; 23:5780 - add hl, bc ; 23:5783 - ld [hl], a ; 23:5784 - ret ; 23:5785 - -Function8d786: ; 8d786 - ld hl, $4 ; 23:5786 - add hl, bc ; 23:5789 - dec [hl] ; 23:578a - dec [hl] ; 23:578b - dec [hl] ; 23:578c - dec [hl] ; 23:578d - ld hl, $d ; 23:578e - add hl, bc ; 23:5791 - ld a, [hl] ; 23:5792 - ld d, a ; 23:5793 - add a, $8 ; 23:5794 - ld [hl], a ; 23:5796 - ld hl, $c ; 23:5797 - add hl, bc ; 23:579a - ld a, [hl] ; 23:579b - push af ; 23:579c - push de ; 23:579d - call Function8dbf6 ; 23:579e - ld hl, $7 ; 23:57a1 - add hl, bc ; 23:57a4 - ld [hl], a ; 23:57a5 - pop de ; 23:57a6 - pop af ; 23:57a7 - call Function8dbfa ; 23:57a8 - ld hl, $6 ; 23:57ab - add hl, bc ; 23:57ae - ld [hl], a ; 23:57af - ret ; 23:57b0 - -Function8d7b1: ; 8d7b1 - call Function8dbdd ; 23:57b1 - jp hl ; 23:57b4 + dw .Function8d76d + dw .Function8d786 + +.Function8d76d + call .IncrementJumptableIndex + ld hl, 0 + add hl, bc + ld a, [hl] + and $4 + sla a + ld e, a + ld a, [hl] + and $3 + swap a + add e + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], a + ret + +.Function8d786 + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + dec [hl] + dec [hl] + dec [hl] + dec [hl] + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + ld d, a + add $8 + ld [hl], a + + 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 + +; flash down/right +.GSIntroChikoritaTotodile + call .AnonymousJumptable + jp hl ; anonymous jumptable - dw Function8d7b9 - dw Function8d7c9 - -Function8d7b9: ; 8d7b9 - call Function8dbf0 ; 23:57b9 - ld hl, $c ; 23:57bc - add hl, bc ; 23:57bf - ld [hl], $30 ; 23:57c0 - ld hl, $d ; 23:57c2 - add hl, bc ; 23:57c5 - ld [hl], $30 ; 23:57c6 - ret ; 23:57c8 - -Function8d7c9: ; 8d7c9 - ld hl, $c ; 23:57c9 - add hl, bc ; 23:57cc - ld a, [hl] ; 23:57cd - cp $3c ; 23:57ce - ret nc ; 23:57d0 - inc [hl] ; 23:57d1 - inc [hl] ; 23:57d2 - ld d, $90 ; 23:57d3 - call Function8dbf6 ; 23:57d5 - ld hl, $7 ; 23:57d8 - add hl, bc ; 23:57db - ld [hl], a ; 23:57dc - ld hl, $d ; 23:57dd - add hl, bc ; 23:57e0 - ld a, [hl] ; 23:57e1 - inc [hl] ; 23:57e2 - inc [hl] ; 23:57e3 - ld d, $90 ; 23:57e4 - call Function8dbfa ; 23:57e6 - ld hl, $6 ; 23:57e9 - add hl, bc ; 23:57ec - ld [hl], a ; 23:57ed - ret ; 23:57ee - -Function8d7ef: ; 8d7ef - call Function8dbdd ; 23:57ef - jp hl ; 23:57f2 + dw .Function8d7b9 + dw .Function8d7c9 + +.Function8d7b9 + call .IncrementJumptableIndex + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $30 + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld [hl], $30 + ret + +.Function8d7c9 + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + cp $3c + ret nc + + inc [hl] + inc [hl] + ld d, $90 + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + inc [hl] + inc [hl] + ld d, $90 + call .Sprites_Cosine + + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +; flash down/left +.GSIntroCyndaquil + call .AnonymousJumptable + jp hl ; anonymous jumptable - dw Function8d7f7 - dw Function8d807 - -Function8d7f7: ; 8d7f7 - call Function8dbf0 ; 23:57f7 - ld hl, $c ; 23:57fa - add hl, bc ; 23:57fd - ld [hl], $30 ; 23:57fe - ld hl, $d ; 23:5800 - add hl, bc ; 23:5803 - ld [hl], $10 ; 23:5804 - ret ; 23:5806 - -Function8d807: ; 8d807 - ld hl, $c ; 23:5807 - add hl, bc ; 23:580a - ld a, [hl] ; 23:580b - cp $3c ; 23:580c - ret nc ; 23:580e - inc [hl] ; 23:580f - inc [hl] ; 23:5810 - ld d, $90 ; 23:5811 - call Function8dbf6 ; 23:5813 - ld hl, $7 ; 23:5816 - add hl, bc ; 23:5819 - ld [hl], a ; 23:581a - ld hl, $d ; 23:581b - add hl, bc ; 23:581e - ld a, [hl] ; 23:581f - inc [hl] ; 23:5820 - inc [hl] ; 23:5821 - ld d, $90 ; 23:5822 - call Function8dbfa ; 23:5824 - ld hl, $6 ; 23:5827 - add hl, bc ; 23:582a - ld [hl], a ; 23:582b - ret ; 23:582c - -Function8d82d: ; 8d82d - call Function8dbdd ; 23:582d - jp hl ; 23:5830 + dw .Function8d7f7 + dw .Function8d807 + +.Function8d7f7 + call .IncrementJumptableIndex + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $30 + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld [hl], $10 + ret + +.Function8d807 + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + cp $3c + ret nc + inc [hl] + inc [hl] + ld d, $90 + call .Sprites_Sine + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + inc [hl] + inc [hl] + ld d, $90 + call .Sprites_Cosine + ld hl, SPRITEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret +.GSTitleTrail + call .AnonymousJumptable + jp hl + +IF DEF(_GOLD) ; anonymous jumptable - dw Function8d835 - dw Function8d84c - -Function8d835: ; 8d835 - call Function8dbf0 ; 23:5835 - ld hl, $0 ; 23:5838 - add hl, bc ; 23:583b - ld a, [hl] ; 23:583c - ld hl, $d ; 23:583d - add hl, bc ; 23:5840 - and $3 ; 23:5841 - ld [hl], a ; 23:5843 - inc [hl] ; 23:5844 - swap a ; 23:5845 - ld hl, $c ; 23:5847 - add hl, bc ; 23:584a - ld [hl], a ; 23:584b -Function8d84c: ; 8d84c - ld hl, $4 ; 23:584c - add hl, bc ; 23:584f - ld a, [hl] ; 23:5850 - cp $a4 ; 23:5851 - jr nc, Function8d881 ; 23:5853 - ld hl, $d ; 23:5855 - add hl, bc ; 23:5858 - add a, $4 ; 23:5859 - ld hl, $4 ; 23:585b - add hl, bc ; 23:585e - ld [hl], a ; 23:585f - ld hl, $5 ; 23:5860 - add hl, bc ; 23:5863 - inc [hl] ; 23:5864 - ld hl, $d ; 23:5865 - add hl, bc ; 23:5868 - ld a, [hl] ; 23:5869 - sla a ; 23:586a - sla a ; 23:586c - ld d, $2 ; 23:586e - ld hl, $c ; 23:5870 - add hl, bc ; 23:5873 - ld a, [hl] ; 23:5874 - add a, $3 ; 23:5875 - ld [hl], a ; 23:5877 - call Function8dbf6 ; 23:5878 - ld hl, $7 ; 23:587b - add hl, bc ; 23:587e - ld [hl], a ; 23:587f - ret ; 23:5880 - -Function8d881: ; 8d881 - call DeinitializeSprite ; 23:5881 - ret ; 23:5884 - -Function8d885: ; 8d885 - ld hl, $c ; 23:5885 - add hl, bc ; 23:5888 - ld a, [hl] ; 23:5889 - inc a ; 23:588a - ld [hl], a ; 23:588b - ld d, $2 ; 23:588c - call Function8dbf6 ; 23:588e - ld hl, $7 ; 23:5891 - add hl, bc ; 23:5894 - ld [hl], a ; 23:5895 - ret ; 23:5896 - -Function8d897: ; 8d897 - push bc ; 23:5897 - callba_hc $38, $4000 ; 23:5898 ; 23:589d - pop bc ; 23:589e - ld hl, $c704 ; 23:589f - ld a, [hl] ; 23:58a2 - and $3 ; 23:58a3 - ret z ; 23:58a5 - ld [hl], $0 ; 23:58a6 - ld e, a ; 23:58a8 - ld d, $0 ; 23:58a9 - ld hl, $58b4 ; 23:58ab - add hl, de ; 23:58ae - ld a, [hl] ; 23:58af - call Function8d332 ; 23:58b0 - ret ; 23:58b3 - -Function8d8b4: ; 8d8b4 - db $17 - db $18 - db $17 - db $19 - -Function8d8b8: ; 8d8b8 - callba_hc $38, $4000 ; 23:58b8 ; 23:58bd - ret ; 23:58be - -Function8d8bf: ; 8d8bf - call Function8dbdd ; 23:58bf - jp hl ; 23:58c2 + dw .Function8d835 + dw .Function8d84c + +.Function8d835 + 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 + +.Function8d84c + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $a4 + jr nc, .asm_8d881 + + 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_8d881 + call DeinitializeSprite + ret + +ELIF DEF(_SILVER) +; anonymous jumptable + dw .Function8d835 + dw .Function8d856 + +.Function8d835 + ld a, [wIntroSceneTimer] + and $30 + swap a + add $3 + ld d, a + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [wIntroSceneTimer] + and $30 + swap a + add $07 + add [hl] + ld [hl], a + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a +.Function8d856 + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $a4 + jr nc, .asm_8d863 + add $4 + ld [hl], a + ret + +.asm_8d863 + call DeinitializeSprite + ret +ENDC + +.GSIntroHoOhLugia + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] +IF DEF(_GOLD) + inc a + ld [hl], a + ld d, 2 +ELIF DEF(_SILVER) + dec a + ld [hl], a + ld d, 8 +ENDC + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.UnusedPikachu + push bc + farcall ret_e0000 + pop bc + ld hl, wc704 + ld a, [hl] + and $3 + ret z + ld [hl], 0 + ld e, a + ld d, 0 + ld hl, .Data_8d8b4 + add hl, de + ld a, [hl] + call _ReinitSpriteAnimFrame + ret + +.Data_8d8b4 + db SPRITE_ANIM_FRAMESET_UNUSED_PIKACHU + db SPRITE_ANIM_FRAMESET_UNUSED_PIKACHU_2 + db SPRITE_ANIM_FRAMESET_UNUSED_PIKACHU + db SPRITE_ANIM_FRAMESET_UNUSED_PIKACHU_3 + +.UnusedPikachuTail + farcall ret_e0000 + ret + +.UnusedNote + call .AnonymousJumptable + jp hl ; anonymous jumptable - dw Function8d8c7 - dw Function8d8d9 - -Function8d8c7: ; 8d8c7 - call Function8d8e1 ; 23:58c7 - ld a, [$c717] ; 23:58ca - ld hl, $4 ; 23:58cd - add hl, bc ; 23:58d0 - add [hl] ; 23:58d1 - ld [hl], a ; 23:58d2 - cp $c0 ; 23:58d3 - ret nc ; 23:58d5 - cp $a8 ; 23:58d6 - ret c ; 23:58d8 -Function8d8d9: - call DeinitializeSprite ; 23:58d9 - ld hl, $c5bc ; 23:58dc - dec [hl] ; 23:58df - ret ; 23:58e0 - -Function8d8e1: ; 8d8e1 - ld hl, $c ; 23:58e1 - add hl, bc ; 23:58e4 - ld a, [hl] ; 23:58e5 - inc [hl] ; 23:58e6 - and $1f ; 23:58e7 - srl a ; 23:58e9 - ld e, a ; 23:58eb - ld d, $0 ; 23:58ec - ld hl, Data_8d8f9 ; 23:58ee - add hl, de ; 23:58f1 - ld a, [hl] ; 23:58f2 - ld hl, $7 ; 23:58f3 - add hl, bc ; 23:58f6 - ld [hl], a ; 23:58f7 - ret ; 23:58f8 - -Data_8d8f9: ; 8d8f9 - db $04 - db $07 - db $09 - db $0a - db $09 - db $07 - db $04 - db $00 - db $fc - db $f9 - db $f7 - db $f6 - db $f7 - db $f9 - db $fc - db $00 - -Function8d909: ; 8d909 - ld a, [$c717] - ld hl, $4 + dw .Function8d8c7 + dw .Function8d8d9 + +.Function8d8c7 + call .Function8d8e1 + ld a, [wc717] + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + add [hl] + ld [hl], a + cp $c0 + ret nc + cp $a8 + ret c +.Function8d8d9 + call DeinitializeSprite + ld hl, wSpriteAnimCount + dec [hl] + ret + +.Function8d8e1 + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + inc [hl] + and $1f + srl a + ld e, a + ld d, 0 + ld hl, .Data_8d8f9 + add hl, de + ld a, [hl] + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.Data_8d8f9 + db 4, 7, 9, 10, 9, 7, 4, 0 + db -4, -7, -9, -10, -9, -7, -4, 0 + +.UnusedJigglypuff + ld a, [wc717] + + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc add [hl] ld [hl], a cp $30 ret nz xor a - ld [$c717], a - ret ; 23:5919 - -Function8d91a: ; 8d91a - callab_hc $4, $5dfa ; 23:591a ; 23:591f - ret ; 23:5920 - -Function8d921: ; 8d921 - callab_hc $4, $648e ; 23:5921 ; 23:5926 - ret ; 23:5927 - -Function8d928: ; 8d928 - callab_hc $39, $4b20 ; 23:5928 ; 23:592d - ret ; 23:592e - -Function8d92f: ; 8d92f - ld hl, $c ; 23:592f - add hl, bc ; 23:5932 - ld a, [hl] ; 23:5933 - and a ; 23:5934 - jr z, Function8d968 ; 23:5935 - dec [hl] ; 23:5937 - dec [hl] ; 23:5938 - ld d, a ; 23:5939 - and $1f ; 23:593a - jr nz, .asm_8d943 ; 23:593c - ld hl, $d ; 23:593e - add hl, bc ; 23:5941 - dec [hl] ; 23:5942 + ld [wc717], a + ret + +.NamingScreenCursor + callfar NamingScreen_AnimateCursor + ret + +.MailCursor + callfar ComposeMail_AnimateCursor + ret + +.GameFreakLogo: + callfar GFPresents_UpdateLogoPal + ret + +.GSIntroStar + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + and a + jr z, .asm_8d968 + dec [hl] + dec [hl] + ld d, a + and $1f + jr nz, .asm_8d943 + + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + dec [hl] .asm_8d943 - ld hl, $b ; 23:5943 - add hl, bc ; 23:5946 - ld a, [hl] ; 23:5947 - push af ; 23:5948 - push de ; 23:5949 - call Function8dbf6 ; 23:594a - ld hl, $7 ; 23:594d - add hl, bc ; 23:5950 - ld [hl], a ; 23:5951 - pop de ; 23:5952 - pop af ; 23:5953 - call Function8dbfa ; 23:5954 - ld hl, $6 ; 23:5957 - add hl, bc ; 23:595a - ld [hl], a ; 23:595b - ld hl, $d ; 23:595c - add hl, bc ; 23:595f - ld a, [hl] ; 23:5960 - ld hl, $b ; 23:5961 - add hl, bc ; 23:5964 - add [hl] ; 23:5965 - ld [hl], a ; 23:5966 - ret ; 23:5967 - -Function8d968: ; 8d968 - ld a, $1 ; 23:5968 - ld [$ce64], a ; 23:596a - call DeinitializeSprite ; 23:596d - ret ; 23:5970 - -Function8d971: ; 8d971 - ld hl, $c ; 23:5971 - add hl, bc ; 23:5974 - ld a, [hli] ; 23:5975 - or [hl] ; 23:5976 - jr z, Function8d9cc ; 23:5977 - ld hl, $f ; 23:5979 - add hl, bc ; 23:597c - ld d, [hl] ; 23:597d - ld hl, $b ; 23:597e - add hl, bc ; 23:5981 - ld a, [hl] ; 23:5982 - push af ; 23:5983 - push de ; 23:5984 - call Function8dbf6 ; 23:5985 - ld hl, $7 ; 23:5988 - add hl, bc ; 23:598b - ld [hl], a ; 23:598c - pop de ; 23:598d - pop af ; 23:598e - call Function8dbfa ; 23:598f - ld hl, $6 ; 23:5992 - add hl, bc ; 23:5995 - ld [hl], a ; 23:5996 - ld hl, $c ; 23:5997 - add hl, bc ; 23:599a - ld e, [hl] ; 23:599b - inc hl ; 23:599c - ld d, [hl] ; 23:599d - ld hl, $e ; 23:599e - add hl, bc ; 23:59a1 - ld a, [hli] ; 23:59a2 - ld h, [hl] ; 23:59a3 - ld l, a ; 23:59a4 - add hl, de ; 23:59a5 - ld e, l ; 23:59a6 - ld d, h ; 23:59a7 - ld hl, $e ; 23:59a8 - add hl, bc ; 23:59ab - ld [hl], e ; 23:59ac - inc hl ; 23:59ad - ld [hl], d ; 23:59ae - ld hl, $c ; 23:59af - add hl, bc ; 23:59b2 - ld a, [hli] ; 23:59b3 - ld h, [hl] ; 23:59b4 - ld l, a ; 23:59b5 - ld de, $fff0 ; 23:59b6 - add hl, de ; 23:59b9 - ld e, l ; 23:59ba - ld d, h ; 23:59bb - ld hl, $c ; 23:59bc - add hl, bc ; 23:59bf - ld [hl], e ; 23:59c0 - inc hl ; 23:59c1 - ld [hl], d ; 23:59c2 - ld hl, $b ; 23:59c3 - add hl, bc ; 23:59c6 - ld a, [hl] ; 23:59c7 - xor $20 ; 23:59c8 - ld [hl], a ; 23:59ca - ret ; 23:59cb - -Function8d9cc: ; 8d9cc - call DeinitializeSprite ; 23:59cc - ret ; 23:59cf - -Function8d9d0: ; 8d9d0 - callab_hc $24, $7772 ; 23:59d0 ; 23:59d5 - ret ; 23:59d6 - -Function8d9d7: ; 8d9d7 - callab_hc $24, $7801 ; 23:59d7 ; 23:59dc - ld hl, $ce64 ; 23:59dd - ld a, [hl] ; 23:59e0 - cp $2 ; 23:59e1 - ret nz ; 23:59e3 - ld [hl], $3 ; 23:59e4 - ld a, $21 ; 23:59e6 - call Function8d332 ; 23:59e8 - ret ; 23:59eb - -Function8d9ec: ; 8d9ec - ld hl, $b ; 23:59ec - add hl, bc ; 23:59ef - ld a, [hl] ; 23:59f0 - dec [hl] ; 23:59f1 - ld e, a ; 23:59f2 - and $1 ; 23:59f3 - jr z, .asm_8da10 ; 23:59f5 - ld hl, $4 ; 23:59f7 - add hl, bc ; 23:59fa - ld a, [hl] ; 23:59fb - cp $78 ; 23:59fc - jr c, asm_8da0f ; 23:59fe - call DeinitializeSprite ; 23:5a00 - ld a, $4 ; 23:5a03 - ld [$ce64], a ; 23:5a05 - ld de, $1e ; 23:5a08 - call $3e24 ; 23:5a0b - ret ; 23:5a0e - -.asm_8da0f - inc [hl] ; 23:5a0f -.asm_8da10 - ld a, e ; 23:5a10 - ld d, $20 ; 23:5a11 - call Function8dbf6 ; 23:5a13 - ld hl, $7 ; 23:5a16 - add hl, bc ; 23:5a19 - ld [hl], a ; 23:5a1a - ret ; 23:5a1b - -Function8da1c: ; 8da1c - callab_hc $38, $4908 ; 23:5a1c ; 23:5a21 - ret ; 23:5a22 - -Function8da23: ; 8da23 - callab_hc $24, $4d0b ; 23:5a23 ; 23:5a28 - ret ; 23:5a29 - -Function8da2a: ; 8da2a - callab_hc $38, $69ae ; 23:5a2a ; 23:5a2f - ret ; 23:5a30 - -Function8da31: ; 8da31 - call Function8dbdd ; 23:5a31 - jp hl ; 23:5a34 - ld b, c ; 23:5a35 - ld e, d ; 23:5a36 - add e ; 23:5a37 - ld e, d ; 23:5a38 - ld d, e ; 23:5a39 - ld e, d ; 23:5a3a - ld h, [hl] ; 23:5a3b - ld e, d ; 23:5a3c - sub [hl] ; 23:5a3d - ld e, d ; 23:5a3e - call nc, $3e5a ; 23:5a3f - ld h, $cd ; 23:5a42 - ld [hld], a ; 23:5a44 - ld d, e ; 23:5a45 - ld hl, $b ; 23:5a46 - add hl, bc ; 23:5a49 - ld [hl], $2 ; 23:5a4a - ld hl, $c ; 23:5a4c - add hl, bc ; 23:5a4f - ld [hl], $20 ; 23:5a50 - ret ; 23:5a52 - -Function8da53: ; 8da53 - ld hl, $c ; 23:5a53 - add hl, bc ; 23:5a56 - ld a, [hl] ; 23:5a57 - and a ; 23:5a58 - jr z, Function8da5d ; 23:5a59 - dec [hl] ; 23:5a5b - ret ; 23:5a5c - -Function8da5d: ; 8da5d - call Function8dbf0 ; 23:5a5d - ld hl, $c ; 23:5a60 - add hl, bc ; 23:5a63 - ld [hl], $40 ; 23:5a64 - ld hl, $c ; 23:5a66 - add hl, bc ; 23:5a69 - ld a, [hl] ; 23:5a6a - cp $30 ; 23:5a6b - jr c, Function8da7b ; 23:5a6d - dec [hl] ; 23:5a6f - ld d, $28 ; 23:5a70 - call Function8dbf6 ; 23:5a72 - ld hl, $7 ; 23:5a75 - add hl, bc ; 23:5a78 - ld [hl], a ; 23:5a79 - ret ; 23:5a7a - -Function8da7b: ; 8da7b - ld de, $c ; 23:5a7b - call $3e24 ; 23:5a7e - jr Function8dad4 ; 23:5a81 - ld hl, $b ; 23:5a83 - add hl, bc ; 23:5a86 - ld [hl], $4 ; 23:5a87 - ld hl, $c ; 23:5a89 - add hl, bc ; 23:5a8c - ld [hl], $30 ; 23:5a8d - ld hl, $d ; 23:5a8f - add hl, bc ; 23:5a92 - ld [hl], $24 ; 23:5a93 - ret ; 23:5a95 - -Function8da96: ; 8da96 - ld hl, $d ; 23:5a96 - add hl, bc ; 23:5a99 - ld a, [hl] ; 23:5a9a - and a ; 23:5a9b - jr z, Function8daca ; 23:5a9c - ld d, a ; 23:5a9e - ld hl, $c ; 23:5a9f - add hl, bc ; 23:5aa2 - ld a, [hl] ; 23:5aa3 - call Sprites_Sine ; 23:5aa4 - ld hl, $7 ; 23:5aa7 - add hl, bc ; 23:5aaa - ld [hl], a ; 23:5aab - ld hl, $c ; 23:5aac - add hl, bc ; 23:5aaf - inc [hl] ; 23:5ab0 - ld a, [hl] ; 23:5ab1 - and $3f ; 23:5ab2 - ret nz ; 23:5ab4 - ld hl, $c ; 23:5ab5 - add hl, bc ; 23:5ab8 - ld [hl], $20 ; 23:5ab9 - ld hl, $d ; 23:5abb - add hl, bc ; 23:5abe - ld a, [hl] ; 23:5abf - sub a, $c ; 23:5ac0 - ld [hl], a ; 23:5ac2 - ld de, $20 ; 23:5ac3 - call $3e24 ; 23:5ac6 - ret ; 23:5ac9 - -Function8daca: ; 8daca - xor a ; 23:5aca - ld hl, $7 ; 23:5acb - add hl, bc ; 23:5ace - ld [hl], a ; 23:5acf - call Function8dbf0 ; 23:5ad0 - ret ; 23:5ad3 - -Function8dad4: ; 8dad4 - call DeinitializeSprite ; 23:5ad4 - ret ; 23:5ad7 - -Function8dad8: ; 8dad8 - ld hl, $4 ; 23:5ad8 - add hl, bc ; 23:5adb - ld a, [hl] ; 23:5adc - inc [hl] ; 23:5add - cp $b0 ; 23:5ade - jr nc, Function8daec ; 23:5ae0 - and $3 ; 23:5ae2 - ret nz ; 23:5ae4 - ld de, $3 ; 23:5ae5 - call $3e24 ; 23:5ae8 - ret ; 23:5aeb - -Function8daec: ; 8daec - call DeinitializeSprite ; 23:5aec - ret ; 23:5aef - -Function8daf0: ; 8daf0 - callab_hc $a, $54cf ; 23:5af0 ; 23:5af5 - ret ; 23:5af6 - -Function8daf7: ; 8daf7 - ld hl, $c ; 23:5af7 - add hl, bc ; 23:5afa - ld a, [hl] ; 23:5afb - cp $80 ; 23:5afc - jr nc, Function8db21 ; 23:5afe - ld d, a ; 23:5b00 - add a, $8 ; 23:5b01 - ld [hl], a ; 23:5b03 - ld hl, $b ; 23:5b04 - add hl, bc ; 23:5b07 - ld a, [hl] ; 23:5b08 - xor $20 ; 23:5b09 - ld [hl], a ; 23:5b0b - push af ; 23:5b0c - push de ; 23:5b0d - call Function8dbf6 ; 23:5b0e - ld hl, $7 ; 23:5b11 - add hl, bc ; 23:5b14 - ld [hl], a ; 23:5b15 - pop de ; 23:5b16 - pop af ; 23:5b17 - call Function8dbfa ; 23:5b18 - ld hl, $6 ; 23:5b1b - add hl, bc ; 23:5b1e - ld [hl], a ; 23:5b1f - ret ; 23:5b20 - -Function8db21: ; 8db21 - call DeinitializeSprite ; 23:5b21 - ret ; 23:5b24 - -Function8db25: ; 8db25 - callab_hc $24, $55ff ; 23:5b25 ; 23:5b2a - ret ; 23:5b2b - -Function8db2c: ; 8db2c - ld hl, $d ; 23:5b2c - add hl, bc ; 23:5b2f - ld e, [hl] ; 23:5b30 - inc hl ; 23:5b31 - ld d, [hl] ; 23:5b32 - ld hl, $80 ; 23:5b33 - add hl, de ; 23:5b36 - ld e, l ; 23:5b37 - ld d, h ; 23:5b38 - ld hl, $d ; 23:5b39 - add hl, bc ; 23:5b3c - ld [hl], e ; 23:5b3d - inc hl ; 23:5b3e - ld [hl], d ; 23:5b3f - ld hl, $c ; 23:5b40 - add hl, bc ; 23:5b43 - ld a, [hl] ; 23:5b44 - inc [hl] ; 23:5b45 - inc [hl] ; 23:5b46 - inc [hl] ; 23:5b47 - push af ; 23:5b48 - push de ; 23:5b49 - call Function8dbf6 ; 23:5b4a - ld hl, $7 ; 23:5b4d - add hl, bc ; 23:5b50 - ld [hl], a ; 23:5b51 - pop de ; 23:5b52 - pop af ; 23:5b53 - call Function8dbfa ; 23:5b54 - ld hl, $6 ; 23:5b57 - add hl, bc ; 23:5b5a - ld [hl], a ; 23:5b5b - ret ; 23:5b5c - -Function8db5d: ; 8db5d - ld hl, $5 ; 23:5b5d - add hl, bc ; 23:5b60 - ld a, [hl] ; 23:5b61 - and a ; 23:5b62 - ret z ; 23:5b63 - ld hl, $d ; 23:5b64 - add hl, bc ; 23:5b67 - ld a, [hl] ; 23:5b68 - inc [hl] ; 23:5b69 - cp $40 ; 23:5b6a - ret c ; 23:5b6c - ld hl, $5 ; 23:5b6d - add hl, bc ; 23:5b70 - dec [hl] ; 23:5b71 - dec [hl] ; 23:5b72 - ld hl, $f ; 23:5b73 - add hl, bc ; 23:5b76 - ld a, [hl] ; 23:5b77 - ld d, a ; 23:5b78 - cp $40 ; 23:5b79 - jr nc, .asm_8db80 ; 23:5b7b - add a, $8 ; 23:5b7d - ld [hl], a ; 23:5b7f -.asm_8db80 - ld hl, $e ; 23:5b80 - add hl, bc ; 23:5b83 - ld a, [hl] ; 23:5b84 - inc [hl] ; 23:5b85 - call Function8dbfa ; 23:5b86 - ld hl, $6 ; 23:5b89 - add hl, bc ; 23:5b8c - ld [hl], a ; 23:5b8d - ret ; 23:5b8e - -Function8db8f: ; 8db8f - ld hl, $4 ; 23:5b8f - add hl, bc ; 23:5b92 - ld a, [hl] ; 23:5b93 - cp $b8 ; 23:5b94 - jr nc, Function8dbb0 ; 23:5b96 - inc [hl] ; 23:5b98 - inc [hl] ; 23:5b99 - ld hl, $5 ; 23:5b9a - add hl, bc ; 23:5b9d - dec [hl] ; 23:5b9e - ld d, $40 ; 23:5b9f - ld hl, $c ; 23:5ba1 - add hl, bc ; 23:5ba4 - ld a, [hl] ; 23:5ba5 - inc [hl] ; 23:5ba6 - call Function8dbfa ; 23:5ba7 - ld hl, $6 ; 23:5baa - add hl, bc ; 23:5bad - ld [hl], a ; 23:5bae - ret ; 23:5baf - -Function8dbb0: ; 8dbb0 - call DeinitializeSprite ; 23:5bb0 - ret ; 23:5bb3 - -Function8dbb4: ; 8dbb4 - ld hl, $5 ; 23:5bb4 - add hl, bc ; 23:5bb7 - ld a, [hl] ; 23:5bb8 - cp $54 ; 23:5bb9 - ret z ; 23:5bbb - ld hl, $5 ; 23:5bbc - add hl, bc ; 23:5bbf - inc [hl] ; 23:5bc0 - inc [hl] ; 23:5bc1 - ld hl, $f ; 23:5bc2 - add hl, bc ; 23:5bc5 - ld a, [hl] ; 23:5bc6 - ld d, a ; 23:5bc7 - and a ; 23:5bc8 - jr z, .asm_8dbce ; 23:5bc9 - sub a, $2 ; 23:5bcb - ld [hl], a ; 23:5bcd + 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_8d968 + ld a, 1 + ld [wce64], a + call DeinitializeSprite + ret + +.GSIntroSparkle + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hli] + or [hl] + jr z, .asm_8d9cc + + 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_8d9cc + call DeinitializeSprite + ret + +.SlotsGolem: + callfar Slots_AnimateGolem + ret + +.SlotsChansey: + callfar Slots_AnimateChansey + ld hl, wce64 + ld a, [hl] + cp 2 + ret nz + ld [hl], 3 + ld a, SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY_2 + call _ReinitSpriteAnimFrame + ret + +.SlotsChanseyEgg: + 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 [wce64], 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 + +.UnusedCursor + callfar ret_e0908 + ret + +.PokegearArrow + callfar AnimatePokegearModeIndicatorArrow + ret + +.DummyGameCursor + callfar DummyGame_InterpretJoypad_AnimateCursor + ret + +.TradePokeBall + call .AnonymousJumptable + jp hl + +; Anonymous dw (see .AnonymousJumptable) + dw .TradePokeBall_zero + dw .TradePokeBall_one + dw .TradePokeBall_two + dw .TradePokeBall_three + dw .TradePokeBall_four + dw .TradePokeBall_five + +.TradePokeBall_zero + ld a, SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_WOBBLE + call _ReinitSpriteAnimFrame + + ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX + add hl, bc + ld [hl], $2 + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $20 + ret + +.TradePokeBall_two + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + and a + jr z, .asm_8da5d + dec [hl] + ret + +.asm_8da5d + call .IncrementJumptableIndex + + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld [hl], $40 + +.TradePokeBall_three + ld hl, SPRITEANIMSTRUCT_0C + add hl, bc + ld a, [hl] + cp $30 + jr c, .asm_8da7b + dec [hl] + ld d, $28 + call .Sprites_Sine + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.asm_8da7b + ld de, SFX_GOT_SAFARI_BALLS + call PlaySFX + jr .TradePokeBall_five + +.TradePokeBall_one + 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 + +.TradePokeBall_four + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld a, [hl] + and a + jr z, .asm_8daca + 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_8daca + xor a + + ld hl, SPRITEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + call .IncrementJumptableIndex + ret + +.TradePokeBall_five + call DeinitializeSprite + ret + +.TradeTubeBulge + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, [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 + callfar TradeAnim_AnimateTrademonInTube + ret + +.RevealNewMon: + 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: + callfar AnimateTuningKnob + ret + +.CutLeaves + 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: + 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: + 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: + 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_8dbce + sub 2 + ld [hl], a .asm_8dbce - ld hl, $e ; 23:5bce - add hl, bc ; 23:5bd1 - ld a, [hl] ; 23:5bd2 - inc [hl] ; 23:5bd3 - call Function8dbfa ; 23:5bd4 - ld hl, $6 ; 23:5bd7 - add hl, bc ; 23:5bda - ld [hl], a ; 23:5bdb - ret ; 23:5bdc - -Function8dbdd: ; 8dbdd - ld hl, [sp+$0] ; 23:5bdd - ld e, [hl] ; 23:5bdf - inc hl ; 23:5be0 - ld d, [hl] ; 23:5be1 - inc de ; 23:5be2 - ld hl, $b ; 23:5be3 - add hl, bc ; 23:5be6 - ld l, [hl] ; 23:5be7 - ld h, $0 ; 23:5be8 - add hl, hl ; 23:5bea - add hl, de ; 23:5beb - ld a, [hli] ; 23:5bec - ld h, [hl] ; 23:5bed - ld l, a ; 23:5bee - ret ; 23:5bef - -Function8dbf0: ; 8dbf0 - ld hl, $b ; 23:5bf0 - add hl, bc ; 23:5bf3 - inc [hl] ; 23:5bf4 - ret ; 23:5bf5 - -Function8dbf6: ; 8dbf6 - call Sprites_Sine ; 23:5bf6 - ret ; 23:5bf9 - -Function8dbfa: ; 8dbfa - call Sprites_Cosine ; 23:5bfa - ret ; 23:5bfd + 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 + +.AnonymousJumptable: + 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 + +.IncrementJumptableIndex: + ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX + add hl, bc + inc [hl] + ret + +.Sprites_Sine: + call Sprites_Sine + ret + +.Sprites_Cosine: + call Sprites_Cosine + ret |