diff options
Diffstat (limited to 'playerattacks/earcoptr.gbasm')
-rw-r--r-- | playerattacks/earcoptr.gbasm | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/playerattacks/earcoptr.gbasm b/playerattacks/earcoptr.gbasm new file mode 100644 index 0000000..7e74802 --- /dev/null +++ b/playerattacks/earcoptr.gbasm @@ -0,0 +1,94 @@ +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 + LD B, A + LD A, $mem_bunny_y + LD C, A + LD A, $02 + CALL =Try_Launch_Animation + POP BC + + 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 + + .CLOSE_DIALOGUE + RET |