From 0ba45947122a69a2e67d2795ca2ff092697fc501 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Wed, 11 May 2022 19:03:35 +0200 Subject: [PATCH] Playfield in niverse Playfield is now drawn in inverse for better color control (in future ;) ) Problems in DLI! --- constants.asm | 6 +++-- display.asm | 2 +- grafproc.asm | 60 ++++++++++++++++++++++++++++++++------------------ scorch.asm | 17 ++++++++++---- scorch.xex | Bin 37601 -> 37628 bytes 5 files changed, 56 insertions(+), 29 deletions(-) diff --git a/constants.asm b/constants.asm index 265607f..0b00b58 100644 --- a/constants.asm +++ b/constants.asm @@ -989,7 +989,9 @@ scrcodes dta d"qrstuvwx" dta d"yz123456" dta d"7890." ; "-" -dliColors - :10 .by $02,$00 +dliColorsBack + :10 .by $04,$02 +dliColorsFore + .by $0a .endif diff --git a/display.asm b/display.asm index 9e10a46..2645ea0 100755 --- a/display.asm +++ b/display.asm @@ -142,7 +142,7 @@ WeaponsDescription EmptyLine dta d" " LastLine - :40 dta $ff + :40 dta $00 ; INVERSE ; ------------------------------------------------- .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! NameScreen diff --git a/grafproc.asm b/grafproc.asm index 1243628..d0bfb38 100755 --- a/grafproc.asm +++ b/grafproc.asm @@ -441,8 +441,8 @@ splot8 .proc ;-------------------------------------------------- clearscreen .proc ;-------------------------------------------------- - lda #0 - tax + lda #$ff ; INVERSE + ldx #0 @ :31 sta display+($100*#),x sta display+$1e50,x ; this is so no space outside of the screen is cleared @@ -1021,7 +1021,7 @@ MakeUnPlot lda color - beq ClearUnPlot + bne ClearUnPlot ; INVERSE ;plotting here lda (xbyte),y @@ -1033,7 +1033,7 @@ ClearUnPlot lda (xbyte),y sta OldOraTemp and bittable2,x -; sta (xbyte),y + sta (xbyte),y ContinueUnPlot ldx WhichUnPlot lda OldOraTemp @@ -1115,7 +1115,7 @@ MakePlot ldx ybit lda color - beq ClearPlot + bne ClearPlot ; INVERSE lda (xbyte),y ora bittable,x @@ -1163,6 +1163,7 @@ point .proc lda (xbyte),y and bittable,x + eor bittable,x ; INVERSE rts .endp @@ -1183,7 +1184,8 @@ DrawLine .proc loopdraw lda (xbyte),y - ora bittable,x + ;ora bittable,x + and bittable2,x ; INVERSE sta (xbyte),y IntoDraw adw xbyte #screenBytes @@ -1214,8 +1216,9 @@ TypeChar .proc ldy #7 CopyChar lda (fontind),y + eor #$ff ; INVERSE sta char1,y - lda #$00 + lda #$ff ; INVERSE sta char2,y dey bpl CopyChar @@ -1224,8 +1227,9 @@ CopyChar ldy #7 CopyMask lda (fontind),y + eor #$ff ; INVERSE sta mask1,y - lda #$ff + lda #$00 ; INVERSE sta mask2,y dey bpl CopyMask @@ -1257,44 +1261,52 @@ CopyMask ldx ybit beq MaskOK00 MakeMask00 - sec + clc ; INVERSE ror mask1 ror mask2 - sec + clc ; INVERSE ror mask1+1 ror mask2+1 - sec + clc ; INVERSE ror mask1+2 ror mask2+2 - sec + clc ; INVERSE ror mask1+3 ror mask2+3 - sec + clc ; INVERSE ror mask1+4 ror mask2+4 - sec + clc ; INVERSE ror mask1+5 ror mask2+5 - sec + clc ; INVERSE ror mask1+6 ror mask2+6 - sec + clc ; INVERSE ror mask1+7 ror mask2+7 - lsr char1 + sec ; INVERSE + ror char1 ror char2 + sec ; INVERSE ror char1+1 ror char2+1 + sec ; INVERSE ror char1+2 ror char2+2 + sec ; INVERSE ror char1+3 ror char2+3 + sec ; INVERSE ror char1+4 ror char2+4 + sec ; INVERSE ror char1+5 ror char2+5 + sec ; INVERSE ror char1+6 ror char2+6 + sec ; INVERSE ror char1+7 ror char2+7 dex @@ -1303,7 +1315,7 @@ MaskOK00 ; here x=0 lda Erase beq CharLoopi ; it works, because x=0 - lda #0 + lda #$ff ; INVERSE ldx #7 EmptyChar sta char1,x @@ -1313,13 +1325,17 @@ EmptyChar ldx #0 CharLoopi lda (xbyte),y - and mask1,x - ora char1,x + ;and mask1,x + ;ora char1,x + ora mask1,x ; INVERSE + and char1,x ; INVERSE sta (xbyte),y iny lda (xbyte),y - and mask2,x - ora char2,x + ;and mask2,x + ;ora char2,x + ora mask2,x ; INVERSE + and char2,x ; INVERSE sta (xbyte),y dey adw xbyte #screenBytes diff --git a/scorch.asm b/scorch.asm index fddb710..eb25c8b 100644 --- a/scorch.asm +++ b/scorch.asm @@ -797,6 +797,7 @@ SetunPlots sta oldplotH,x lda #0 sta oldply,x + lda #$ff ; INVERSE sta oldora,x dex bpl SetunPlots @@ -870,10 +871,18 @@ DLIinterrupt .proc pha phy ldy dliCounter - lda dliColors,y - ;lda #$02 ; color of playground - sta WSYNC - sta COLPF2 +; bne NoFColorChange +; lda dliColorsFore +; sta COLPF2 +;NoFColorChange + lda dliColorsBack,y + ldy dliColorsFore + nop + nop + nop +; sta WSYNC + sta COLPF1 + sty COLPF2 inc dliCounter ply pla diff --git a/scorch.xex b/scorch.xex index 996e7d8a5e4b5c64bb42b83e1d3ed6aff2f7b506..3d68e73c0b51fe3990aa60ebe8b806d79d21ad8f 100644 GIT binary patch delta 12377 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 delta 12529 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