optimise memset and pixel draw!

This commit is contained in:
hugova 2025-07-13 23:56:14 +02:00
parent 5a35ead4dd
commit d09f417a49
2 changed files with 21 additions and 28 deletions

View file

@ -11,7 +11,7 @@ LDX length +1
BNE big_set
JMP small_set
LDX length + 1
big_set: ;sets $ff of memory
LDY #$ff
.repeat $ff
@ -22,7 +22,7 @@ big_set: ;sets $ff of memory
big_set_end:
;;set all hole $ff memory chunks!
INC A_start + 1
DEC length + 1
DEX ;; length +1 --
BEQ small_set
JMP big_set

View file

@ -4,20 +4,6 @@
.proc pixel_draw; user-procedure :clobbers (A X Y) :clobbers-arguments 0
.include "pixel.inc"
;; Lets clear some memory for later
LDA #$00
STA btp_mem_pos + 1
calc_byte_to_paint:
;; X = X_pos (mod 8)
LDA X_pos
AND #%00000111
TAX
;;this is the same as: byte_to_paint = 2^X
LDA binary_factor, X;; (see END.s)
STA byte_to_paint
;;FIND position to write byte_to_paint (btp_mem_pos)
;; + + + + + > X
;; +
@ -39,26 +25,33 @@ calc_byte_to_paint:
;; We need to remove the last digit if its still there
;; same as LSR ASR
AND #%11111110
TAX
LDA big_y_offset, X
STA btp_mem_pos
INX
LDA big_y_offset,X
STA btp_mem_pos + 1
;; btp_mem_pos = big_x_offset
;; big_y_offset + big_x_offset
CLC
;;A = big_x_offset
LDA #%11111000
AND X_pos
Add_16 btp_mem_pos, btp_mem_pos +1, A, #$00
ADC big_y_offset, X
STA btp_mem_pos
LDA #$00
INX
ADC big_y_offset, X
STA btp_mem_pos + 1
;; + smal_y_offset
;; + small_y_offset
LDA #%00000111 ; A = y (mod 8)
AND Y_pos ;; offset to add
TAY
;;Let draw some stuff
LDA byte_to_paint ;; note that both bytes are used!
calc_byte_to_paint: ;; aka small_x_offset
LDA X_pos
AND #%00000111
TAX
;;this is the same as: byte_to_paint = 2^X
LDA binary_factor, X;; (see END.s)
STA byte_to_paint ;; should be removed, here for other code!
draw: ;;Let draw some stuff
ORA (btp_mem_pos), Y
STA (btp_mem_pos), Y
RTS