mirror of
https://github.com/dschmenk/PLASMA.git
synced 2026-04-25 20:19:23 +00:00
Slight PixMap speedups and better FadeOut
This commit is contained in:
@@ -624,7 +624,7 @@ asm dcgrPixMapScr(x, y, pixw, pixh, pixptr)#0
|
|||||||
LDA ESTKL-1,X ; X COORD
|
LDA ESTKL-1,X ; X COORD
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL-3,X ; WIDTH
|
ADC ESTKL-3,X ; WIDTH
|
||||||
STA ESTKL-3,X ; -> RIGHT EDGE
|
STA ESTKH-3,X ; -> RIGHT EDGE
|
||||||
YPIXS LDY ESTKL-2,X ; Y COORD
|
YPIXS LDY ESTKL-2,X ; Y COORD
|
||||||
INC ESTKL-2,X ; Y COORD++
|
INC ESTKL-2,X ; Y COORD++
|
||||||
CPY #192 ; OFF SCREEN?
|
CPY #192 ; OFF SCREEN?
|
||||||
@@ -646,10 +646,10 @@ asm _dcgrPixmapScrA
|
|||||||
STA DSTH
|
STA DSTH
|
||||||
LDA ESTKL-1,X ; X COORD
|
LDA ESTKL-1,X ; X COORD
|
||||||
STA TMPL
|
STA TMPL
|
||||||
|
LDY #$00
|
||||||
PIXSCRL CMP #140 ; OFF SCREEN?
|
PIXSCRL CMP #140 ; OFF SCREEN?
|
||||||
BCS PIXSCRH
|
BCS PIXSCRH
|
||||||
LDY #$00 ; LO NIBBLE SRC PIXEL
|
LDA (SRC),Y ; LO NIBBLE SRC PIXEL
|
||||||
LDA (SRC),Y
|
|
||||||
AND #$0F
|
AND #$0F
|
||||||
CMP #$05 ; TRANSPARENT?
|
CMP #$05 ; TRANSPARENT?
|
||||||
BEQ PIXSCRH
|
BEQ PIXSCRH
|
||||||
@@ -661,14 +661,13 @@ asm _dcgrPixmapScrB
|
|||||||
end
|
end
|
||||||
asm _dcgrPixmapScrC
|
asm _dcgrPixmapScrC
|
||||||
JSR $1000 ; PLOT PIXEL
|
JSR $1000 ; PLOT PIXEL
|
||||||
|
LDY #$00
|
||||||
PIXSCRH INC TMPL
|
PIXSCRH INC TMPL
|
||||||
LDA TMPL
|
LDA TMPL
|
||||||
CMP ESTKL-3,X ; AT RIGHT EDGE?
|
CMP ESTKH-3,X ; AT RIGHT EDGE?
|
||||||
BEQ YPIXS ; NEXT ROW
|
|
||||||
CMP #140 ; OFF SCREEN?
|
CMP #140 ; OFF SCREEN?
|
||||||
BCS +
|
BCS +
|
||||||
LDY #$00 ; HI NIBBLE SRC PIXEL
|
LDA (SRC),Y ; HI NIBBLE SRC PIXEL
|
||||||
LDA (SRC),Y
|
|
||||||
LSR
|
LSR
|
||||||
LSR
|
LSR
|
||||||
LSR
|
LSR
|
||||||
@@ -683,12 +682,13 @@ asm _dcgrPixmapScrD
|
|||||||
end
|
end
|
||||||
asm _dcgrPixmapScrE
|
asm _dcgrPixmapScrE
|
||||||
JSR $1000 ; PLOT PIXEL
|
JSR $1000 ; PLOT PIXEL
|
||||||
|
LDY #$00
|
||||||
+ INC SRCL
|
+ INC SRCL
|
||||||
BNE +
|
BNE +
|
||||||
INC SRCH
|
INC SRCH
|
||||||
+ INC TMPL
|
+ INC TMPL
|
||||||
LDA TMPL
|
LDA TMPL
|
||||||
CMP ESTKL-3,X ; AT RIGHT EDGE?
|
CMP ESTKH-3,X ; AT RIGHT EDGE?
|
||||||
BNE PIXSCRL
|
BNE PIXSCRL
|
||||||
NXTPIXS DEC ESTKL-4,X ; HEIGHT
|
NXTPIXS DEC ESTKL-4,X ; HEIGHT
|
||||||
BNE YPIXS ; NEXT ROW
|
BNE YPIXS ; NEXT ROW
|
||||||
@@ -714,7 +714,7 @@ asm dcgrPlotMem(x, y, memptr, memspan)#0
|
|||||||
LDA ESTKL-4,X ; SPAN
|
LDA ESTKL-4,X ; SPAN
|
||||||
ADC DSTL
|
ADC DSTL
|
||||||
STA DSTL
|
STA DSTL
|
||||||
LDA ESTKH-4,X
|
LDA #$00 ; ESTKH-4,X
|
||||||
ADC DSTH
|
ADC DSTH
|
||||||
STA DSTH
|
STA DSTH
|
||||||
DEY
|
DEY
|
||||||
@@ -1037,7 +1037,7 @@ asm dcgrPixMapMem(x, y, pixw, pixh, pixptr, memw, memh, memptr, memspan)#0
|
|||||||
LDA ESTKL-1,X ; X COORD
|
LDA ESTKL-1,X ; X COORD
|
||||||
CLC
|
CLC
|
||||||
ADC ESTKL-3,X ; WIDTH
|
ADC ESTKL-3,X ; WIDTH
|
||||||
STA ESTKL-3,X ; -> RIGHT EDGE
|
STA ESTKH-3,X ; -> RIGHT EDGE
|
||||||
YPIXM LDA ESTKL-2,X ; Y COORD
|
YPIXM LDA ESTKL-2,X ; Y COORD
|
||||||
INC ESTKL-2,X ; Y COORD++
|
INC ESTKL-2,X ; Y COORD++
|
||||||
CMP ESTKL-7,X ; OUT OF DST BOUNDS?
|
CMP ESTKL-7,X ; OUT OF DST BOUNDS?
|
||||||
@@ -1055,10 +1055,10 @@ end
|
|||||||
asm _dcgrPixmapMemA
|
asm _dcgrPixmapMemA
|
||||||
+ LDA ESTKL-1,X ; X COORD
|
+ LDA ESTKL-1,X ; X COORD
|
||||||
STA TMPL
|
STA TMPL
|
||||||
|
LDY #$00
|
||||||
PIXMEML CMP ESTKL-6,X ; OUT OF DST BOUNDS?
|
PIXMEML CMP ESTKL-6,X ; OUT OF DST BOUNDS?
|
||||||
BCS PIXMEMH
|
BCS PIXMEMH
|
||||||
LDY #$00 ; LO NIBBLE SRC PIXEL
|
LDA (SRC),Y ; LO NIBBLE SRC PIXEL
|
||||||
LDA (SRC),Y
|
|
||||||
AND #$0F
|
AND #$0F
|
||||||
CMP #$05 ; TRANSPARENT?
|
CMP #$05 ; TRANSPARENT?
|
||||||
BEQ PIXMEMH
|
BEQ PIXMEMH
|
||||||
@@ -1071,14 +1071,14 @@ asm _dcgrPixmapMemB
|
|||||||
end
|
end
|
||||||
asm _dcgrPixmapMemC
|
asm _dcgrPixmapMemC
|
||||||
JSR $1000 ; PLOT PIXEL
|
JSR $1000 ; PLOT PIXEL
|
||||||
|
LDY #$00
|
||||||
PIXMEMH INC TMPL
|
PIXMEMH INC TMPL
|
||||||
LDA TMPL
|
LDA TMPL
|
||||||
CMP ESTKL-3,X ; AT RIGHT EDGE?
|
CMP ESTKH-3,X ; AT RIGHT EDGE?
|
||||||
BEQ NXTPIXM ; NEXT ROW
|
BEQ NXTPIXM ; NEXT ROW
|
||||||
CMP ESTKL-6,X ; OUT OF DST BOUNDS?
|
CMP ESTKL-6,X ; OUT OF DST BOUNDS?
|
||||||
BCS +
|
BCS +
|
||||||
LDY #$00 ; HI NIBBLE SRC PIXEL
|
LDA (SRC),Y ; HI NIBBLE SRC PIXEL
|
||||||
LDA (SRC),Y
|
|
||||||
LSR
|
LSR
|
||||||
LSR
|
LSR
|
||||||
LSR
|
LSR
|
||||||
@@ -1094,12 +1094,13 @@ asm _dcgrPixmapMemD
|
|||||||
end
|
end
|
||||||
asm _dcgrPixmapMemE
|
asm _dcgrPixmapMemE
|
||||||
JSR $1000 ; PLOT PIXEL
|
JSR $1000 ; PLOT PIXEL
|
||||||
|
LDY #$00
|
||||||
+ INC SRCL ; PIXPTR
|
+ INC SRCL ; PIXPTR
|
||||||
BNE +
|
BNE +
|
||||||
INC SRCH
|
INC SRCH
|
||||||
+ INC TMPL
|
+ INC TMPL
|
||||||
LDA TMPL
|
LDA TMPL
|
||||||
CMP ESTKL-3,X ; AT RIGHT EDGE?
|
CMP ESTKH-3,X ; AT RIGHT EDGE?
|
||||||
BNE PIXMEML
|
BNE PIXMEML
|
||||||
NXTPIXM CLC
|
NXTPIXM CLC
|
||||||
LDA ESTKL-9,X ; SPAN
|
LDA ESTKL-9,X ; SPAN
|
||||||
@@ -1620,7 +1621,7 @@ asm dcgrClearBl7Mem(x7, y, w7, h, memptr, memspan)#0
|
|||||||
LDA ESTKL-6,X ; SPAN
|
LDA ESTKL-6,X ; SPAN
|
||||||
ADC DSTL
|
ADC DSTL
|
||||||
STA DSTL
|
STA DSTL
|
||||||
LDA ESTKH-6,X
|
LDA #$00 ; ESTKH-6,X
|
||||||
ADC DSTH
|
ADC DSTH
|
||||||
STA DSTH
|
STA DSTH
|
||||||
DEY
|
DEY
|
||||||
@@ -1629,14 +1630,14 @@ asm dcgrClearBl7Mem(x7, y, w7, h, memptr, memspan)#0
|
|||||||
BNE +
|
BNE +
|
||||||
DEC DSTH
|
DEC DSTH
|
||||||
+ DEC DSTL
|
+ DEC DSTL
|
||||||
LDA ESTKH-6,X ; SRC POINTS TO MEM HALF OF SCANLINE
|
;LDA ESTKH-6,X ; SRC POINTS TO MEM HALF OF SCANLINE
|
||||||
LSR
|
;LSR
|
||||||
PHA
|
;PHA
|
||||||
LDA ESTKL-6,X ; SPAN
|
LDA ESTKL-6,X ; SPAN
|
||||||
ROR ; SPAN / 2
|
LSR ; ROR SPAN / 2
|
||||||
ADC DSTL
|
ADC DSTL
|
||||||
STA SRCL
|
STA SRCL
|
||||||
PLA
|
LDA #$00 ; PLA
|
||||||
ADC DSTH
|
ADC DSTH
|
||||||
STA SRCH
|
STA SRCH
|
||||||
BNE + ; BRA
|
BNE + ; BRA
|
||||||
|
|||||||
+34
-13
@@ -162,11 +162,19 @@ word sprite7span, sprite7w
|
|||||||
//
|
//
|
||||||
// Dither matrices
|
// Dither matrices
|
||||||
//
|
//
|
||||||
|
byte[] dither25 = $00, $00, $AA, $AA, $00, $00, $AA, $AA
|
||||||
|
byte[] = $00, $00, $AA, $AA, $00, $00, $AA, $AA
|
||||||
|
byte[] = $00, $00, $AA, $AA, $00, $00, $AA, $AA
|
||||||
|
byte[] = $00, $00, $AA, $AA, $00, $00, $AA, $AA
|
||||||
byte[] dither50 = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
byte[] dither50 = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
||||||
byte[] = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
byte[] = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
||||||
byte[] = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
byte[] = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
||||||
byte[] = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
byte[] = $55, $55, $AA, $AA, $55, $55, $AA, $AA
|
||||||
|
byte[] dither75 = $55, $55, $FF, $FF, $55, $55, $FF, $FF
|
||||||
|
byte[] = $55, $55, $FF, $FF, $55, $55, $FF, $FF
|
||||||
|
byte[] = $55, $55, $FF, $FF, $55, $55, $FF, $FF
|
||||||
|
byte[] = $55, $55, $FF, $FF, $55, $55, $FF, $FF
|
||||||
|
word[] dither = @dither25, @dither50, @dither75
|
||||||
//
|
//
|
||||||
// Sliding sprite Y coordinate
|
// Sliding sprite Y coordinate
|
||||||
//
|
//
|
||||||
@@ -237,7 +245,7 @@ end
|
|||||||
// //
|
// //
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
def dcgrTest#0
|
def dcgrTest#0
|
||||||
word i, j, k, i7, im7, k7, km7, s7w, inci, incj, inck
|
word i, j, k, oi, oj, i7, im7, k7, km7, s7w, inci, incj, inck
|
||||||
word backblk, backspan
|
word backblk, backspan
|
||||||
word restrblk, restrspan, restr7w, restrw
|
word restrblk, restrspan, restr7w, restrw
|
||||||
byte mode
|
byte mode
|
||||||
@@ -331,26 +339,39 @@ def dcgrTest#0
|
|||||||
dcgrSurfScr(OP_SRC)
|
dcgrSurfScr(OP_SRC)
|
||||||
dcgrPixMap(i, j, SPRW, SPRH, @sprite)
|
dcgrPixMap(i, j, SPRW, SPRH, @sprite)
|
||||||
break
|
break
|
||||||
|
is 9
|
||||||
|
dcgrSurfScr(OP_XOR)
|
||||||
|
dcgrPixMap(oi, oj, SPRW, SPRH, @sprite)
|
||||||
|
dcgrPixMap(i, j, SPRW, SPRH, @sprite)
|
||||||
|
break
|
||||||
wend
|
wend
|
||||||
if k > 136 or k < -16; inck = -inck; fin
|
if k > 136 or k < -16; inck = -inck; fin
|
||||||
k = k + inck
|
k = k + inck
|
||||||
|
oi = i; oj = j
|
||||||
if i > 102 or i < 22; inci = -inci; fin
|
if i > 102 or i < 22; inci = -inci; fin
|
||||||
i = i + inci
|
i = i + inci
|
||||||
if j > 145 or j < 32; incj = -incj; fin
|
if j > 145 or j < 32; incj = -incj; fin
|
||||||
j = j + incj
|
j = j + incj
|
||||||
loop
|
loop
|
||||||
dcgrSurfMem(OP_SRC, SPRH, backblk, backspan)
|
//
|
||||||
dcgrColor(CLR_WHITE)
|
// Re-use the back buffer for a stipple pattern to mask the screen
|
||||||
dcgrClearBl7(0, 0, SCR_WIDTH7, SPRH)
|
//
|
||||||
dcgrColor(CLR_BLACK)
|
for k = 0 to 2
|
||||||
for i = 0 to 139 step 16
|
dcgrSurfMem(OP_SRC, SPRH, backblk, backspan)
|
||||||
dcgrBitMap(i, 0, 16, 16, @dither50)
|
dcgrColor(CLR_WHITE)
|
||||||
|
dcgrClearBl7(0, 0, SCR_WIDTH7, SPRH)
|
||||||
|
dcgrColor(CLR_BLACK)
|
||||||
|
for i = 0 to 139 step 16
|
||||||
|
dcgrBitMap(i, 0, 16, 16, dither[k])
|
||||||
|
next
|
||||||
|
dcgrSurfScr(OP_AND)
|
||||||
|
for j = 0 to 95 step 16
|
||||||
|
dcgrMemBl7(0, j, SCR_WIDTH7, 16, backblk, backspan)
|
||||||
|
dcgrMemBl7(0, 175 - j, SCR_WIDTH7, 16, backblk, backspan)
|
||||||
|
next
|
||||||
next
|
next
|
||||||
dcgrSurfScr(OP_AND)
|
dcgrSurfScr(OP_SRC)
|
||||||
for j = 0 to 191 step 16
|
dcgrClearBl7(0, 0, SCR_WIDTH7, SCR_HEIGHT)
|
||||||
dcgrMemBl7(0, j, SCR_WIDTH7, 16, backblk, backspan)
|
|
||||||
next
|
|
||||||
getc
|
|
||||||
end
|
end
|
||||||
dcgrMode(0)
|
dcgrMode(0)
|
||||||
dcgrCompSprite
|
dcgrCompSprite
|
||||||
|
|||||||
Reference in New Issue
Block a user