mirror of
https://github.com/Pecusx/scorch_src.git
synced 2026-05-20 22:33:43 +02:00
Long (generated) bittables for fastest plot and point
This commit is contained in:
+31
-16
@@ -52,23 +52,24 @@ MakeUnPlot
|
|||||||
sta xbyte+1
|
sta xbyte+1
|
||||||
sta oldplot+1
|
sta oldplot+1
|
||||||
|
|
||||||
lda xdraw
|
; lda xdraw
|
||||||
and #$7
|
; and #$7
|
||||||
tax
|
; tax
|
||||||
|
ldx xdraw ; optimization (256 bytes long bittable)
|
||||||
|
|
||||||
lda color
|
lda color
|
||||||
bne ClearUnPlot
|
bne ClearUnPlot
|
||||||
|
|
||||||
;plotting here
|
;plotting here
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
sta OldOraTemp
|
sta OldOraTemp
|
||||||
ora bittable,x
|
ora bittable1_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
bne ContinueUnPlot ; allways <>0
|
bne ContinueUnPlot ; allways <>0
|
||||||
ClearUnPlot
|
ClearUnPlot
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
sta OldOraTemp
|
sta OldOraTemp
|
||||||
and bittable2,x
|
and bittable2_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
ContinueUnPlot
|
ContinueUnPlot
|
||||||
ldx WhichUnPlot
|
ldx WhichUnPlot
|
||||||
@@ -140,20 +141,22 @@ MakePlot
|
|||||||
lda linetableH,x
|
lda linetableH,x
|
||||||
sta xbyte+1
|
sta xbyte+1
|
||||||
|
|
||||||
lda xdraw
|
; lda xdraw
|
||||||
and #$7
|
; and #$7
|
||||||
tax
|
; tax
|
||||||
|
ldx xdraw ; optimization (256 bytes long bittable)
|
||||||
|
|
||||||
lda color
|
lda color
|
||||||
bne ClearPlot
|
bne ClearPlot
|
||||||
|
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
ora bittable,x
|
ora bittable1_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
EndOfPlot
|
EndOfPlot
|
||||||
rts
|
rts
|
||||||
ClearPlot
|
ClearPlot
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
and bittable2,x
|
and bittable2_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
@@ -180,13 +183,14 @@ ClearPlot
|
|||||||
lda linetableH,x
|
lda linetableH,x
|
||||||
sta xbyte+1
|
sta xbyte+1
|
||||||
|
|
||||||
lda xdraw
|
; lda xdraw
|
||||||
and #$7
|
; and #$7
|
||||||
tax
|
; tax
|
||||||
|
ldx xdraw ; optimization (256 bytes long bittable)
|
||||||
|
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
eor #$ff
|
eor #$ff
|
||||||
and bittable,x
|
and bittable1_long,x
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
@@ -247,7 +251,7 @@ MinCalculated
|
|||||||
; because one pixel is already plotted (and who cares? :) )
|
; because one pixel is already plotted (and who cares? :) )
|
||||||
@
|
@
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
and bittable2,x
|
and bittable2_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
;IntoDraw
|
;IntoDraw
|
||||||
adw xbyte #screenBytes
|
adw xbyte #screenBytes
|
||||||
@@ -752,6 +756,17 @@ loop sta (temp),y
|
|||||||
iny
|
iny
|
||||||
cpy #screenheight+1
|
cpy #screenheight+1
|
||||||
bne @-
|
bne @-
|
||||||
|
; and bittables for fastes plot and point
|
||||||
|
ldy #0
|
||||||
|
@ tya
|
||||||
|
and #%00000111
|
||||||
|
tax
|
||||||
|
lda bittable,x
|
||||||
|
sta bittable1_long,y
|
||||||
|
eor #%11111111
|
||||||
|
sta bittable2_long,y
|
||||||
|
iny
|
||||||
|
bne @-
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
|
|||||||
+32
-15
@@ -44,9 +44,11 @@ MakeUnPlot
|
|||||||
sta xbyte+1
|
sta xbyte+1
|
||||||
sta oldplot+1
|
sta oldplot+1
|
||||||
|
|
||||||
lda xdraw
|
; lda xdraw
|
||||||
and #$7
|
; and #$7
|
||||||
tax
|
; tax
|
||||||
|
ldx xdraw ; optimization (256 bytes long bittable)
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
lda color
|
lda color
|
||||||
@@ -55,13 +57,13 @@ MakeUnPlot
|
|||||||
;plotting here
|
;plotting here
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
sta OldOraTemp
|
sta OldOraTemp
|
||||||
ora bittable,x
|
ora bittable1_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
bne ContinueUnPlot ; allways <>0
|
bne ContinueUnPlot ; allways <>0
|
||||||
ClearUnPlot
|
ClearUnPlot
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
sta OldOraTemp
|
sta OldOraTemp
|
||||||
and bittable2,x
|
and bittable2_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
ContinueUnPlot
|
ContinueUnPlot
|
||||||
ldx WhichUnPlot
|
ldx WhichUnPlot
|
||||||
@@ -128,21 +130,23 @@ MakePlot
|
|||||||
adc xdraw+1
|
adc xdraw+1
|
||||||
sta xbyte+1
|
sta xbyte+1
|
||||||
|
|
||||||
lda xdraw
|
; lda xdraw
|
||||||
and #$7
|
; and #$7
|
||||||
tax
|
; tax
|
||||||
|
ldx xdraw ; optimization (256 bytes long bittable)
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
lda color
|
lda color
|
||||||
bne ClearPlot
|
bne ClearPlot
|
||||||
|
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
ora bittable,x
|
ora bittable1_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
EndOfPlot
|
EndOfPlot
|
||||||
rts
|
rts
|
||||||
ClearPlot
|
ClearPlot
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
and bittable2,x
|
and bittable2_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
@@ -167,13 +171,15 @@ ClearPlot
|
|||||||
adc xdraw+1
|
adc xdraw+1
|
||||||
sta xbyte+1
|
sta xbyte+1
|
||||||
|
|
||||||
lda xdraw
|
; lda xdraw
|
||||||
and #$7
|
; and #$7
|
||||||
tax
|
; tax
|
||||||
|
ldx xdraw ; optimization (256 bytes long bittable)
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
eor #$ff
|
eor #$ff
|
||||||
and bittable,x
|
and bittable1_long,x
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
@@ -228,7 +234,7 @@ MinCalculated
|
|||||||
clc ; and faster
|
clc ; and faster
|
||||||
@
|
@
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
and bittable2,x
|
and bittable2_long,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
;IntoDraw
|
;IntoDraw
|
||||||
inc ydraw
|
inc ydraw
|
||||||
@@ -653,6 +659,17 @@ next8lines
|
|||||||
iny
|
iny
|
||||||
cpy #screenheight+1
|
cpy #screenheight+1
|
||||||
bne @-
|
bne @-
|
||||||
|
; and bittables for fastes plot and point
|
||||||
|
ldy #0
|
||||||
|
@ tya
|
||||||
|
and #%00000111
|
||||||
|
tax
|
||||||
|
lda bittable,x
|
||||||
|
sta bittable1_long,y
|
||||||
|
eor #%11111111
|
||||||
|
sta bittable2_long,y
|
||||||
|
iny
|
||||||
|
bne @-
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
|
|||||||
@@ -872,10 +872,10 @@ PurchaseAIRoutines
|
|||||||
sta temp+1
|
sta temp+1
|
||||||
:3 lsr ; A=A/8
|
:3 lsr ; A=A/8
|
||||||
sta temp
|
sta temp
|
||||||
tya
|
; tya ; optimization (256 bytes long bittable)
|
||||||
and #%00000111
|
; and #%00000111
|
||||||
tay
|
; tay
|
||||||
lda bittable,y
|
lda bittable1_long,y
|
||||||
ldy temp
|
ldy temp
|
||||||
and PurchaseMeTable2,y
|
and PurchaseMeTable2,y
|
||||||
beq TryToPurchaseOnePiece.SorryNoPurchase
|
beq TryToPurchaseOnePiece.SorryNoPurchase
|
||||||
@@ -890,10 +890,10 @@ PurchaseAIRoutines
|
|||||||
sta temp+1
|
sta temp+1
|
||||||
:3 lsr ; A=A/8
|
:3 lsr ; A=A/8
|
||||||
sta temp
|
sta temp
|
||||||
tya
|
; tya ; optimization (256 bytes long bittable)
|
||||||
and #%00000111
|
; and #%00000111
|
||||||
tay
|
; tay
|
||||||
lda bittable,y
|
lda bittable1_long,y
|
||||||
ldy temp
|
ldy temp
|
||||||
and PurchaseMeTable,y
|
and PurchaseMeTable,y
|
||||||
beq SorryNoPurchase
|
beq SorryNoPurchase
|
||||||
|
|||||||
+3
-2
@@ -199,10 +199,11 @@ sintable
|
|||||||
;linetableH
|
;linetableH
|
||||||
; :screenheight+1 .by >(display+screenBytes*#)
|
; :screenheight+1 .by >(display+screenBytes*#)
|
||||||
;----------------------------
|
;----------------------------
|
||||||
|
; now long (256 bytes) bittables are generated in RAM based on one bittable:
|
||||||
bittable
|
bittable
|
||||||
.by $80,$40,$20,$10,$08,$04,$02,$01
|
.by $80,$40,$20,$10,$08,$04,$02,$01
|
||||||
bittable2
|
;bittable2
|
||||||
.by $7f,$bf,$df,$ef,$f7,$fb,$fd,$fe
|
; .by $7f,$bf,$df,$ef,$f7,$fb,$fd,$fe
|
||||||
;----------------------------
|
;----------------------------
|
||||||
disktance ;tanks distance
|
disktance ;tanks distance
|
||||||
.by 0,0
|
.by 0,0
|
||||||
|
|||||||
@@ -810,7 +810,7 @@ deletePtr = temp
|
|||||||
@ tya
|
@ tya
|
||||||
sta (deletePtr),y
|
sta (deletePtr),y
|
||||||
inw deletePtr
|
inw deletePtr
|
||||||
cpw deletePtr #variablesEnd
|
cpw deletePtr #ClearedvariablesEnd
|
||||||
bne @-
|
bne @-
|
||||||
tya
|
tya
|
||||||
jsr SetJoystickPort
|
jsr SetJoystickPort
|
||||||
|
|||||||
+1
-4
@@ -207,7 +207,7 @@ FirstZpageVariable = $54
|
|||||||
;-----------------------------------------------
|
;-----------------------------------------------
|
||||||
; variable declarations in RAM (no code)
|
; variable declarations in RAM (no code)
|
||||||
;-----------------------------------------------
|
;-----------------------------------------------
|
||||||
ORG PMGraph + $0300 - (variablesEnd - OneTimeZeroVariables + 1)
|
ORG PMGraph + $0300 - (variablesEnd - OneTimeZeroVariables)
|
||||||
icl 'variables.asm'
|
icl 'variables.asm'
|
||||||
|
|
||||||
; Game loading address
|
; Game loading address
|
||||||
@@ -755,9 +755,6 @@ EndofBFGDLI
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.if variablesEnd > (PMGraph + $300)
|
|
||||||
.ERROR 'Variables too long'
|
|
||||||
.endif
|
|
||||||
.IF * > MODUL-1
|
.IF * > MODUL-1
|
||||||
.ECHO *
|
.ECHO *
|
||||||
.ERROR 'Code and data too long'
|
.ERROR 'Code and data too long'
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -450,6 +450,13 @@ trackn_audctl .ds TRACKS
|
|||||||
v_aspeed .ds 1
|
v_aspeed .ds 1
|
||||||
track_endvariables
|
track_endvariables
|
||||||
|
|
||||||
|
ClearedvariablesEnd
|
||||||
|
; These tebles are at the beginning of memory pages becouse ....
|
||||||
|
bittable1_long
|
||||||
|
.ds $100
|
||||||
|
bittable2_long
|
||||||
|
.ds $100
|
||||||
|
; .... variablesEnd is aligned to PMGraph + $0300 in scorch.asm (before include this file)
|
||||||
variablesEnd
|
variablesEnd
|
||||||
;----------------------------------------------------
|
;----------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user