;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*- ;drawing line from 2 cordinates ;;# (X_end, Y_end) # ;;# * # ;;# * # ;;# * # ;;# (X_pos, Y_pos) # ;;NOTE THAT Y_pos >) Y_end, X_pos <= X_end. Min 45deg! .proc line_up_inv ;; Look at line_down for referense .include "line.inc" LDA #$00 STA <V STA <dx_2 STA $FD LDA dx STA >V STA >dx_2 LDA Y_pos SEC SBC Y_end STA dy SEC SBC >V STA >V mult_16 >V, <V mult_16 >dx_2, <dx_2 LDA >dx_2 STA >D LDA <dx_2 STA <D Add_16 >D, <D, #$ff, #$01 Sub_16 >D, <D, dy, #$00 jsr pixel_draw LDX Y_pos for_y: LDA byte_to_paint ORA (>btp_mem_pos), Y STA (>btp_mem_pos), Y decrement_y_pos: DEY CPY #$ff BNE decrement_y_pos_end move_8px_up: LDY #$07 Sub_16>btp_mem_pos, <btp_mem_pos,#$40 , #$01, ! decrement_y_pos_end: DEX CPX Y_end BEQ end Lag_16 >D, <D, #$00, #$02, case_2 case_1: Sub_16 >D, <D, >V, <V, ! increment_pixel_x: LDA byte_to_paint LSR byte_to_paint BCC for_y move_8px_left: Add_16 >btp_mem_pos, <btp_mem_pos, #$08, #$00 LDA #%10000000 STA byte_to_paint JMP for_y case_2: Add_16 >D, <D, >dx_2, <dx_2,! JMP for_y end: RTS .endproc