diff options
author | Astatin <[email protected]> | 2024-10-01 17:17:13 +0900 |
---|---|---|
committer | Astatin <astatin@redacted> | 2024-10-01 17:17:13 +0900 |
commit | 9eab2451e369e56508d1a6b8380e772d74ce7c40 (patch) | |
tree | cb886283ddac73cec34d69075125338a93d4955c /entity | |
parent | 6f0a76fccce2bd8cbe74975623b28f0201b2610a (diff) |
Fix bunny display and add attack animation
Diffstat (limited to 'entity')
-rw-r--r-- | entity/actions.gbasm | 2 | ||||
-rw-r--r-- | entity/bunny.gbasm | 240 | ||||
-rw-r--r-- | entity/display.gbasm | 37 | ||||
-rw-r--r-- | entity/utils.gbasm | 4 |
4 files changed, 100 insertions, 183 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm index 4dafb04..1380c49 100644 --- a/entity/actions.gbasm +++ b/entity/actions.gbasm @@ -59,7 +59,7 @@ Entity_Action: Update_Animation_Steps: LD A, $mem_map_loading_flags BIT 3, A - JR Z, =Update_Animation_Steps.end: + JR Z, =Update_Animation_Steps.end LD A, $mem_moving_animation_step INC A diff --git a/entity/bunny.gbasm b/entity/bunny.gbasm index 5571d03..0460433 100644 --- a/entity/bunny.gbasm +++ b/entity/bunny.gbasm @@ -1,33 +1,84 @@ Move_Bunny: - Start_action_or_movement: LD A, $mem_map_loading_flags BIT 3, A JR NZ, =Start_action_or_movement.end + + Start_action_or_movement.test_movement: + LD A, $mem_button_direction CP $00 - JP Z, =Start_action_or_movement.end + JP Z, =Start_action_or_movement.test_action SET 3, A + LD D, A + + PUSH BC + CALL =Get_Position_After_Move + LD A, C + CALL =Is_Collisionable + CALL =Carve_Entity_Collision_Map + POP BC + CP $00 + JR Z, =Start_action_or_movement.not_collision + RES 3, D + Start_action_or_movement.not_collision: + LD A, D + LD $mem_bunny_direction, A + JR =Start_action_or_movement.test_end + + + Start_action_or_movement.test_action: + LD A, $mem_button_action + BIT 0, A + JR Z, =Start_action_or_movement.end + LD A, $mem_bunny_direction + AND $0f + OR $10 + LD $mem_bunny_direction, A + + Start_action_or_movement.test_end: LD A, $mem_map_loading_flags SET 3, A LD $mem_map_loading_flags, A Start_action_or_movement.end: + Scroll_viewport: + LD A, $mem_map_loading_flags + BIT 3, A + JR Z, =Scroll_viewport.end + LD A, $mem_bunny_direction + BIT 3, A + JR Z, =Scroll_viewport.end + + LD A, $mem_bunny_direction + LD D, A + LD A, $reg_viewport_x + LD B, A + LD A, $reg_viewport_y + LD C, A + LD A, $01 + .ADD_A_TO_DIRECTION_BC + LD A, B + LD $reg_viewport_x, A + LD A, C + LD $reg_viewport_y, A + Scroll_viewport.end: End_movement: LD A, $mem_map_loading_flags BIT 3, A - JR Z, =End_movement.end + JP Z, =End_movement.end LD A, $mem_moving_animation_step CP $0f - JR NZ, =End_movement.end + JP NZ, =End_movement.end LD A, $mem_bunny_direction - RES 3, A + BIT 3, A + JR Z, =End_movement.end + AND $07 LD $mem_bunny_direction, A - AND $07 LD D, A LD A, $mem_bunny_x LD B, A @@ -39,172 +90,17 @@ Move_Bunny: LD $mem_bunny_x, A LD A, C LD $mem_bunny_y, A - End_movement.end: - - - Scroll_viewport: - LD A, $mem_map_loading_flags - BIT 3, A - JR Z, =Scroll_viewport.end - LD A, $mem_bunny_direction - BIT 3, A - JR Z, =Scroll_viewport.end - Move_Bunny.check_direction: - LD A, $mem_bunny_direction - - DEC A - LD B, $01 ; Direction of the movement (+1) - BIT 0, A - JR NZ, =Move_Bunny.check_direction_end - LD B, $FF ; Direction of the movement (-1) - - Move_Bunny.check_direction_end: - - BIT 1, A - JR NZ, =Move_Bunny.vertical_viewport_move - - Move_Bunny.horizontal_viewport_move: - SET 0, C - LD A, $reg_viewport_x - ADD B - LD $reg_viewport_x, A - JP =Scroll_viewport.end - - Move_Bunny.vertical_viewport_move: - SET 0, C - LD A, $reg_viewport_y - ADD B - LD $reg_viewport_y, A - - Scroll_viewport.end: + 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 + End_movement.end: RET - -; 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 -; -; LD B, $00 -; Move_Bunny.check_start_action: -; LD A, $mem_button_action -; BIT 0, A -; JR Z, =Move_Bunny.check_start_action.end -; LD B, $10 -; Move_Bunny.check_start_action.end: -; LD A, $mem_bunny_direction -; AND $0f -; OR B -; LD $mem_bunny_direction, A -; LD A, $mem_map_loading_flags -; SET 3, A -; LD $mem_map_loading_flags, A -; -; LD A, $mem_bunny_direction -; AND $f0 -; LD B, A -; LD A, $mem_button_direction -; CP $00 -; JP Z, =Move_Bunny.end -; SET 3, A -; OR B -; LD $mem_bunny_direction, A -; LD A, $mem_map_loading_flags -; SET 3, A -; LD $mem_map_loading_flags, 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 -; PUSH HL -; LD HL, $mem_entities_list -; LD A, $mem_bunny_direction -; -; PUSH BC -; CALL =Get_Position_After_Move -; LD A, C -; CALL =Is_Collisionable -; CALL =Carve_Entity_Collision_Map -; POP BC -; POP HL -; 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 -; -; DEC A -; LD B, $01 ; Direction of the movement (+1) -; BIT 0, A -; JR NZ, =Move_Bunny.check_direction_end -; LD B, $FF ; Direction of the movement (-1) -; -; Move_Bunny.check_direction_end: -; -; BIT 1, A -; JR NZ, =Move_Bunny.vertical_viewport_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_viewport_move: -; SET 0, C -; LD A, $reg_viewport_y -; ADD B -; LD $reg_viewport_y, A -; -; Move_Bunny.check_end_of_movement: -; LD A, $mem_moving_animation_step -; CP $0f -; JR NZ, =Move_Bunny.end -; SET 1, C -; LD A, $mem_bunny_direction -; AND $07 -; LD $mem_bunny_direction, A -; DEC A -; -; BIT 1, A -; JR NZ, =Move_Bunny.vertical_tile_move -; -; Move_Bunny.horizontal_tile_move: -; BIT 0, C -; JR Z, =Move_Bunny.horizontal_tile_move.move_viewport_end -; LD A, $mem_viewport_x -; ADD B -; LD $mem_viewport_x, A -; Move_Bunny.horizontal_tile_move.move_viewport_end: -; LD A, $mem_bunny_x -; ADD B -; LD $mem_bunny_x, A -; JP =Move_Bunny.end -; -; Move_Bunny.vertical_tile_move: -; BIT 0, C -; LD A, $mem_viewport_y -; ADD B -; LD $mem_viewport_y, A -; Move_Bunny.vertical_tile_move.move_viewport_end: -; LD A, $mem_bunny_y -; ADD B -; LD $mem_bunny_y, A -; -; Move_Bunny.end: -; LD A, C -; LD $mem_map_loading_flags, A -; RET diff --git a/entity/display.gbasm b/entity/display.gbasm index 25cd759..d03d05d 100644 --- a/entity/display.gbasm +++ b/entity/display.gbasm @@ -80,6 +80,9 @@ Display_Entity: ADD $02 LD C, A + LD A, $mem_map_loading_flags + BIT 3, A + JR Z, =Display_Entity.Viewport_offset_end LD A, $mem_bunny_direction BIT 3, A JR Z, =Display_Entity.Viewport_offset_end @@ -97,7 +100,8 @@ Display_Entity: SUB $08 AND $0f XOR $ff - ADD $12 + INC A + ADD $10 ADD B LD B, A @@ -108,6 +112,7 @@ Display_Entity: SUB $08 AND $0f XOR $ff + INC A ADD B LD B, A @@ -119,7 +124,8 @@ Display_Entity: SUB $08 AND $0f XOR $ff - ADD $12 + INC A + ADD $10 ADD C LD C, A @@ -131,6 +137,7 @@ Display_Entity: SUB $08 AND $0f XOR $ff + INC A ADD C LD C, A @@ -154,12 +161,26 @@ Display_Entity: JR NZ, =Display_Entity.Action_Animation.end LD A, $mem_moving_animation_step - SUB $08 - .ABS - XOR $ff - INC A - ADD $08 - .ADD_A_TO_DIRECTION_BC + CP $04 + JR C, =Display_Entity.Action_Animation.Step1 + CP $0c + JR C, =Display_Entity.Action_Animation.Step2 + JR =Display_Entity.Action_Animation.end + + Display_Entity.Action_Animation.Step1: + SLA A + SLA A + JR =Display_Entity.Action_Animation.Apply + + Display_Entity.Action_Animation.Step2: + SUB $04 + SLA A + XOR $ff + INC A + ADD $10 + + Display_Entity.Action_Animation.Apply: + .ADD_A_TO_DIRECTION_BC Display_Entity.Action_Animation.end: Display_Entity.Moving_Hops: diff --git a/entity/utils.gbasm b/entity/utils.gbasm index 19d1275..4900186 100644 --- a/entity/utils.gbasm +++ b/entity/utils.gbasm @@ -60,6 +60,7 @@ Get_Position_After_Move: ; entity (whatever alignement) in HL, direction to test $left: POP AF XOR $ff + INC A ADD B LD B, A @@ -67,7 +68,6 @@ Get_Position_After_Move: ; entity (whatever alignement) in HL, direction to test $right: POP AF - INC A ADD B LD B, A @@ -76,6 +76,7 @@ Get_Position_After_Move: ; entity (whatever alignement) in HL, direction to test $up: POP AF XOR $ff + INC A ADD C LD C, A @@ -83,7 +84,6 @@ Get_Position_After_Move: ; entity (whatever alignement) in HL, direction to test $down: POP AF - INC A ADD C LD C, A |