Set_E_Skip_display: LD E, $01 RET Laser_Animation: INC HL LD E, $00 LD A, (HL+) ADD $80 LD D, A LD A, $mem_viewport_x LD B, A SUB $82 CP D CALL NC, =Set_E_Skip_display ADD $0e CP D CALL C, =Set_E_Skip_display LD A, D SUB $80 SUB B AND $0f SWAP A LD B, A LD A, (HL+) ADD $80 LD D, A LD A, $mem_viewport_y LD C, A SUB $82 CP D CALL NC, =Set_E_Skip_display ADD $0d CP D CALL C, =Set_E_Skip_display LD A, D SUB $80 SUB C AND $0f SWAP A ADD $06 LD C, A LD A, E LD $tmp_var_1, A LD A, (HL) SUB $02 JP C, =End_animation LD E, A LD (HL), A DEC HL DEC HL DEC HL LD A, (HL+) SWAP A SRA A SRA A AND $03 INC A LD D, A LD A, $04 ADD B LD B, A LD A, $04 ADD C LD C, A LD A, $0f AND E CP $00 JR NZ =.Skip_move_animation_tile PUSH BC LD B, (HL) INC HL LD C, (HL) LD A, $01 .ADD_A_TO_DIRECTION_BC LD (HL), C DEC HL LD (HL), B POP BC .Skip_move_animation_tile: LD A, $tmp_var_1 CP $01 RET Z LD A, $0f AND E CPL INC A ADD $0f .ADD_A_TO_DIRECTION_BC .ADD_MOVING_ANIMATION_OFFSET PUSH HL LD HL, $mem_oam_buffer LD A, $mem_oam_buffer_low LD L, A LD A, C LD (HL+), A LD A, B LD (HL+), A LD A, $vram_animation_index+4 LD (HL+), A LD A, $00 LD (HL+), A LD A, L LD $mem_oam_buffer_low, A POP HL RET