diff options
-rw-r--r-- | animation.gbasm | 91 | ||||
-rw-r--r-- | attacks/heal.gbasm | 9 | ||||
-rw-r--r-- | definitions.gbasm | 1 | ||||
-rw-r--r-- | entity/display.gbasm | 28 | ||||
-rw-r--r-- | init.gbasm | 11 | ||||
-rw-r--r-- | main.gbasm | 9 | ||||
-rw-r--r-- | sprites/animations/sparkle1.png | bin | 184 -> 183 bytes | |||
-rw-r--r-- | sprites/animations/sparkle2.png | bin | 159 -> 164 bytes | |||
-rw-r--r-- | tileset.gbasm | 4 |
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 @@ -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: @@ -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 Binary files differindex 3e552c5..ce99810 100644 --- a/sprites/animations/sparkle1.png +++ b/sprites/animations/sparkle1.png diff --git a/sprites/animations/sparkle2.png b/sprites/animations/sparkle2.png Binary files differindex 429c035..53ee2c6 100644 --- a/sprites/animations/sparkle2.png +++ b/sprites/animations/sparkle2.png 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 |