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_Main_Prepared_Block .COPY_4BYTES $mem_prepared_block_tile, $mem_prepared_loading_block_tile .COPY_2BYTES $mem_prepared_block_position, $mem_prepared_loading_block_position LD A, $mem_map_loading_flags SET 2, A LD $mem_map_loading_flags, A CALL =Display_Main_Prepared_Block LD A, $mem_bunny_direction SWAP A 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 SWAP A 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 RET Hop_Attack_Loading_Regular: LD A, $mem_loading_step CP $00 JR NZ, =.preload_tiles LD A, $enum_dungeon_mode LD $mem_current_mode, A LD $mem_requested_mode, A CALL =Update_VBlank_Handler .SET_SOUND_EFFECT =_sound_effect_Jump LD A, $mem_bunny_direction OR $08 LD $mem_bunny_direction, A LD A, $03 LD $mem_bunny_animation, 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 .preload_tiles: LD A, $mem_current_mode CP $enum_loading_mode RET NZ CALL =Preload_Map_Hop .COPY_4BYTES $mem_prepared_loading_block_tile, $mem_prepared_block_tile .COPY_2BYTES $mem_prepared_loading_block_position, $mem_prepared_block_position LD A, $mem_bunny_direction SWAP A 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 SWAP A 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 $70 LD D, A SWAP A OR D 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 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