Move_Bunny: LD A, $mem_bunny_health CP $00 JR NZ, =Move_Bunny.not_dead LD A, $20 LD $mem_bunny_direction, A RET Move_Bunny.not_dead: 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.test_action SET 3, A LD D, A LD A, $mem_map_loading_flags SET 3, A LD $mem_map_loading_flags, A PUSH BC LD A, D 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 LD A, $mem_map_loading_flags RES 3, A LD $mem_map_loading_flags, A Start_action_or_movement.not_collision: LD A, D LD $mem_bunny_direction, A JR =Start_action_or_movement.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 $07 OR $10 LD $mem_bunny_direction, A 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, $mem_prepared_viewport_x LD B, A LD A, $mem_prepared_viewport_y LD C, A LD A, $01 .ADD_A_TO_DIRECTION_BC LD A, B LD $mem_prepared_viewport_x, A LD A, C LD $mem_prepared_viewport_y, A Scroll_viewport.end: End_movement: LD A, $mem_map_loading_flags BIT 3, A JP Z, =End_movement.end LD A, $mem_moving_animation_step CP $0f JP NZ, =End_movement.end LD A, $mem_bunny_direction BIT 3, A JR Z, =End_movement.end LD $mem_bunny_direction, A LD D, A LD A, $mem_bunny_x LD B, A LD A, $mem_bunny_y LD C, A LD A, $01 .ADD_A_TO_DIRECTION_BC LD A, B LD $mem_bunny_x, A LD A, C LD $mem_bunny_y, 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 End_movement.end: Interaction: LD A, $mem_map_loading_flags BIT 3, A JP Z, =Interaction.end LD A, $mem_moving_animation_step CP $02 JP NZ, =Interaction.end LD A, $mem_bunny_direction AND $f8 CP $10 JR NZ, =Interaction.end LD A, $mem_bunny_x LD B, A LD A, $mem_bunny_y LD C, A LD A, $mem_bunny_direction OR $08 AND $0f LD D, A LD A, $01 .ADD_A_TO_DIRECTION_BC LD HL, $mem_entities_list Interaction.entities_loop: LD A, L AND $f0 ADD $10 LD L, A CP $00 JR Z, =Interaction.end LD A, (HL+) CP $00 JR Z, =Interaction.entities_loop.next LD A, (HL+) CP B JR NZ, =Interaction.entities_loop.next LD A, (HL+) CP C JR NZ, =Interaction.entities_loop.next INC HL INC HL PUSH HL PUSH BC LD E, (HL) LD D, $00 SLA E RL D SLA E RL D LD BC, =Interaction_Jump_table LD A, E ADD C LD E, A LD A, D ADC B LD D, A LD BC, =Interaction.interaction_end PUSH BC PUSH DE RET Interaction.interaction_end: POP BC POP HL Interaction.entities_loop.next: JR =Interaction.entities_loop Interaction.end: Check_End_Action: LD A, $mem_bunny_direction AND $f0 CP $10 JR NZ, =Check_End_Action.end Check_End_Action.end: RET