diff options
-rw-r--r-- | animation.gbasm | 110 | ||||
-rw-r--r-- | animations/rotatingball.gbasm | 95 | ||||
-rw-r--r-- | animations/sparkles.gbasm | 106 | ||||
-rw-r--r-- | attacks.gbasm | 1 | ||||
-rw-r--r-- | attacks/earcoptr.gbasm | 21 | ||||
-rw-r--r-- | gui.gbasm | 2 | ||||
-rw-r--r-- | scripts/generate-tiledata.py | 1 | ||||
-rw-r--r-- | sprites/animations/ball.png | bin | 0 -> 140 bytes | |||
-rw-r--r-- | tiles.gbasm | 2 | ||||
-rw-r--r-- | tileset.gbasm | 2 |
10 files changed, 233 insertions, 107 deletions
diff --git a/animation.gbasm b/animation.gbasm index 0796167..a75da27 100644 --- a/animation.gbasm +++ b/animation.gbasm @@ -82,109 +82,9 @@ Animation_Jump_table: JP =Sparkle_Animation NOP -Sparkle_Animation: - INC HL - - LD A, (HL+) - ADD $80 - LD D, A - LD A, $mem_viewport_x - LD B, A - SUB $82 - CP D - RET NC - ADD $0e - CP D - RET C - LD A, D - SUB $80 - SUB B - AND $0f - SWAP A - LD B, A - - - LD A, (HL+) - ADD $80 - LD D, A - LD A, $mem_viewport_y - LD C, A - SUB $82 - CP D - RET NC - ADD $0d - CP D - RET C - LD A, D - SUB $80 - SUB C - AND $0f - SWAP A - ADD $06 - LD C, A - - 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 - - PUSH HL - LD HL, $mem_oam_buffer - LD A, $mem_oam_buffer_low - LD L, A - 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 - SRA A - AND $02 - ADD $60 - - LD (HL+), A - LD A, $00 - LD (HL+), A - - - POP HL - RET + ; 02 + JP =Rotating_Ball_Animation + NOP - Sparkle_Animation.End_animation: - LD A, L - AND $fc - LD L, A - LD (HL), $00 - RET +.INCLUDE "animations/sparkles.gbasm" +.INCLUDE "animations/rotatingball.gbasm" diff --git a/animations/rotatingball.gbasm b/animations/rotatingball.gbasm new file mode 100644 index 0000000..69ca7e5 --- /dev/null +++ b/animations/rotatingball.gbasm @@ -0,0 +1,95 @@ +Rotation_Values: + .DB $F4, $07, $F5, $0A, $F7, $0D, $F8, $0F, $FD, $13, $00, $14, $03, $14, $06, $14, $09, $13, $0C, $12, $0E, $10, $11, $0E, $12, $0B, $13, $09, $14, $06, $14, $02, $13, $FF, $12, $FD, $11, $FA, $0E, $F8, $0C, $F6, $09, $F5, $06, $F4, $03, $F4, $00, $F4, $FD, $F5, $FB, $F7, $F8, $F9, $F7, $FB, $F5, $FE, $F4, $01, $F4, $04 + +Rotating_Ball_Animation: + INC HL + + LD A, (HL+) + ADD $80 + LD D, A + LD A, $mem_viewport_x + LD B, A + SUB $82 + CP D + RET NC + ADD $0e + CP D + RET C + LD A, D + SUB $80 + SUB B + AND $0f + SWAP A + LD B, A + + LD A, (HL+) + ADD $80 + LD D, A + LD A, $mem_viewport_y + LD C, A + SUB $82 + CP D + RET NC + ADD $0d + CP D + RET C + LD A, D + SUB $80 + SUB C + AND $0f + SWAP A + ADD $06 + LD C, A + + LD E, (HL) + INC E + LD A, $1f + AND E + LD E, A + XOR A + CP E + JP Z, =Rotating_Ball.End_animation + + LD (HL), E + + LD A, E + SLA A + LD DE, =Rotation_Values + ADD E + LD E, A + LD A, D + ADC $00 + LD D, A + + .ADD_MOVING_ANIMATION_OFFSET + + PUSH HL + LD HL, $mem_oam_buffer + LD A, $mem_oam_buffer_low + LD L, A + ADD $08 + LD $mem_oam_buffer_low, A + + LD A, (DE) + ADD C + LD (HL+), A + + INC DE + + LD A, (DE) + ADD B + LD (HL+), A + LD A, $64 + LD (HL+), A + LD A, $00 + LD (HL+), A + + POP HL + RET + + Rotating_Ball.End_animation: + LD A, L + AND $fc + LD L, A + LD (HL), $00 + RET diff --git a/animations/sparkles.gbasm b/animations/sparkles.gbasm new file mode 100644 index 0000000..9560ebf --- /dev/null +++ b/animations/sparkles.gbasm @@ -0,0 +1,106 @@ +Sparkle_Animation: + INC HL + + LD A, (HL+) + ADD $80 + LD D, A + LD A, $mem_viewport_x + LD B, A + SUB $82 + CP D + RET NC + ADD $0e + CP D + RET C + LD A, D + SUB $80 + SUB B + AND $0f + SWAP A + LD B, A + + + LD A, (HL+) + ADD $80 + LD D, A + LD A, $mem_viewport_y + LD C, A + SUB $82 + CP D + RET NC + ADD $0d + CP D + RET C + LD A, D + SUB $80 + SUB C + AND $0f + SWAP A + ADD $06 + LD C, A + + 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 + + PUSH HL + LD HL, $mem_oam_buffer + LD A, $mem_oam_buffer_low + LD L, A + 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 + SRA A + AND $02 + ADD $60 + + LD (HL+), A + 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.gbasm b/attacks.gbasm index 864e7e2..eb46184 100644 --- a/attacks.gbasm +++ b/attacks.gbasm @@ -77,3 +77,4 @@ Canceled_Attack: .INCLUDE "attacks/hop.gbasm" .INCLUDE "attacks/heal.gbasm" .INCLUDE "attacks/freeze.gbasm" +.INCLUDE "attacks/earcoptr.gbasm" diff --git a/attacks/earcoptr.gbasm b/attacks/earcoptr.gbasm new file mode 100644 index 0000000..3700a88 --- /dev/null +++ b/attacks/earcoptr.gbasm @@ -0,0 +1,21 @@ +Earcoptr_Attack: + PUSH BC + LD A, $mem_bunny_x + LD B, A + LD A, $mem_bunny_y + LD C, A + LD A, $02 + CALL =Try_Launch_Animation + POP BC + + LD A, $enum_dungeon_mode + LD $mem_requested_mode, A + LD $mem_current_mode, A + + LD A, $00 + LD $mem_display_flag, A + + LD A, $mem_map_loading_flags + SET 3, A + LD $mem_map_loading_flags, A + RET @@ -53,7 +53,7 @@ Init_Menu: LD A, C LD (HL+), A - LD BC, =Exit_Menu + LD BC, =Earcoptr_Attack LD A, B LD (HL+), A LD A, C diff --git a/scripts/generate-tiledata.py b/scripts/generate-tiledata.py index 88b0b85..dd4b80c 100644 --- a/scripts/generate-tiledata.py +++ b/scripts/generate-tiledata.py @@ -54,3 +54,4 @@ print("\nAnimation_Sprites_Data:") print("\n\t; Sparkles") get_sprite_png_parse_output("./sprites/animations/sparkle1.png", tallmode=True) get_sprite_png_parse_output("./sprites/animations/sparkle2.png", tallmode=True) +get_sprite_png_parse_output("./sprites/animations/ball.png", tallmode=True) diff --git a/sprites/animations/ball.png b/sprites/animations/ball.png Binary files differnew file mode 100644 index 0000000..e0ede60 --- /dev/null +++ b/sprites/animations/ball.png diff --git a/tiles.gbasm b/tiles.gbasm index 35262bc..08aa49a 100644 --- a/tiles.gbasm +++ b/tiles.gbasm @@ -20,7 +20,7 @@ Load_Tile: LD HL, $8600 LD DE, =Animation_Sprites_Data - LD BC, $0040 + LD BC, $0060 CALL =memcpy RET diff --git a/tileset.gbasm b/tileset.gbasm index 1192a64..59980b0 100644 --- a/tileset.gbasm +++ b/tileset.gbasm @@ -185,3 +185,5 @@ Animation_Sprites_Data: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0x61 .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 + .DB $00, $00, $3c, $3c, $42, $7e, $42, $7e, $42, $7e, $42, $7e, $3c, $3c, $00, $00 ; 0x64 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0x65 |