aboutsummaryrefslogtreecommitdiff
path: root/attacks/earcoptr.gbasm
diff options
context:
space:
mode:
Diffstat (limited to 'attacks/earcoptr.gbasm')
-rw-r--r--attacks/earcoptr.gbasm86
1 files changed, 80 insertions, 6 deletions
diff --git a/attacks/earcoptr.gbasm b/attacks/earcoptr.gbasm
index 3700a88..baa08b9 100644
--- a/attacks/earcoptr.gbasm
+++ b/attacks/earcoptr.gbasm
@@ -1,3 +1,70 @@
+Earcoptr_Attack_Loading_VBlank:
+ LD A, $mem_loading_step
+ INC A
+ AND $1f
+ LD $mem_loading_step, A
+ CP $00
+ RET NZ
+
+ LD A, $enum_dungeon_mode
+ LD $mem_current_mode, A
+ LD $mem_requested_mode, A
+ LD A, $mem_map_loading_flags
+ SET 3, A
+ LD $mem_map_loading_flags, A
+ RET
+
+Earcoptr_Attack_Loading_Regular:
+ LD A, $mem_loading_step
+ CP $00
+ RET Z
+ CP $11
+ RET C
+
+ SUB $10
+ LD BC, $mem_entities_list
+ SLA A
+ SLA A
+ SLA A
+ SLA A
+ INC A
+ LD C, A
+
+ LD A, (BC)
+ LD E, A
+
+ LD A, $mem_bunny_x
+ SUB E
+ .ABS
+ CP $02
+ RET NC
+
+ INC C
+
+ LD A, (BC)
+ LD E, A
+
+ LD A, $mem_bunny_y
+ SUB E
+ .ABS
+ CP $02
+ RET NC
+
+ INC C
+ LD A, (BC)
+ AND $0f
+ OR $50
+ LD (BC), A
+
+ LD A, C
+ ADD $03
+ LD C, A
+ LD A, (BC)
+ SUB $01
+ RET C
+ LD (BC), A
+ RET
+
Earcoptr_Attack:
PUSH BC
LD A, $mem_bunny_x
@@ -8,14 +75,21 @@ Earcoptr_Attack:
CALL =Try_Launch_Animation
POP BC
- LD A, $enum_dungeon_mode
+ LD BC, =Earcoptr_Attack_Loading_VBlank
+ LD A, B
+ LD $mem_loading_mode_vblank_func_pointer_high, A
+ LD A, C
+ LD $mem_loading_mode_vblank_func_pointer_low, A
+
+ LD BC, =Earcoptr_Attack_Loading_Regular
+ LD A, B
+ LD $mem_loading_mode_regular_func_pointer_high, A
+ LD A, C
+ LD $mem_loading_mode_regular_func_pointer_low, A
+
+ LD A, $enum_loading_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