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:
parent
5e0053569e
commit
12f8cf8053
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user