From 9806613f2f2b6ecfd2c8c2fa96678e2278cf1b67 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Wed, 13 Jul 2022 22:53:54 +0200 Subject: [PATCH] New PMG for 6 colored tanks but colors not set to new scheme. --- constants.asm | 4 +- definitions.asm | 3 +- grafproc.asm | 110 +++++++++++++++++++++++++++++++++++++++++------- scorch.asm | 8 ++-- scorch.xex | Bin 41075 -> 41210 bytes 5 files changed, 104 insertions(+), 21 deletions(-) diff --git a/constants.asm b/constants.asm index c6a4c10..355f73c 100644 --- a/constants.asm +++ b/constants.asm @@ -59,18 +59,20 @@ lineClear dta d" ", $ff ;----------- -pmtableL ; addressess of the P/M memory for 5 tanks (6th is without P/M background) +pmtableL ; addressess of the P/M memory for 6 tanks .by <(pmgraph+$400) .by <(pmgraph+$500) .by <(pmgraph+$600) .by <(pmgraph+$700) .by <(pmgraph+$300) ; this is a missile background + .by <(pmgraph+$300) ; this is a missile background pmtableH .by >(pmgraph+$400) .by >(pmgraph+$500) .by >(pmgraph+$600) .by >(pmgraph+$700) .by >(pmgraph+$300) + .by >(pmgraph+$300) ;----------- sintable .by 0 diff --git a/definitions.asm b/definitions.asm index 25e041f..87af599 100644 --- a/definitions.asm +++ b/definitions.asm @@ -7,7 +7,8 @@ margin = 40 ;mountain drawing Y variable margin display = $1010 ;screen takes $2K due to clearing routine MaxPlayers = 6 maxOptions = 8 ;number of all options -PMOffset = $23 ; P/M to graphics offset +PMOffsetX = $2C ; P/M to graphics offset +PMOffsetY = $23 ; P/M to graphics offset napalmRadius = 10 ;Weapon prices (*10 on screen) diff --git a/grafproc.asm b/grafproc.asm index 71b3379..0144ead 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -611,10 +611,23 @@ DrawNextTank lda eXistenZ,x bne SkipHidingPM ; if energy=0 then no tank - ; hide P/M - lda #0 - sta hposp0,x - jmp DoNotDrawTankNr + ; hide P/M + lda #0 + cpx #$4 ; 5th tank is defferent + bne No5thTankHide + sta hposp0+4 + sta hposp0+5 + beq @+ +No5thTankHide + cpx #$5 ; 6th tank is defferent + bne No6thTankHide + sta hposp0+6 + sta hposp0+7 + beq @+ +No6thTankHide + sta hposp0,x +@ + jmp DoNotDrawTankNr SkipHidingPM @@ -636,20 +649,31 @@ DrawTankNrX ; now P/M graphics on the screen (only for 5 tanks) ; horizontal position + ldx TankNr mwa xdraw xbyte - ldx tanknr - cpx #$5 - bcs NoPlayerMissile rorw xbyte ; divide by 2 (carry does not matter) lda xbyte clc - adc #PMOffset+1 ; P/M to graphics offset + adc #PMOffsetX ; P/M to graphics offset cpx #$4 ; 5th tank are joined missiles and offset is defferent - bne NoMissile + bne No5thTank clc - adc #$0C ; missile offset offset -NoMissile + adc #$04 ; missile offset offset + sta hposp0+4 + sta hposp0+5 + bne NoMissile +No5thTank + cpx #$5 ; 6th tank are joined missiles and offset is defferent + bne Tanks1to4 + clc + adc #$04 ; missile offset offset + sta hposp0+6 + sta hposp0+7 + bne NoMissile +Tanks1to4 sta hposp0,x + +NoMissile ; vertical position lda pmtableL,x sta xbyte @@ -659,26 +683,64 @@ NoMissile ; calculate start position of the tank lda ydraw clc - adc #PMOffset + adc #PMOffsetY sta temp - ; clear sprite and put 3 lines on the tank at the same time ldy #$00 - tya + cpx #$5 + bcs PMForTank6 + ; clear sprite and put 3 lines on the tank at the same time ClearPM cpy temp bne ZeroesToGo - lda #$03 ; (2 bits set) we set on two pixels in three lines + lda (xbyte),y + and #%11110000 ; only for equal speeds + ora #%00001111 ; (2 bits set) we set on two pixels in three lines sta (xbyte),y dey + lda (xbyte),y + and #%11110000 ; only for equal speeds + ora #%00001111 ; (2 bits set) we set on two pixels in three lines sta (xbyte),y dey + lda (xbyte),y + and #%11110000 ; only for equal speeds + ora #%00001111 ; (2 bits set) we set on two pixels in three lines sta (xbyte),y dey - lda #$00 ZeroesToGo + lda (xbyte),y + and #%11110000 ; only for equal speeds sta (xbyte),y dey bne ClearPM + beq NoPlayerMissile +PMForTank6 + ; clear sprite and put 3 lines on the tank at the same time +ClearPM6 + cpy temp + bne ZeroesToGo6 + lda (xbyte),y + and #%00001111 + ora #%11110000 ; (2 bits set) we set on two pixels in three lines + sta (xbyte),y + dey + lda (xbyte),y + and #%00001111 + ora #%11110000 ; (2 bits set) we set on two pixels in three lines + sta (xbyte),y + dey + lda (xbyte),y + and #%00001111 + ora #%11110000 ; (2 bits set) we set on two pixels in three lines + sta (xbyte),y + dey +ZeroesToGo6 + lda (xbyte),y + and #%00001111 + sta (xbyte),y + dey + bne ClearPM6 + NoPlayerMissile ; draw defensive weapons like shield ( tank number in X ) ; in xdraw, ydraw we have coordinates left LOWER corner of Tank char @@ -842,6 +904,22 @@ ShieldVisible rts .endp +;-------------------------------------------------- +.proc ClearPMmemory +;-------------------------------------------------- + + lda #$00 + tay +@ sta pmgraph+$300,y + sta pmgraph+$400,y + sta pmgraph+$500,y + sta pmgraph+$600,y + sta pmgraph+$700,y + iny + bne @- + rts +.endp + ;-------------------------------------------------- .proc drawmountains ;-------------------------------------------------- diff --git a/scorch.asm b/scorch.asm index 9bb383b..71ac0a2 100644 --- a/scorch.asm +++ b/scorch.asm @@ -306,6 +306,7 @@ SettingEnergies ;generating the new landscape jsr PMoutofScreen ;let P/M disappear jsr clearscreen ;let the screen be clean + jsr ClearPMmemory jsr placetanks ;let the tanks be evenly placed jsr calculatemountains ;let mountains be easy for the eye ;jsr calculatemountains0 ;only for tests - makes mountains flat and 0 height @@ -918,13 +919,14 @@ SetunPlots sta dmactls lda #$03 ; P/M on sta pmcntl - lda #$01 - sta sizem ; there will be only M0, double width + lda #$00 sta sizep0 ; P0-P3 widths sta sizep0+1 sta sizep0+2 sta sizep0+3 - lda #$10 ; P/M priorities (bit 4 joins missiles) + lda #%01010101 + sta sizem ; all missiles, double width + lda #%00100000 ; P/M priorities (multicolor players on) sta gtictls jsr PMoutofScreen diff --git a/scorch.xex b/scorch.xex index 4f5856b5d0d0d4ae4b1cbf31636192d97f9be5d5..a8965d4e4173240b0e77e1b3481b646744ea5edd 100644 GIT binary patch delta 14997 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 Qw;&7Nj3Im0Rh&-#f0(qQ`2YX_ delta 14578 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