diff options
author | entrpntr <entrpntr@gmail.com> | 2020-05-14 14:25:42 -0400 |
---|---|---|
committer | entrpntr <entrpntr@gmail.com> | 2020-05-14 14:25:42 -0400 |
commit | 6c4c421f18fa5ed8f42c260d17edb8ea52ba8112 (patch) | |
tree | b1e5d7ea4700bd599141eb950917aba80cb56639 /engine/gfx | |
parent | a30d695331b33a3a43b70539b0577f5c7f6c6bca (diff) |
Match pokecrystal file names and folder structure, tools updates.
Diffstat (limited to 'engine/gfx')
-rwxr-xr-x | engine/gfx/sprite_anims.asm | 1361 | ||||
-rwxr-xr-x | engine/gfx/sprites.asm | 645 |
2 files changed, 2006 insertions, 0 deletions
diff --git a/engine/gfx/sprite_anims.asm b/engine/gfx/sprite_anims.asm new file mode 100755 index 00000000..2877539d --- /dev/null +++ b/engine/gfx/sprite_anims.asm @@ -0,0 +1,1361 @@ +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 +.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 + +; 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 + +; 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 + +; 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 + +; 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 + +; 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 + +; 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 + +; 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 + +; 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 + +; 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 + +; 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 + 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 +.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 +.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 diff --git a/engine/gfx/sprites.asm b/engine/gfx/sprites.asm new file mode 100755 index 00000000..b9267d66 --- /dev/null +++ b/engine/gfx/sprites.asm @@ -0,0 +1,645 @@ +ClearAnimatedObjects: ; 8d174 + ld hl, $c508 ; 23:5174 + ld bc, $c1 ; 23:5177 +.loop + ld [hl], $0 ; 23:517a + inc hl ; 23:517c + dec bc ; 23:517d + ld a, c ; 23:517e + or b ; 23:517f + jr nz, .loop ; 23:5180 + ret ; 23:5182 + +PlayAnimatedObjectationsAndDelayFrame: ; 8d182 + call PlayAnimatedObjectations ; 23:5183 + call $32e ; DelayFrame ; 23:5186 + ret ; 23:5189 + +PlayAnimatedObjectations: ; 8d189 + push hl ; 23:518a + push de ; 23:518b + push bc ; 23:518c + push af ; 23:518d + + ld a, $0 ; 23:518e + ld [$c5bd], a ; 23:5190 + call DoNextFrameForAllSprites ; 23:5193 + + pop af ; 23:5196 + pop bc ; 23:5197 + pop de ; 23:5198 + pop hl ; 23:5199 + ret ; 23:519a + +DoNextFrameForAllSprites: ; 8d19b + ld hl, $c51c ; 23:519b + ld e, $a ; 23:519e +.loop + ld a, [hl] ; 23:51a0 + and a ; 23:51a1 + jr z, .skip_capacity_check ; 23:51a2 + ld c, l ; 23:51a4 + ld b, h ; 23:51a5 + push hl ; 23:51a6 + push de ; 23:51a7 + call DoAnimFrame ; 23:51a8 + call UpdateAnimFrame ; 23:51ab + pop de ; 23:51ae + pop hl ; 23:51af + jr c, .cancel ; 23:51b0 +.skip_capacity_check + ld bc, $10 ; 23:51b2 + add hl, bc ; 23:51b5 + dec e ; 23:51b6 + jr nz, .loop ; 23:51b7 + ld a, [$c5bd] ; 23:51b9 + ld l, a ; 23:51bc + ld h, $c3 ; 23:51bd +.loop2 + ld a, l ; 23:51bf + cp $a0 ; 23:51c0 + jr nc, .cancel ; 23:51c2 + xor a ; 23:51c4 + ld [hli], a ; 23:51c5 + jr .loop2 ; 23:51c6 + +.cancel + ret ; 23:51c8 + +DoNextFrameForFirst16Sprites: ; 8d1c9 + ld hl, $c51c ; 23:51c9 + ld e, $a ; 23:51cc +.loop + ld a, [hl] ; 23:51ce + and a ; 23:51cf + jr z, .skip_capacity_check ; 23:51d0 + ld c, l ; 23:51d2 + ld b, h ; 23:51d3 + push hl ; 23:51d4 + push de ; 23:51d5 + call DoAnimFrame ; 23:51d6 + call UpdateAnimFrame ; 23:51d9 + pop de ; 23:51dc + pop hl ; 23:51dd + jr c, .cancel ; 23:51de +.skip_capacity_check + ld bc, $10 ; 23:51e0 + add hl, bc ; 23:51e3 + dec e ; 23:51e4 + jr nz, .loop ; 23:51e5 + ld a, [$c5bd] ; 23:51e7 + ld l, a ; 23:51ea + ld h, $c3 ; 23:51eb +.loop2 + ld a, l ; 23:51ed + cp $40 ; 23:51ee + jr nc, .cancel ; 23:51f0 + xor a ; 23:51f2 + ld [hli], a ; 23:51f3 + jr .loop2 ; 23:51f4 + +.cancel + ret ; 23:51f6 + +_InitSpriteAnimStruct:: ; 8d1f7 + push de ; 23:51f7 + push af ; 23:51f8 + ld hl, $c51c ; 23:51f9 + ld e, $a ; 23:51fc +.loop + ld a, [hl] ; 23:51fe + and a ; 23:51ff + jr z, .found ; 23:5200 + ld bc, $10 ; 23:5202 + add hl, bc ; 23:5205 + dec e ; 23:5206 + jr nz, .loop ; 23:5207 + pop af ; 23:5209 + pop de ; 23:520a + scf ; 23:520b + ret ; 23:520c + +.found ; 8d20d + ld c, l ; 23:520d + ld b, h ; 23:520e + ld hl, $c5bc ; 23:520f + inc [hl] ; 23:5212 + ld a, [hl] ; 23:5213 + and a ; 23:5214 + jr nz, .initialized ; 23:5215 + inc [hl] ; 23:5217 +.initialized + pop af ; 23:5218 + ld e, a ; 23:5219 + ld d, $0 ; 23:521a + ld hl, AnimatedObjectSeqData ; 23:521c + add hl, de ; 23:521f + add hl, de ; 23:5220 + add hl, de ; 23:5221 + ld e, l ; 23:5222 + ld d, h ; 23:5223 + ld hl, $0 ; 23:5224 + add hl, bc ; 23:5227 + ld a, [$c5bc] ; 23:5228 + ld [hli], a ; 23:522b + ld a, [de] ; 23:522c + ld [hli], a ; 23:522d + inc de ; 23:522e + ld a, [de] ; 23:522f + ld [hli], a ; 23:5230 + inc de ; 23:5231 + ld a, [de] ; 23:5232 + call GetAnimatedObjectVTile ; 23:5233 + ld [hli], a ; 23:5236 + pop de ; 23:5237 + ld hl, $4 ; 23:5238 + add hl, bc ; 23:523b + ld a, e ; 23:523c + ld [hli], a ; 23:523d + ld a, d ; 23:523e + ld [hli], a ; 23:523f + xor a ; 23:5240 + ld [hli], a ; 23:5241 + ld [hli], a ; 23:5242 + xor a ; 23:5243 + ld [hli], a ; 23:5244 + ld [hli], a ; 23:5245 + dec a ; 23:5246 + ld [hli], a ; 23:5247 + xor a ; 23:5248 + ld [hli], a ; 23:5249 + ld [hli], a ; 23:524a + ld [hli], a ; 23:524b + ld [hli], a ; 23:524c + ld [hl], a ; 23:524d + ld a, c ; 23:524e + ld [$c5c0], a ; 23:524f + ld a, b ; 23:5252 + ld [$c5c1], a ; 23:5253 + ret ; 23:5256 + +DeinitializeSprite: ; 8d257 + ld hl, $0 ; 23:5257 + add hl, bc ; 23:525a + ld [hl], $0 ; 23:525b + ret ; 23:525d + +UpdateAnimFrame: ; 8d25e + call InitAnimatedObjectBuffer ; 23:525e + call GetAnimatedObjectFrame ; 23:5261 + cp $fd ; 23:5264 + jr z, .done ; 23:5266 + cp $fc ; 23:5268 + jr z, .delete ; 23:526a + call GetFrameOAMPointer ; 23:526c + ld a, [$c5c2] ; 23:526f + add [hl] ; 23:5272 + ld [$c5c2], a ; 23:5273 + inc hl ; 23:5276 + ld a, [hli] ; 23:5277 + ld h, [hl] ; 23:5278 + ld l, a ; 23:5279 + push bc ; 23:527a + ld a, [$c5bd] ; 23:527b + ld e, a ; 23:527e + ld d, $c3 ; 23:527f + ld a, [hli] ; 23:5281 + ld c, a ; 23:5282 +.loop + ld a, [$c5c4] ; 23:5283 + ld b, a ; 23:5286 + ld a, [$c5c6] ; 23:5287 + add b ; 23:528a + ld b, a ; 23:528b + ld a, [$c5c7] ; 23:528c + add b ; 23:528f + ld b, a ; 23:5290 + call AddOrSubtractX ; 23:5291 + add b ; 23:5294 + ld [de], a ; 23:5295 + inc hl ; 23:5296 + inc de ; 23:5297 + ld a, [$c5c3] ; 23:5298 + ld b, a ; 23:529b + ld a, [$c5c5] ; 23:529c + add b ; 23:529f + ld b, a ; 23:52a0 + ld a, [$c5c8] ; 23:52a1 + add b ; 23:52a4 + ld b, a ; 23:52a5 + call AddOrSubtractY ; 23:52a6 + add b ; 23:52a9 + ld [de], a ; 23:52aa + inc hl ; 23:52ab + inc de ; 23:52ac + ld a, [$c5c2] ; 23:52ad + add [hl] ; 23:52b0 + ld [de], a ; 23:52b1 + inc hl ; 23:52b2 + inc de ; 23:52b3 + call GetSpriteOAMAttr ; 23:52b4 + ld [de], a ; 23:52b7 + inc hl ; 23:52b8 + inc de ; 23:52b9 + ld a, e ; 23:52ba + ld [$c5bd], a ; 23:52bb + cp $a0 ; 23:52be + jr nc, reached_the_end ; 23:52c0 + dec c ; 23:52c2 + jr nz, .loop ; 23:52c3 + pop bc ; 23:52c5 + jr .done ; 23:52c6 + +.delete + call DeinitializeSprite ; 23:52c8 +.done + and a ; 23:52cb + ret ; 23:52cc + +reached_the_end + pop bc ; 23:52cd + scf ; 23:52ce + ret ; 23:52cf + +AddOrSubtractX: ; 8d2d0 + push hl ; 23:52d0 + ld a, [hl] ; 23:52d1 + ld hl, $c5c0 ; 23:52d2 + bit 6, [hl] ; 23:52d5 + jr z, .ok ; 23:52d7 + add a, $8 ; 23:52d9 + xor $ff ; 23:52db + inc a ; 23:52dd +.ok + pop hl ; 23:52de + ret ; 23:52df + +AddOrSubtractY: ; 8d2e0 + push hl ; 23:52e0 + ld a, [hl] ; 23:52e1 + ld hl, $c5c0 ; 23:52e2 + bit 5, [hl] ; 23:52e5 + jr z, .ok ; 23:52e7 + add a, $8 ; 23:52e9 + xor $ff ; 23:52eb + inc a ; 23:52ed +.ok + pop hl ; 23:52ee + ret ; 23:52ef + +GetSpriteOAMAttr: ; 8d2f0 + ld a, [$c5c0] ; 23:52f0 + ld b, a ; 23:52f3 + ld a, [hl] ; 23:52f4 + xor b ; 23:52f5 + and $e0 ; 23:52f6 + ld b, a ; 23:52f8 + ld a, [hl] ; 23:52f9 + and $1f ; 23:52fa + or b ; 23:52fc + ret ; 23:52fd + +InitAnimatedObjectBuffer: ; 8d2fe + xor a ; 23:52fe + ld [$c5c0], a ; 23:52ff + ld hl, $3 ; 23:5302 + add hl, bc ; 23:5305 + ld a, [hli] ; 23:5306 + ld [$c5c2], a ; 23:5307 + ld a, [hli] ; 23:530a + ld [$c5c3], a ; 23:530b + ld a, [hli] ; 23:530e + ld [$c5c4], a ; 23:530f + ld a, [hli] ; 23:5312 + ld [$c5c5], a ; 23:5313 + ld a, [hli] ; 23:5316 + ld [$c5c6], a ; 23:5317 + ret ; 23:531a + +GetAnimatedObjectVTile: ; 8d31b + push hl ; 23:531b + push bc ; 23:531c + ld hl, $c508 ; 23:531d + ld b, a ; 23:5320 + ld c, $a ; 23:5321 +.loop + ld a, [hli] ; 23:5323 + cp b ; 23:5324 + jr z, .ok ; 23:5325 + inc hl ; 23:5327 + dec c ; 23:5328 + jr nz, .loop ; 23:5329 + xor a ; 23:532b + jr .done ; 23:532c + +.ok + ld a, [hl] ; 23:532e +.done + pop bc ; 23:532f + pop hl ; 23:5330 + ret ; 23:5331 + +Function8d332: ; 8d332 + ld hl, $1 ; 23:5332 + add hl, bc ; 23:5335 + ld [hl], a ; 23:5336 + ld hl, $8 ; 23:5337 + add hl, bc ; 23:533a + ld [hl], $0 ; 23:533b + ld hl, $a ; 23:533d + add hl, bc ; 23:5340 + ld [hl], $ff ; 23:5341 + ret ; 23:5343 + +GetAnimatedObjectFrame: ; 8d344 +.loop + ld hl, $8 ; 23:5344 + add hl, bc ; 23:5347 + ld a, [hl] ; 23:5348 + and a ; 23:5349 + jr z, .next_frame ; 23:534a + dec [hl] ; 23:534c + call .GetPointer ; 23:534d + ld a, [hli] ; 23:5350 + push af ; 23:5351 + jr .okay ; 23:5352 + +.next_frame + ld hl, $a ; 23:5354 + add hl, bc ; 23:5357 + inc [hl] ; 23:5358 + call .GetPointer ; 23:5359 + ld a, [hli] ; 23:535c + cp $fe ; 23:535d + jr z, .restart ; 23:535f + cp $ff ; 23:5361 + jr z, .repeat_last ; 23:5363 + push af ; 23:5365 + ld a, [hl] ; 23:5366 + push hl ; 23:5367 + and $3f ; 23:5368 + ld hl, $9 ; 23:536a + add hl, bc ; 23:536d + add [hl] ; 23:536e + ld hl, $8 ; 23:536f + add hl, bc ; 23:5372 + ld [hl], a ; 23:5373 + pop hl ; 23:5374 +.okay + ld a, [hl] ; 23:5375 + and $c0 ; 23:5376 + srl a ; 23:5378 + ld [$c5c0], a ; 23:537a + pop af ; 23:537d + ret ; 23:537e + +.repeat_last ; 8d37f + xor a ; 23:537f + ld hl, $8 ; 23:5380 + add hl, bc ; 23:5383 + ld [hl], a ; 23:5384 + ld hl, $a ; 23:5385 + add hl, bc ; 23:5388 + dec [hl] ; 23:5389 + dec [hl] ; 23:538a + jr .loop ; 23:538b + +.restart + xor a ; 23:538d + ld hl, $8 ; 23:538e + add hl, bc ; 23:5391 + ld [hl], a ; 23:5392 + dec a ; 23:5393 + ld hl, $a ; 23:5394 + add hl, bc ; 23:5397 + ld [hl], a ; 23:5398 + jr .loop ; 23:5399 + +.GetPointer + ld hl, $1 ; 23:539b + add hl, bc ; 23:539e + ld e, [hl] ; 23:539f + ld d, $0 ; 23:53a0 + ld hl, AnimatedObjectFrameData ; 23:53a2 + add hl, de ; 23:53a5 + add hl, de ; 23:53a6 + ld e, [hl] ; 23:53a7 + inc hl ; 23:53a8 + ld d, [hl] ; 23:53a9 + ld hl, $a ; 23:53aa + add hl, bc ; 23:53ad + ld l, [hl] ; 23:53ae + ld h, $0 ; 23:53af + add hl, hl ; 23:53b1 + add hl, de ; 23:53b2 + ret ; 23:53b3 + +GetFrameOAMPointer: ; 8d3b4 + ld e, a ; 23:53b4 + ld d, $0 ; 23:53b5 + ld hl, AnimatedObjectOAMData ; 23:53b7 + add hl, de ; 23:53ba + add hl, de ; 23:53bb + add hl, de ; 23:53bc + ret ; 23:53bd + +BrokenGetStdGraphics: ; 8d3be + push hl ; 23:53be + ld l, a ; 23:53bf + ld h, $0 ; 23:53c0 + add hl, hl ; 23:53c2 + add hl, hl ; 23:53c3 + ld de, $6666 ; 23:53c4 + add hl, de ; 23:53c7 + ld c, [hl] ; 23:53c8 + inc hl ; 23:53c9 + ld b, [hl] ; 23:53ca + inc hl ; 23:53cb + ld e, [hl] ; 23:53cc + inc hl ; 23:53cd + ld d, [hl] ; 23:53ce + pop hl ; 23:53cf + push bc ; 23:53d0 + call $dfe ; Request2bpp ; 23:53d1 + pop bc ; 23:53d4 + ret ; 23:53d5 + +AnimatedObjectSeqData: ; 8d3d6 + db $01, $01, $00 + db $04, $04, $00 + db $05, $05, $00 + db $06, $06, $00 + db $07, $07, $00 + db $08, $08, $00 + db $09, $09, $01 + db $0a, $09, $01 + db $0b, $0a, $01 + db $0d, $0b, $01 + db $10, $0c, $01 + db $12, $0d, $02 + db $13, $0e, $02 + db $14, $0f, $02 + db $15, $0e, $02 + db $16, $10, $00 + db $0d, $11, $01 + db $10, $12, $01 + db $09, $13, $01 + db $0b, $14, $01 + db $1a, $15, $05 + db $1c, $16, $06 + db $1d, $17, $06 + db $1e, $18, $06 + db $1f, $19, $07 + db $20, $1a, $07 + db $22, $1b, $07 + db $1a, $1c, $05 + db $23, $00, $00 + db $24, $1d, $08 + db $24, $1e, $08 + db $24, $1f, $08 + db $25, $20, $00 + db $27, $00, $00 + db $28, $21, $00 + db $29, $22, $00 + db $2a, $22, $00 + db $2b, $23, $00 + db $2c, $24, $00 + db $2d, $00, $00 + db $2f, $25, $00 + db $30, $00, $00 + db $2f, $27, $00 + db $31, $00, $00 + db $36, $29, $00 + db $37, $00, $00 + db $32, $23, $00 + +INCLUDE "engine/sprite_anims.asm" +INCLUDE "data/sprite_engine.asm" + +Sprites_Cosine: + add a, $10 ; 23:668a +Sprites_Sine: + and $3f ; 23:668c + cp $20 ; 23:668e + jr nc, .negative ; 23:6690 + call .ApplySineWave ; 23:6692 + ld a, h ; 23:6695 + ret ; 23:6696 + +.negative + and $1f ; 23:6697 + call .ApplySineWave ; 23:6699 + ld a, h ; 23:669c + xor $ff ; 23:669d + inc a ; 23:669f + ret ; 23:66a0 + +.ApplySineWave: + ld e, a ; 23:66a1 + ld a, d ; 23:66a2 + ld d, $0 ; 23:66a3 + ld hl, .sinewave ; 23:66a5 + add hl, de ; 23:66a8 + add hl, de ; 23:66a9 + ld e, [hl] ; 23:66aa + inc hl ; 23:66ab + ld d, [hl] ; 23:66ac + ld hl, $0 ; 23:66ad +.multiply + srl a ; 23:66b0 + jr nc, .even ; 23:66b2 + add hl, de ; 23:66b4 +.even + sla e ; 23:66b5 + rl d ; 23:66b7 + and a ; 23:66b9 + jr nz, .multiply ; 23:66ba + ret ; 23:66bc + +.sinewave ; 8e75d + sine_wave $100 + +AnimateEndOfExpBar: + ldh a, [$ffe9] ; 23:66fd + ld de, EndOfExpBarGFX ; 23:66ff + and a ; 23:6702 + jr z, .got_gfx ; 23:6703 + ld de, SGBEndOfExpBarGFX ; 23:6705 +.got_gfx + ld hl, VTiles0 tile $00 ; 23:6708 + lb bc, BANK(EndOfExpBarGFX), 1 ; 23:670b + call $dfe ; Request2bpp ; 23:670e + ld c, $8 ; 23:6711 + ld d, $0 ; 23:6713 +.loop + push bc ; 23:6715 + call .AnimateFrame ; 23:6716 + call $32e ; DelayFrame ; 23:6719 + pop bc ; 23:671c + inc d ; 23:671d + inc d ; 23:671e + dec c ; 23:671f + jr nz, .loop ; 23:6720 + call $30ff ; ClearSprites ; 23:6722 + ret ; 23:6725 + +.AnimateFrame + ld hl, $c300 ; 23:6726 + ld c, $8 ; 23:6729 +.anim_loop + ld a, c ; 23:672b + and a ; 23:672c + ret z ; 23:672d + dec c ; 23:672e + ld a, c ; 23:672f + sla a ; 23:6730 + sla a ; 23:6732 + sla a ; 23:6734 + push af ; 23:6736 + push de ; 23:6737 + push hl ; 23:6738 + call Sprites_Sine ; 23:6739 + pop hl ; 23:673c + pop de ; 23:673d + add a, $68 ; 23:673e + ld [hli], a ; 23:6740 + pop af ; 23:6741 + push de ; 23:6742 + push hl ; 23:6743 + call Sprites_Cosine ; 23:6744 + pop hl ; 23:6747 + pop de ; 23:6748 + add a, $54 ; 23:6749 + ld [hli], a ; 23:674b + ld a, $0 ; 23:674c + ld [hli], a ; 23:674e + ld a, $6 ; 23:674f + ld [hli], a ; 23:6751 + jr .anim_loop ; 23:6752 + +EndOfExpBarGFX: + dr $8e754, $8e764 + +SGBEndOfExpBarGFX: + dr $8e764, $8e774 + +ClearAnimatedObjects2 + push hl ; 23:6774 + push de ; 23:6775 + push bc ; 23:6776 + push af ; 23:6777 + ld hl, $c508 ; 23:6778 + ld bc, $c1 ; 23:677b +.loop + ld [hl], $0 ; 23:677e + inc hl ; 23:6780 + dec bc ; 23:6781 + ld a, c ; 23:6782 + or b ; 23:6783 + jr nz, .loop ; 23:6784 + pop af ; 23:6786 + pop bc ; 23:6787 + pop de ; 23:6788 + pop hl ; 23:6789 + ret ; 23:678a +; 8e78a |