Compare commits

..

No commits in common. "31242dd7d90a91cf8cfdc2c31fdc3be681395ef3" and "69b29fc77c848aa9404bb3c105266445f267aab3" have entirely different histories.

5 changed files with 120 additions and 192 deletions

2
.gitignore vendored
View file

@ -3,7 +3,7 @@
*.o *.o
*.lst *.lst
*.note *.note
host/build/* ./build/*
*.lbl *.lbl
*.bin *.bin
*.labels *.labels

View file

@ -1,75 +1,75 @@
;inverse_factor_value: ;lookup 00000001 --gives--> 10000000 , etc etc. only 1st 1 in binary numbers inverse_factor_value: ;lookup 00000001 --gives--> 10000000 , etc etc. only 1st 1 in binary numbers
;NOP NOP
;.byte %10000000, %01000000; (inverse factor value) .byte %10000000, %01000000; (inverse factor value)
;NOP NOP
;.byte %00100000; (inverse factor value) .byte %00100000; (inverse factor value)
;NOP NOP
;NOP;.byte $0; (log) NOP;.byte $0; (log)
;NOP;.byte $1; (log) NOP;.byte $1; (log)
;.byte %00010000; (inverse factor value) .byte %00010000; (inverse factor value)
;log: log:
;NOP NOP
;.byte $0; (log) .byte $0; (log)
;.byte $1; (log) .byte $1; (log)
;NOP NOP
;.byte $2 .byte $2
;NOP NOP
;NOP NOP
;.byte %00001000; (inverse factor value) .byte %00001000; (inverse factor value)
;.byte $3 .byte $3
;NOP NOP
;NOP NOP
;;; i put another lookup table where nops normaly are' ;; i put another lookup table where nops normaly are'
binary_factor: binary_factor:
.byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001; (binary factor) .byte %10000000, %01000000, %00100000, %00010000, %00001000, %00000100, %00000010, %00000001; (binary factor)
;; ^(log) ;; ^(log)
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;.byte %00000100; (inverse factor value) .byte %00000100; (inverse factor value)
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;.byte $5 ;(log) .byte $5
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;.byte %00000010; (inverse factor value) .byte %00000010; (inverse factor value)
;
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;.byte $6; (log) .byte $6
;; i put another lookup table where nops normaly are ;; i put another lookup table where nops normaly are
Bitmap = $4000 Bitmap = $4000
;;This is used by pixel_draw! look at it for more detail ;;This is used by pixel_draw! look at it for more detail
@ -124,17 +124,17 @@ big_y_offset:
.hibytes $1CC0 + Bitmap .hibytes $1CC0 + Bitmap
.lobytes $1E00 + Bitmap .lobytes $1E00 + Bitmap
.hibytes $1E00 + Bitmap .hibytes $1E00 + Bitmap
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;.byte %00000001; (inverse factor value) .byte %00000001
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;NOP NOP
;.byte $7; (log) .byte $7

View file

@ -11,4 +11,3 @@
V = $E4 ; 16-bit value (uses E5) V = $E4 ; 16-bit value (uses E5)
D = $E6 ; 16-bit value (uses E7) D = $E6 ; 16-bit value (uses E7)
byte_to_paint = $E8 byte_to_paint = $E8
;; E9 in use of pixel_calc

View file

@ -1,45 +1,16 @@
;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*- ;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*-
.proc line; user-procedure :clobbers (A X Y) :clobbers-arguments 4 .proc line; user-procedure :clobbers (A X Y) :clobbers-arguments 4
;X_pos =< X_end skall alltid gälla
.include "line.inc" .include "line.inc"
;; Fix line that is too long
LDA Y_pos
CMP #$C8 ;;y_max = $C8
BCC do_not_fix_y_pos
LDA #$C8
STA Y_pos
do_not_fix_y_pos:
LDA Y_end
CMP #$C8 ;;y_max = $C8
BCC do_not_fix_y_end
LDA #$C8
STA Y_end
do_not_fix_y_end:
;;dx ;;dx
SEC SEC
LDA X_end LDA X_end
SBC X_pos SBC X_pos
BCS dx_no_underflow;; X_end >= X_pos STA dx
BCC dx_no_underflow;; X_end >= X_pos
EOR #$ff ; Fix bit underflow EOR #$ff ; Fix bit underflow
STA dx
;; line_* expect X_pos < X_end and now its not the case.
;; Lets move them around
LDX X_pos
LDY X_end
STX X_end
STY X_pos
LDX Y_pos
LDY Y_end
STX Y_end
STY Y_pos
dx_no_underflow: dx_no_underflow:
STA dx
SEC SEC
LDA Y_pos LDA Y_pos
SBC Y_end SBC Y_end

View file

@ -6,16 +6,16 @@
.include "../memory/mem.inc" .include "../memory/mem.inc"
Y_pos_ = $0D Y_pos_ = $0D
X_pos_ = $0E X_pos_ = $0E
Y_end_ = $0F Y_end_ = $10
X_end_ = $0C X_end_ = $11
LDA #$d2 LDA #$d2
STA X_pos_ STA X_pos_
LDA #$62 LDA #$62
STA Y_pos_ STA Y_pos_
LDA #$ff LDA #$ff
STA X_end_ STA X_end
LDA #$0 LDA #$0
STA Y_end_ STA Y_end
;; Full angle test ;; Full angle test
@loop: @loop:
@ -23,17 +23,16 @@
STA Y_pos STA Y_pos
LDA X_pos_ LDA X_pos_
STA X_pos STA X_pos
LDA X_end_
STA X_end
LDA Y_end_
STA Y_end
jsr line jsr line
INC Y_end_ INC Y_end
LDA Y_end_ LDA Y_end
CMP #$ff CMP #$bb
bne @loop bne @loop
hihi:
jmp hihi
clear_screen: clear_screen:
;;Lets clear bitmap ;;Lets clear bitmap
VIC_bank = $4000 VIC_bank = $4000
@ -49,23 +48,18 @@ long_line_test_a:
LDA #$60 LDA #$60
STA Y_pos_ STA Y_pos_
LDA #$ff LDA #$ff
STA X_end_ STA X_end
LDA #$0 LDA #$0
STA Y_end_ STA Y_end
@loop: @loop:
LDA Y_pos_ LDA Y_pos_
STA Y_pos STA Y_pos
LDA X_pos_ LDA X_pos_
STA X_pos STA X_pos
LDA X_end_
STA X_end
LDA Y_end_
STA Y_end
jsr line jsr line
INC Y_end_ INC Y_end
LDA Y_end_ LDA Y_end
CMP #$ff CMP #$bb
BNE @loop BNE @loop
clear_screen_: clear_screen_:
@ -74,60 +68,24 @@ clear_screen_:
Mov_16 length, length + 1, #<$1f40, #>$1f40 Mov_16 length, length + 1, #<$1f40, #>$1f40
LDA #$00 LDA #$00
jsr memset jsr memset
long_line_test_b: long_line_test_b:
LDA #$00 LDA #$00
STA X_pos_ STA X_pos_
LDA #$00 LDA #$00
STA Y_pos_ STA Y_pos_
LDA #$ff LDA #$ff
STA X_end_ STA X_end
LDA #$60 LDA #$60
STA Y_end_ STA Y_end
@loop: @loop:
LDA Y_pos_ LDA Y_pos_
STA Y_pos STA Y_pos
LDA X_pos_ LDA X_pos_
STA X_pos STA X_pos
LDA X_end_ jsr line
STA X_end INC Y_pos_
LDA Y_end_ LDA Y_pos_
STA Y_end CMP #$bb
jsr line BNE @loop
INC Y_pos_
LDA Y_pos_
CMP #$ff
BNE @loop
clear_screen__:
;;Paint the bitmap black. More bitmap: https://www.c64-wiki.com/wiki/53272, https://www.c64-wiki.com/wiki/Screen_RAM#Moving_of_screen_RAM
Mov_16 A_start, A_start + 1, #<VIC_bank, #>VIC_bank
Mov_16 length, length + 1, #<$1f40, #>$1f40
LDA #$00
jsr memset
long_line_test_b_pos_end_swapped:
LDA #$00
STA X_end_
LDA #$00
STA Y_end_
LDA #$ff
STA X_pos_
LDA #$60
STA Y_pos_
@loop:
LDA Y_end_
STA Y_end
LDA X_end_
STA X_end
LDA X_pos_
STA X_pos
LDA Y_pos_
STA Y_pos
jsr line
INC Y_end_
LDA Y_end_
CMP #$ff
BNE @loop
.endscope .endscope