aboutsummaryrefslogtreecommitdiff
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
parent20422f9a4a180f2c148d93e68930f57379311ca7 (diff)
Add sparkles animation and shadow palette flag
-rw-r--r--animation.gbasm91
-rw-r--r--attacks/heal.gbasm9
-rw-r--r--definitions.gbasm1
-rw-r--r--entity/display.gbasm28
-rw-r--r--init.gbasm11
-rw-r--r--main.gbasm9
-rw-r--r--sprites/animations/sparkle1.pngbin184 -> 183 bytes
-rw-r--r--sprites/animations/sparkle2.pngbin159 -> 164 bytes
-rw-r--r--tileset.gbasm4
9 files changed, 130 insertions, 23 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
diff --git a/attacks/heal.gbasm b/attacks/heal.gbasm
index fd4bf6f..fc0f2b9 100644
--- a/attacks/heal.gbasm
+++ b/attacks/heal.gbasm
@@ -12,6 +12,15 @@ Heal_Attack:
Heal_Attack.Set_health:
LD $mem_bunny_health, A
+ PUSH BC
+ LD A, $mem_bunny_x
+ LD B, A
+ LD A, $mem_bunny_y
+ LD C, A
+ LD A, $01
+ CALL =Try_Launch_Animation
+ POP BC
+
LD A, $enum_dungeon_mode
LD $mem_requested_mode, A
LD $mem_current_mode, A
diff --git a/definitions.gbasm b/definitions.gbasm
index 86a99f2..988128f 100644
--- a/definitions.gbasm
+++ b/definitions.gbasm
@@ -164,6 +164,7 @@
; health: u8 (DAA decimal !!)
; flags: u8
; bit 0: speed 2x
+; bit 1: shadow mode
; _padding: u64
;
; # SANTA CHRISTMAS LIST PLEASE #
diff --git a/entity/display.gbasm b/entity/display.gbasm
index 80c1140..ed3e29b 100644
--- a/entity/display.gbasm
+++ b/entity/display.gbasm
@@ -196,7 +196,7 @@ Display_Entity:
JP =Display_Entity.Down_Direction_sprite
Display_Entity.Left_Direction_sprite:
- CALL =Flags_From_Animation
+ CALL =Flags_From_Animation ; Uses and changes HL
LD D, A
JP =Display_Entity.Write_OBJ
@@ -204,7 +204,7 @@ Display_Entity:
LD A, $02
ADD E
LD E, A
- CALL =Flags_From_Animation
+ CALL =Flags_From_Animation ; Uses and changes HL
OR $20
LD D, A
JP =Display_Entity.Write_OBJ
@@ -213,7 +213,7 @@ Display_Entity:
LD A, $04
ADD E
LD E, A
- CALL =Flags_From_Animation
+ CALL =Flags_From_Animation ; Uses and changes HL
LD D, A
JP =Display_Entity.Write_OBJ
@@ -221,7 +221,7 @@ Display_Entity:
LD A, $08
ADD E
LD E, A
- CALL =Flags_From_Animation
+ CALL =Flags_From_Animation ; Uses and changes HL
LD D, A
JP =Display_Entity.Write_OBJ
@@ -267,11 +267,23 @@ Display_Entity:
LD L, A
RET
-Flags_From_Animation:
+Flags_From_Animation: ; Expect entity in HL (offset doesn't matter) + breaks D (but result in A)
LD A, D
AND $f0
CP $20
- LD A, $00
- RET NZ
- LD A, $40
+ LD D, $00
+ JR NZ, =Flags_From_Animation.Shadow_Palette
+ LD D, $40
+
+ Flags_From_Animation.Shadow_Palette:
+ LD A, L
+ AND $f0
+ OR $07
+ LD L, A
+ BIT 1, (HL)
+ LD A, D
+ RET Z
+
+ OR $10
+
RET
diff --git a/init.gbasm b/init.gbasm
index e382510..aba0282 100644
--- a/init.gbasm
+++ b/init.gbasm
@@ -17,7 +17,7 @@ Nintendo_Logo: ; The Nintendo logo must be stored in bytes 0x104-133
.DB $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D
.DB $00,$08,$11,$1F,$88,$89,$00,$0E,$DC,$CC,$6E,$E6,$DD,$DD,$D9,$99
.DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E
-
+
.PADTO 0x0134
Checksum: ; The bytes 0x134-0x14d need to add up to 0xe7 (= 0xff - 0x19)
.DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
@@ -54,12 +54,15 @@ Empty_VRAM: ; (Clear screen)
; BG Palette
LD A, $e4
LD $reg_bg_palette, A
- LD $reg_obj1_palette, A
-
+
; OBJ0 Palette
LD A, $d3 ; $e4
LD $reg_obj0_palette, A
-
+
+ ; OBJ1 Palette (frozen, shadow)
+ LD A, $ab
+ LD $reg_obj1_palette, A
+
Initialize_Window_GUI:
LD HL, $9c20
Initialize_Window_GUI.top_bar_loop:
diff --git a/main.gbasm b/main.gbasm
index 02b6e94..519e9fb 100644
--- a/main.gbasm
+++ b/main.gbasm
@@ -83,13 +83,8 @@ New_Dungeon:
CALL =Load_Map
CALL =Load_Objects
- LD HL, $mem_animation_list
- LD A, $01
- LD (HL+), A
- LD A, $10
- LD (HL+), A
- LD (HL+), A
-
+ LD A, $02
+ LD $mem_bunny_flags, A
LD A, $00
LD $mem_display_flag, A
diff --git a/sprites/animations/sparkle1.png b/sprites/animations/sparkle1.png
index 3e552c5..ce99810 100644
--- a/sprites/animations/sparkle1.png
+++ b/sprites/animations/sparkle1.png
Binary files differ
diff --git a/sprites/animations/sparkle2.png b/sprites/animations/sparkle2.png
index 429c035..53ee2c6 100644
--- a/sprites/animations/sparkle2.png
+++ b/sprites/animations/sparkle2.png
Binary files differ
diff --git a/tileset.gbasm b/tileset.gbasm
index 967a38b..1192a64 100644
--- a/tileset.gbasm
+++ b/tileset.gbasm
@@ -181,7 +181,7 @@ OBJ_Tile_Image_Data:
Animation_Sprites_Data:
; Sparkles
- .DB $00, $00, $44, $10, $10, $28, $38, $44, $10, $28, $44, $10, $00, $00, $00, $00 ; 0x60
+ .DB $00, $00, $10, $54, $28, $38, $44, $7c, $28, $38, $10, $54, $00, $00, $00, $00 ; 0x60
.DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0x61
- .DB $00, $10, $00, $10, $10, $28, $38, $c6, $10, $28, $00, $10, $00, $10, $00, $00 ; 0x62
+ .DB $10, $10, $10, $10, $28, $38, $c6, $fe, $28, $38, $10, $10, $10, $10, $00, $00 ; 0x62
.DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0x63