1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2025-02-10 10:30:58 +00:00

Tile blitter improvements from Brendan (BluRry)

This commit is contained in:
David Schmenk 2020-01-09 16:45:17 -08:00
parent 5e0053569e
commit 12f8cf8053

View File

@ -244,8 +244,10 @@ end
// loop // loop
//end //end
export asm tileDrawStr(x, y, strptr, strlen, tileset)#0 export asm tileDrawStr(x, y, strptr, strlen, tileset)#0
DEC ESTKL+1,X ; STRLEN-- LDA ESTKL+0,X ; TILESETPTRL
BMI + STA DSTL
LDA ESTKH+0,X ; TILESETPTRH
STA DSTH
LDA ESTKL+2,X ; STRPTRL LDA ESTKL+2,X ; STRPTRL
STA TMPL STA TMPL
LDA ESTKH+2,X ; STRPTRH LDA ESTKH+2,X ; STRPTRH
@ -253,17 +255,46 @@ export asm tileDrawStr(x, y, strptr, strlen, tileset)#0
LDY ESTKL+3,X ; Y COORD LDY ESTKL+3,X ; Y COORD
LDA ESTKL+4,X ; X COORD LDA ESTKL+4,X ; X COORD
CLC CLC
ADC ESTKL+1,X ; STRLEN
end end
asm _tileDrawStr asm _tileDSa
ADC $1000,Y ; SCANBTTML ADC $1000,Y ; SCANBTTML
STA ESTKL+2,X ; USE ESTK AS POINTER STA $D000 ; SELF MODIFY LOOP
STA $D001
STA $D002
STA $D003
STA $D004
STA $D005
STA $D006
STA $D007
end
asm _tileDSb
LDA $3001 ; DRAWBUFFH LDA $3001 ; DRAWBUFFH
ADC $2000,Y ; SCANBTTMH ADC $2000,Y ; SCANBTTMH
STA ESTKL+3,X STA $D008 ; SELF MODIFY LOOP
SEC
SBC #$04
STA $D009
SBC #$04
STA $D00A
SBC #$04
STA $D00B
SBC #$04
STA $D00C
SBC #$04
STA $D00D
SBC #$04
STA $D00E
SBC #$04
STA $D00F
LDA ESTKL+1,X ; STRLEN
STX IPY
TAX ; DRAW RIGHT TO LEFT
BEQ +
DEX
LDY #$00 LDY #$00
-- STY SRCH - STY SRCH
LDY ESTKL+1,X ; STRLEN TXA
TAY
LDA (TMP),Y ; TILE INDEX * 8 LDA (TMP),Y ; TILE INDEX * 8
ASL ASL
ROL SRCH ROL SRCH
@ -271,31 +302,41 @@ asm _tileDrawStr
ROL SRCH ROL SRCH
ASL ASL
ROL SRCH ROL SRCH
; CLC ; CARRY IS CLEAR FROM ABOVE ; CLC ; CARRY IS CLEAR FROM ABOVE
ADC ESTKL+0,X ; ADD TO TILESETPTR ADC DSTL ; ADD TO TILESETPTR
STA SRCL STA SRCL
LDA SRCH LDA SRCH
ADC ESTKH+0,X ADC DSTH
STA SRCH STA SRCH
LDY #$07 ; DRAW BOTTOM UP LDY #$07 ; DRAW BOTTOM UP
SEC end
- LDA (SRC),Y asm _tileDSc
STA (ESTKL+2,X)
LDA ESTKL+3,X
SBC #$04
STA ESTKL+3,X
DEY
BNE -
LDA (SRC),Y LDA (SRC),Y
STA (ESTKL+2,X) STA $4000,X
DEC ESTKL+2,X ; RESET SCREEN PTR TO NEXT TILE POS DEY
LDA ESTKL+3,X LDA (SRC),Y
; CLC STA $4000,X
; ADC #$1C DEY
ADC #$1B ; CARRY STILL SET FROM ABOVE LDA (SRC),Y
STA ESTKL+3,X STA $4000,X
DEC ESTKL+1,X ; STRLEN-- DEY
BPL -- LDA (SRC),Y
STA $4000,X
DEY
LDA (SRC),Y
STA $4000,X
DEY
LDA (SRC),Y
STA $4000,X
DEY
LDA (SRC),Y
STA $4000,X
DEY
LDA (SRC),Y
STA $4000,X
DEX
BPL -
LDX IPY
+ INX + INX
INX INX
INX INX
@ -358,20 +399,37 @@ end
// //
// Assembly fixups // Assembly fixups
// //
_tileDraw:1 = @scanbttml _tileDraw:1 = @scanbttml
_tileDraw:6 = @drawbuff.1 _tileDraw:6 = @drawbuff.1
_tileDraw:9 = @scanbttmh _tileDraw:9 = @scanbttmh
_tileXDraw:1 = @scanbttml _tileXDraw:1 = @scanbttml
_tileXDraw:6 = @drawbuff.1 _tileXDraw:6 = @drawbuff.1
_tileXDraw:9 = @scanbttmh _tileXDraw:9 = @scanbttmh
_tileODraw:1 = @scanbttml _tileODraw:1 = @scanbttml
_tileODraw:6 = @drawbuff.1 _tileODraw:6 = @drawbuff.1
_tileODraw:9 = @scanbttmh _tileODraw:9 = @scanbttmh
_tileADraw:1 = @scanbttml _tileADraw:1 = @scanbttml
_tileADraw:6 = @drawbuff.1 _tileADraw:6 = @drawbuff.1
_tileADraw:9 = @scanbttmh _tileADraw:9 = @scanbttmh
_tileDrawStr:1 = @scanbttml _tileDSa:1 = @scanbttml
_tileDrawStr:6 = @drawbuff.1 _tileDSa:4 = @_tileDSc.3
_tileDrawStr:9 = @scanbttmh _tileDSa:7 = @_tileDSc.9
_tileDSa:10 = @_tileDSc.15
_tileDSa:13 = @_tileDSc.21
_tileDSa:16 = @_tileDSc.27
_tileDSa:19 = @_tileDSc.33
_tileDSa:22 = @_tileDSc.39
_tileDSa:25 = @_tileDSc.45
_tileDSa:28 = @_tileDSc.51
_tileDSb:1 = @drawbuff.1
_tileDSb:4 = @scanbttmh
_tileDSb:7 = @_tileDSc.4
_tileDSb:13 = @_tileDSc.10
_tileDSb:18 = @_tileDSc.16
_tileDSb:23 = @_tileDSc.22
_tileDSb:28 = @_tileDSc.28
_tileDSb:33 = @_tileDSc.34
_tileDSb:38 = @_tileDSc.40
_tileDSb:43 = @_tileDSc.46
done done