diff options
author | Astatin <[email protected]> | 2024-09-17 18:14:17 +0900 |
---|---|---|
committer | Astatin <astatin@redacted> | 2024-09-17 18:14:17 +0900 |
commit | fa37dcacf1ff0de66f5c4eed7b89be6006d6d77b (patch) | |
tree | e47ab067c67fa760434dd4d63fbd4bd9e8a7d060 /bunny.gbasm | |
parent | 9e420f33a1d42db70df96c3c14d932216df637c0 (diff) |
Add entities collisions
Diffstat (limited to 'bunny.gbasm')
-rw-r--r-- | bunny.gbasm | 85 |
1 files changed, 41 insertions, 44 deletions
diff --git a/bunny.gbasm b/bunny.gbasm index 1386f01..d19b161 100644 --- a/bunny.gbasm +++ b/bunny.gbasm @@ -1,5 +1,5 @@ Initialize_Bunny: - LD HL, $mem_entites_list + LD HL, $mem_entities_list LD A, $01 LD (HL+), A @@ -194,11 +194,11 @@ Fix_Bunny_screen: RET Move_Bunny: - ; IF HL IS EVER USED, IT SHOULD BE PUSHED HERE + PUSH HL LD C, $00 ; (bit 0 = has_scrolled, bit 1 = has ended movement) LD A, $mem_bunny_direction BIT 3, A - JR NZ, =Move_Bunny.check_direction + JR NZ, =Move_Bunny.check_collision LD A, $mem_button_direction CP $00 @@ -206,6 +206,40 @@ Move_Bunny: SET 3, A LD $mem_bunny_direction, A + Move_Bunny.check_collision: + LD A, $mem_moving_animation_step + CP $00 + JR NZ, =Move_Bunny.check_collision.end + + ; THIS ASSUMES THAT THE BUNNY IS ALWAYS THE FIRST ENTITY IN THE LIST + LD HL, $mem_entities_list + LD A, $mem_bunny_direction + + PUSH BC + CALL =Get_Position_After_Move + LD A, C + CALL =Is_Collisionable + + PUSH AF + PUSH HL + LD HL, $9ba0 + CALL =Print_8bit + POP HL + + CALL =Carve_Entity_Collision_Map + POP AF + POP BC + CP $00 + JR Z, =Move_Bunny.check_collision.end + + Move_Bunny.check_collision.collision: + LD A, $mem_bunny_direction + RES 3, A + LD $mem_bunny_direction, A + JP =Move_Bunny.end + + Move_Bunny.check_collision.end: + Move_Bunny.check_direction: LD A, $mem_bunny_direction @@ -218,58 +252,20 @@ Move_Bunny: Move_Bunny.check_direction_end: BIT 1, A - JR NZ, =Move_Bunny.vertical_move - - Move_Bunny.horizontal_move: - Move_Bunny.horizontal_move.check_collision: - LD D, B - LD A, $mem_bunny_y - LD B, A - LD A, $mem_bunny_x + JR NZ, =Move_Bunny.vertical_viewport_move - ADD D - - CALL =Is_Solid - - CP $00 - JR NZ, =Move_Bunny.collision - - LD B, D - - Move_Bunny.horizontal_px_move: + Move_Bunny.horizontal_viewport_move: SET 0, C LD A, $reg_viewport_x ADD B LD $reg_viewport_x, A JP =Move_Bunny.check_end_of_movement - Move_Bunny.vertical_move: - Move_Bunny.vertical_move.check_collision: - LD D, B - LD A, $mem_bunny_y - ADD D - LD B, A - LD A, $mem_bunny_x - - CALL =Is_Solid - - CP $00 - JR NZ, =Move_Bunny.collision - - LD B, D - - Move_Bunny.vertical_px_move: + Move_Bunny.vertical_viewport_move: SET 0, C LD A, $reg_viewport_y ADD B LD $reg_viewport_y, A - JP =Move_Bunny.check_end_of_movement - - Move_Bunny.collision: - LD A, $mem_bunny_direction - RES 3, A - LD $mem_bunny_direction, A - JP =Move_Bunny.end Move_Bunny.check_end_of_movement: LD A, $mem_moving_animation_step @@ -313,4 +309,5 @@ Move_Bunny: Move_Bunny.end: LD A, C LD $mem_map_loading_flags, A + POP HL RET |