aboutsummaryrefslogtreecommitdiff
path: root/animation.gbasm
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-12-03 17:56:58 +0900
committerAstatin <[email protected]>2024-12-03 17:56:58 +0900
commita0cc9155572b22ac1afd4636593f72a18372187b (patch)
tree22862e0f77a561682e4173d953bfa42580e56b04 /animation.gbasm
parent20422f9a4a180f2c148d93e68930f57379311ca7 (diff)
Add sparkles animation and shadow palette flag
Diffstat (limited to 'animation.gbasm')
-rw-r--r--animation.gbasm91
1 files changed, 89 insertions, 2 deletions
diff --git a/animation.gbasm b/animation.gbasm
index eed1923..0796167 100644
--- a/animation.gbasm
+++ b/animation.gbasm
@@ -19,6 +19,58 @@ Display_Animation:
RET
+Try_Launch_Animation: ; XY in BC, jump_table index in A
+ PUSH HL
+ PUSH AF
+
+ LD HL, $mem_animation_list
+ XOR A
+ CP (HL)
+ JP Z, =Try_Launch_Animation.Free_slot_Found
+
+ LD A, $04
+ ADD L
+ LD L, A
+
+ XOR A
+ CP (HL)
+ JP Z, =Try_Launch_Animation.Free_slot_Found
+
+ LD A, $04
+ ADD L
+ LD L, A
+
+ XOR A
+ CP (HL)
+ JP Z, =Try_Launch_Animation.Free_slot_Found
+
+ LD A, $04
+ ADD L
+ LD L, A
+
+ XOR A
+ CP (HL)
+ JP NZ, =Try_Launch_Animation.No_Free_slot_found
+
+ Try_Launch_Animation.Free_slot_Found:
+ POP AF
+
+ LD (HL+), A
+ LD A, B
+ LD (HL+), A
+ LD A, C
+ LD (HL+), A
+ XOR A
+ LD (HL+), A
+
+ POP HL
+ RET
+
+ Try_Launch_Animation.No_Free_slot_found:
+ POP AF
+ POP HL
+ RET
+
Animation_Jump_table:
; 00
RET
@@ -73,6 +125,12 @@ Sparkle_Animation:
LD E, (HL)
INC E
+ LD A, $1f
+ AND E
+ LD E, A
+ XOR A
+ CP E
+ JP Z, =Sparkle_Animation.End_animation
LD (HL), E
.ADD_MOVING_ANIMATION_OFFSET
@@ -81,12 +139,34 @@ Sparkle_Animation:
LD HL, $mem_oam_buffer
LD A, $mem_oam_buffer_low
LD L, A
- ADD $04
+ ADD $08
LD $mem_oam_buffer_low, A
+ LD D, E
+ SRA D
+ LD A, C
+ SUB D
+ ADD $0c
+ LD (HL+), A
+ LD A, B
+ LD (HL+), A
+ LD A, E
+ SRA A
+ SRA A
+ AND $02
+ ADD $60
+
+ LD (HL+), A
+ LD A, $00
+ LD (HL+), A
+
+ SRA D
LD A, C
+ SUB D
+ ADD $08
LD (HL+), A
LD A, B
+ ADD $08
LD (HL+), A
LD A, E
SRA A
@@ -95,9 +175,16 @@ Sparkle_Animation:
ADD $60
LD (HL+), A
- LD A, $10
+ LD A, $00
LD (HL+), A
+
POP HL
+ RET
+ Sparkle_Animation.End_animation:
+ LD A, L
+ AND $fc
+ LD L, A
+ LD (HL), $00
RET