Do some renaming and change the code structure for circle-draw
This commit is contained in:
parent
fd587ea440
commit
bdca0cd82a
3 changed files with 69 additions and 59 deletions
|
@ -14,10 +14,16 @@
|
|||
; E8 - EA is used by pixel.inc
|
||||
btp_mem_pos_center = $E6 ; 16bit value (uses E7)
|
||||
btp_mem_pos_center_two = btp_mem_pos_center
|
||||
btp_mem_pos_inv_y =$EB ; 16bit value (uses EC)
|
||||
btp_mem_pos_inv = $ED ; 16bit value (uses EE)
|
||||
|
||||
btp_mem_pos_swop = $D0 ; 16bit value (uses D1)
|
||||
temp__ = $D2
|
||||
temp___ = $D3
|
||||
btp_mem_pos_swop_inv_y = $D4 ;16bit value (uses D5)
|
||||
temp__ = $D0
|
||||
temp___ = $D1
|
||||
btp_mem_pos_qaa = btp_mem_pos
|
||||
btp_mem_pos_qcb = $D2 ; 16bit value (uses D3)
|
||||
btp_mem_pos_qdb = $D4 ;16bit value (uses D5)
|
||||
btp_mem_pos_qda =$D6 ; 16bit value (uses D7)
|
||||
|
||||
;;mirrord
|
||||
btp_mem_pos_qab = $D8
|
||||
btp_mem_pos_qca = $DA
|
||||
btp_mem_pos_qba = $DC
|
||||
btp_mem_pos_qbb = $DE
|
||||
|
|
|
@ -41,14 +41,14 @@ draw_lower_px_in_circle:
|
|||
JSR pixel_draw
|
||||
|
||||
LDA btp_mem_pos
|
||||
STA btp_mem_pos_swop
|
||||
STA btp_mem_pos_swop_inv_y
|
||||
STA btp_mem_pos_qcb
|
||||
STA btp_mem_pos_qdb
|
||||
LDA btp_mem_pos + 1
|
||||
STA btp_mem_pos_swop_inv_y + 1
|
||||
STA btp_mem_pos_swop + 1
|
||||
STA btp_mem_pos_qdb + 1
|
||||
STA btp_mem_pos_qcb + 1
|
||||
;; fix offset of 8 bytes, idk why this is needed
|
||||
Sub_16 btp_mem_pos_swop, btp_mem_pos_swop + 1, #$40, #$01 ;-320
|
||||
Sub_16 btp_mem_pos_swop_inv_y, btp_mem_pos_swop_inv_y + 1, #$40, #$01 ;-320
|
||||
Sub_16 btp_mem_pos_qcb, btp_mem_pos_qcb + 1, #$40, #$01 ;-320
|
||||
Sub_16 btp_mem_pos_qdb, btp_mem_pos_qdb + 1, #$40, #$01 ;-320
|
||||
|
||||
LDA temp
|
||||
STA Y_pos
|
||||
|
@ -63,12 +63,12 @@ draw_right_px_in_circle:
|
|||
;; This sets byte_to_paint, btp_mem_pos and Y
|
||||
|
||||
LDA btp_mem_pos
|
||||
STA btp_mem_pos_inv_y
|
||||
STA btp_mem_pos_qda
|
||||
LDA btp_mem_pos + 1
|
||||
STA btp_mem_pos_inv_y + 1
|
||||
STA btp_mem_pos_qda + 1
|
||||
|
||||
;; fix offset of 8 bytes, idk why this is needed
|
||||
Sub_16 btp_mem_pos_inv_y, btp_mem_pos_inv_y + 1, #$40, #$01 ;-320
|
||||
Sub_16 btp_mem_pos_qda, btp_mem_pos_qda + 1, #$40, #$01 ;-320
|
||||
|
||||
|
||||
|
||||
|
@ -103,11 +103,11 @@ move_8px_left:
|
|||
Sub_16 btp_mem_pos, btp_mem_pos + 1, #$08, #$00, !
|
||||
|
||||
;; Y is inverted
|
||||
Sub_16 btp_mem_pos_inv_y, btp_mem_pos_inv_y + 1, #$08, #$00, !
|
||||
Sub_16 btp_mem_pos_qda, btp_mem_pos_qda + 1, #$08, #$00, !
|
||||
;; X and Y has swoped
|
||||
Sub_16 btp_mem_pos_swop, btp_mem_pos_swop + 1, #$40, #$01 ;-320
|
||||
Sub_16 btp_mem_pos_qcb, btp_mem_pos_qcb + 1, #$40, #$01 ;-320
|
||||
;; X and Y has swoped and Y has inverted
|
||||
Sub_16 btp_mem_pos_swop_inv_y, btp_mem_pos_swop_inv_y +1, #$40, #$01 ;+320
|
||||
Sub_16 btp_mem_pos_qdb, btp_mem_pos_qdb +1, #$40, #$01 ;+320
|
||||
|
||||
;; Restores byte to paint
|
||||
LDA #%00000001
|
||||
|
|
|
@ -15,13 +15,39 @@
|
|||
;; v Y
|
||||
;; The q stands for quarter, whe have 4 quarter, and each quarter is split into 2
|
||||
|
||||
;; We first calculate all btp_mem_pos for the inverted half quarters!
|
||||
calculate_inverted_bmp:
|
||||
;; qab = 2*center - qcb
|
||||
;; qca = 2*center - qaa
|
||||
;; qbq = 2*center - qda
|
||||
|
||||
LDA btp_mem_pos_center_two
|
||||
SBC btp_mem_pos_qcb
|
||||
STA btp_mem_pos_qab
|
||||
LDA btp_mem_pos_center_two + 1
|
||||
SBC btp_mem_pos_qcb + 1
|
||||
STA btp_mem_pos_qab + 1
|
||||
|
||||
LDA btp_mem_pos_center_two
|
||||
SBC btp_mem_pos
|
||||
STA btp_mem_pos_qca
|
||||
LDA btp_mem_pos_center_two + 1
|
||||
SBC btp_mem_pos + 1
|
||||
STA btp_mem_pos_qca + 1
|
||||
|
||||
LDA btp_mem_pos_center_two
|
||||
SBC btp_mem_pos_qda
|
||||
STA btp_mem_pos_qba
|
||||
LDA btp_mem_pos_center_two + 1
|
||||
SBC btp_mem_pos_qda + 1
|
||||
STA btp_mem_pos_qba + 1
|
||||
|
||||
|
||||
draw_qaa:
|
||||
LDA byte_to_paint ;A byte containing a single 1. Coresponds to X position in the chunk.
|
||||
ORA (btp_mem_pos), Y
|
||||
STA (btp_mem_pos), Y
|
||||
|
||||
;; something is wrong | well isue for another time
|
||||
draw_qcb:; xy swaped
|
||||
STY temp
|
||||
LDA byte_to_paint
|
||||
|
@ -46,8 +72,8 @@ revert_byte_to_paint:
|
|||
|
||||
|
||||
LDY temp___
|
||||
ORA (btp_mem_pos_swop), Y
|
||||
STA (btp_mem_pos_swop), Y;
|
||||
ORA (btp_mem_pos_qcb), Y
|
||||
STA (btp_mem_pos_qcb), Y;
|
||||
|
||||
draw_qdb:; xy swaped and y is inverted.
|
||||
|
||||
|
@ -60,20 +86,10 @@ draw_qdb:; xy swaped and y is inverted.
|
|||
|
||||
;;Uses modifyed Y from above
|
||||
|
||||
ORA (btp_mem_pos_swop_inv_y), Y
|
||||
STA (btp_mem_pos_swop_inv_y), Y;
|
||||
|
||||
LDY temp
|
||||
LDA temp__
|
||||
STA byte_to_paint
|
||||
ORA (btp_mem_pos_qdb), Y
|
||||
STA (btp_mem_pos_qdb), Y;
|
||||
|
||||
draw_qab:; xy swoped + mirroring
|
||||
LDA btp_mem_pos_center_two
|
||||
SBC btp_mem_pos_swop
|
||||
STA btp_mem_pos_inv
|
||||
LDA btp_mem_pos_center_two + 1
|
||||
SBC btp_mem_pos_swop + 1
|
||||
STA btp_mem_pos_inv + 1
|
||||
|
||||
SEC
|
||||
LDA #$07
|
||||
|
@ -85,30 +101,22 @@ draw_qab:; xy swoped + mirroring
|
|||
TAX
|
||||
LDA binary_factor, X; (see END.s)
|
||||
|
||||
ORA (btp_mem_pos_inv), Y
|
||||
STA (btp_mem_pos_inv), Y
|
||||
ORA (btp_mem_pos_qab), Y
|
||||
STA (btp_mem_pos_qab), Y
|
||||
|
||||
|
||||
LDY temp
|
||||
draw_qda:; y is inverted
|
||||
;; invert Y, this is shared with qca
|
||||
STY temp
|
||||
LDA #$07
|
||||
SBC temp
|
||||
TAY
|
||||
|
||||
LDA byte_to_paint
|
||||
ORA (btp_mem_pos_inv_y), Y
|
||||
STA (btp_mem_pos_inv_y), Y
|
||||
ORA (btp_mem_pos_qda), Y
|
||||
STA (btp_mem_pos_qda), Y
|
||||
|
||||
draw_qca: ;;mirror technique
|
||||
;SEC
|
||||
LDA btp_mem_pos_center_two
|
||||
SBC btp_mem_pos
|
||||
STA btp_mem_pos_inv
|
||||
LDA btp_mem_pos_center_two + 1
|
||||
SBC btp_mem_pos + 1
|
||||
STA btp_mem_pos_inv + 1
|
||||
|
||||
;; calculate byte_to_paint_inv 00000001 --> 10000000, 00000010 --> 01000000 ... etc
|
||||
;; uses a table!
|
||||
|
@ -118,24 +126,20 @@ draw_qca: ;;mirror technique
|
|||
TAX ;; A is saved to x because qba use this as well
|
||||
|
||||
; A = byte_to_paint_inv
|
||||
ORA (btp_mem_pos_inv), Y
|
||||
STA (btp_mem_pos_inv), Y
|
||||
ORA (btp_mem_pos_qca), Y
|
||||
STA (btp_mem_pos_qca), Y
|
||||
|
||||
;;Recover the Y value (we changed it because evrything is inverted)
|
||||
LDY temp
|
||||
|
||||
draw_qba: ;;mirror_technique
|
||||
;SEC
|
||||
LDA btp_mem_pos_center_two
|
||||
SBC btp_mem_pos_inv_y
|
||||
STA btp_mem_pos_inv
|
||||
LDA btp_mem_pos_center_two + 1
|
||||
SBC btp_mem_pos_inv_y + 1
|
||||
STA btp_mem_pos_inv + 1
|
||||
|
||||
TXA
|
||||
ORA (btp_mem_pos_inv), Y
|
||||
STA (btp_mem_pos_inv), Y
|
||||
ORA (btp_mem_pos_qba), Y
|
||||
STA (btp_mem_pos_qba), Y
|
||||
|
||||
|
||||
|
||||
|
||||
increment_y_pos:
|
||||
INC Y_rel ; y++
|
||||
|
@ -149,11 +153,11 @@ move_8px_down:
|
|||
Sub_16 btp_mem_pos, btp_mem_pos + 1, #$40, #$01, ! ;-320
|
||||
|
||||
;; Y is inverted
|
||||
Add_16 btp_mem_pos_inv_y, btp_mem_pos_inv_y + 1, #$40, #$01 ;+320
|
||||
Add_16 btp_mem_pos_qda, btp_mem_pos_qda + 1, #$40, #$01 ;+320
|
||||
;; X and Y has swopped
|
||||
Sub_16 btp_mem_pos_swop, btp_mem_pos_swop + 1, #$08, #$00
|
||||
Sub_16 btp_mem_pos_qcb, btp_mem_pos_qcb + 1, #$08, #$00
|
||||
;; X and Y has swoped and Y has inverted
|
||||
Add_16 btp_mem_pos_swop_inv_y, btp_mem_pos_swop_inv_y +1, #$08, #$00
|
||||
Add_16 btp_mem_pos_qdb, btp_mem_pos_qdb +1, #$08, #$00
|
||||
increment_y_pos_end:
|
||||
RTS
|
||||
.endproc
|
||||
|
|
Loading…
Add table
Reference in a new issue