diff options
author | Astatin <[email protected]> | 2025-01-16 18:13:21 +0900 |
---|---|---|
committer | Astatin <[email protected]> | 2025-01-16 18:13:21 +0900 |
commit | 02038990a93c0b4cf58269b5456327ea64b998b7 (patch) | |
tree | 8f23c7270bc705d17d9d380d3a927f12f20ca1fa /playerattacks | |
parent | dc5a9431bf4438000dcd028aa6b9c17c9ca492d8 (diff) |
Move basic enemy attack & walker AI to enemiesattacks
Diffstat (limited to 'playerattacks')
-rw-r--r-- | playerattacks/earcoptr.gbasm | 94 | ||||
-rw-r--r-- | playerattacks/freeze.gbasm | 113 | ||||
-rw-r--r-- | playerattacks/heal.gbasm | 29 | ||||
-rw-r--r-- | playerattacks/hop.gbasm | 189 |
4 files changed, 425 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 diff --git a/playerattacks/freeze.gbasm b/playerattacks/freeze.gbasm new file mode 100644 index 0000000..936bf47 --- /dev/null +++ b/playerattacks/freeze.gbasm @@ -0,0 +1,113 @@ +Freeze_Attack_Loading_VBlank: + LD A, $mem_prepared_viewport_x + LD B, A + LD A, $mem_loading_step + SRA A + AND $03 + BIT 1, A + RES 1, A + JR NZ, =.Shaking_Animation.skip_invert + CPL + INC A + .Shaking_Animation.skip_invert: + ADD B + LD $mem_prepared_viewport_x, A + + LD A, $mem_loading_step + SRA A + SRA A + BIT 0, A + JR Z, =.Blink_Animation.dark_palette + LD A, $palette_normal + LD $mem_prepared_color_palette, A + JR =.end + + .Blink_Animation.dark_palette: + LD A, $palette_white + LD $mem_prepared_color_palette, A + + .end: + LD A, $mem_loading_step + INC A + AND $0f + 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 + +Freeze_Attack_Loading_Regular: + LD A, $mem_loading_step + CP $00 + RET Z + + 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 + + LD D, A + + INC C + + LD A, (BC) + LD E, A + + LD A, $mem_bunny_y + SUB E + .ABS + + ADD D + LD D, A + + LD A, $02 + CP D + + RET C + + LD A, C + ADD $05 + LD C, A + LD A, (BC) + SET 1, A + LD (BC), A + + INC C + LD A, $01 + LD (BC), A + RET + +Freeze_Attack: + LD BC, =Freeze_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, =Freeze_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 diff --git a/playerattacks/heal.gbasm b/playerattacks/heal.gbasm new file mode 100644 index 0000000..281726a --- /dev/null +++ b/playerattacks/heal.gbasm @@ -0,0 +1,29 @@ +Heal_Attack: + LD A, $mem_bunny_health + ADD $03 + DAA + CP $20 + JR C, =.Set_health + LD A, $20 + .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 + + .CLOSE_DIALOGUE + + LD A, $mem_map_loading_flags + SET 3, A + LD $mem_map_loading_flags, A + RET diff --git a/playerattacks/hop.gbasm b/playerattacks/hop.gbasm new file mode 100644 index 0000000..cd69763 --- /dev/null +++ b/playerattacks/hop.gbasm @@ -0,0 +1,189 @@ +Preload_Map_Hop: + LD A, $mem_loading_step + LD C, A + ; Getting the +1/-1 value of the direction to B + LD A, $mem_bunny_direction + AND $07 + DEC A + AND $01 + SLA A + DEC A + LD B, A + + LD A, $mem_bunny_direction + AND $07 + DEC A + + BIT 1, A + JR NZ, =.Map_Load.vertical + + .Map_Load.horizontal: + CALL =Load_Next_Block_Column + JR =.Map_Load.End + + .Map_Load.vertical: + CALL =Load_Next_Block_Row + + .Map_Load.End: +RET + +Hop_Attack_Loading_VBlank: + LD A, $mem_loading_step + CP $00 + JP Z, =.Skip_Display_Block + + LD A, $mem_map_loading_flags + BIT 2, A + RET Z + + CALL =Display_Prepared_Block + + LD A, $mem_prepared_loading_block_tile + LD $mem_prepared_block_tile, A + LD A, $mem_prepared_loading_block_position_1 + LD $mem_prepared_block_position_1, A + LD A, $mem_prepared_loading_block_position_2 + LD $mem_prepared_block_position_2, A + + LD A, $mem_map_loading_flags + SET 2, A + LD $mem_map_loading_flags, A + + CALL =Display_Prepared_Block + + LD A, $mem_bunny_direction + AND $07 + LD D, A + LD A, $mem_viewport_x + LD B, A + LD A, $mem_viewport_y + LD C, A + LD A, $02 + .ADD_A_TO_DIRECTION_BC + LD A, B + LD $mem_viewport_x, A + LD A, C + LD $mem_viewport_y, A + + CALL =Display_Object + + LD A, $mem_bunny_direction + AND $07 + LD D, A + LD A, $mem_viewport_x + LD B, A + LD A, $mem_viewport_y + LD C, A + LD A, $FE + .ADD_A_TO_DIRECTION_BC + LD A, B + LD $mem_viewport_x, A + LD A, C + LD $mem_viewport_y, A + + .Skip_Display_Block: + + LD A, $mem_loading_step + INC A + AND $0f + 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_bunny_direction + OR $38 + LD $mem_bunny_direction, A + LD A, $mem_map_loading_flags + SET 3, A + LD $mem_map_loading_flags, A + LD A, $mem_bunny_flags + SET 0, A + LD $mem_bunny_flags, A + RET + +Hop_Attack_Loading_Regular: + CALL =Preload_Map_Hop + + LD A, $mem_prepared_block_tile + LD $mem_prepared_loading_block_tile, A + LD A, $mem_prepared_block_position_1 + LD $mem_prepared_loading_block_position_1, A + LD A, $mem_prepared_block_position_2 + LD $mem_prepared_loading_block_position_2, A + + LD A, $mem_bunny_direction + AND $07 + LD D, A + LD A, $mem_viewport_x + LD B, A + LD A, $mem_viewport_y + LD C, A + LD A, $01 + .ADD_A_TO_DIRECTION_BC + LD A, B + LD $mem_viewport_x, A + LD A, C + LD $mem_viewport_y, A + + CALL =Preload_Map_Hop + + LD A, $mem_bunny_direction + AND $07 + LD D, A + LD A, $mem_viewport_x + LD B, A + LD A, $mem_viewport_y + LD C, A + LD A, $FF + .ADD_A_TO_DIRECTION_BC + LD A, B + LD $mem_viewport_x, A + LD A, C + LD $mem_viewport_y, A + + RET + +Hop_Attack: + LD A, $mem_bunny_direction + AND $07 + LD D, A + + LD A, $mem_bunny_x + LD B, A + LD A, $mem_bunny_y + LD C, A + + LD A, $02 + .ADD_A_TO_DIRECTION_BC + LD A, B + LD B, C + LD C, A + CALL =Is_Collisionable + CALL =Carve_Entity_Collision_Map + CP $00 + JP NZ, =Canceled_Attack + + LD BC, =Hop_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, =Hop_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 + LD A, $00 + LD $mem_loading_step, A + RET + + |