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