Initialize_Bunny: LD A, $20 LD ($80), A LD A, $20 LD ($81), A RET Move_Bunny: LD A, ($83) CP $00 JR NZ, =Move_Bunny.check_direction LD A, ($82) LD ($83), A CP $00 JR Z, =Move_Bunny.end Move_Bunny.check_direction: LD ($85), A DEC A LD B, $01 BIT 0, A JR NZ, =Move_Bunny.check_direction_end LD B, $FF Move_Bunny.check_direction_end: BIT 1, A JR NZ, =Move_Bunny.vertical_move Move_Bunny.horizontal_move: LD A, ($81) ADD B LD ($81), A JP =Move_Bunny.check_end_of_movement Move_Bunny.vertical_move: LD A, ($80) ADD B LD ($80), A Move_Bunny.check_end_of_movement: AND $0f LD ($84), A JR NZ, =Move_Bunny.end LD ($83), A Move_Bunny.end: RET Display_Bunny: ; X position in $81, Y position in $80 LD A, ($81) LD B, A LD A, ($80) LD C, A LD A, ($84) SUB $08 BIT 7, A JR Z, =Display_Bunny.Hop_ABS1_end ; Adding hop animation to Y XOR $ff INC A Display_Bunny.Hop_ABS1_end: SUB $04 BIT 7, A JR Z, =Display_Bunny.Hop_ABS2_end XOR $ff INC A Display_Bunny.Hop_ABS2_end: ADD C LD C, A ; X flip LD A, ($85) CP $02 LD E, $01 LD D, $00 JR NZ, =Display_Bunny.Write_OBJ LD D, $20 LD E, $03 Display_Bunny.Write_OBJ: ; First OBJ (left) LD HL, $FE00 LD A, C LD (HL+), A LD A, B LD (HL+), A LD A, E LD (HL+), A LD A, D LD (HL+), A ; Second OBJ LD A, B ADD $08 LD B, A LD A, C LD (HL+), A LD A, B LD (HL+), A LD A, E XOR $02 LD (HL+), A LD A, D LD (HL+), A RET