aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--animation.gbasm110
-rw-r--r--animations/rotatingball.gbasm95
-rw-r--r--animations/sparkles.gbasm106
-rw-r--r--attacks.gbasm1
-rw-r--r--attacks/earcoptr.gbasm21
-rw-r--r--gui.gbasm2
-rw-r--r--scripts/generate-tiledata.py1
-rw-r--r--sprites/animations/ball.pngbin0 -> 140 bytes
-rw-r--r--tiles.gbasm2
-rw-r--r--tileset.gbasm2
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
diff --git a/gui.gbasm b/gui.gbasm
index e9e6402..ba92b94 100644
--- a/gui.gbasm
+++ b/gui.gbasm
@@ -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
new file mode 100644
index 0000000..e0ede60
--- /dev/null
+++ b/sprites/animations/ball.png
Binary files differ
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