diff --git a/display.asm b/display.asm index b896e45..ff0b871 100644 --- a/display.asm +++ b/display.asm @@ -94,10 +94,18 @@ dl ; MAIN game display list .word dl ;----------------------------------------------- GameOverDL - .byte $70,$70,$70,$70,$70,$70,$70,$20 + .byte $70,$70,$70,$40 + .byte $4f ; 1 line + .word display+(40*72) + :28 .byte $0f ; 28 lines + .byte $0f+$80 .byte $4f ; 1 line .word display+(40*32) - :31 .byte $0f ; 31 lines + :30 .byte $0f ; 30 lines + .byte $0f+$80 ; 1 line + .byte $4f ; 1 line + .word display+(40*72) + :7 .byte $0f ; 7 lines .byte $70 .byte $41 .word GameOverDL diff --git a/scorch.asm b/scorch.asm index a99b6de..63fe8c0 100644 --- a/scorch.asm +++ b/scorch.asm @@ -994,6 +994,27 @@ ClearResults rti .endp ;-------------------------------------------------- +.proc DLIinterruptGameOver + ;sta dliA + ;sty dliY + pha + lda dliCounter + bne @+ + lda #%00100000 ; playfield after P/M + STA WSYNC + sta gtictl + inc dliCounter + pla + rti +@ + lda #%00100100 ; playfield before P/M + STA WSYNC + sta gtictl + inc dliCounter + pla + rti +.endp +;-------------------------------------------------- .proc DLIinterruptText ;sta dliA pha diff --git a/scorch.xex b/scorch.xex index 7996ac9..e0141b4 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/textproc.asm b/textproc.asm index ae36574..f0250a8 100644 --- a/textproc.asm +++ b/textproc.asm @@ -1834,12 +1834,14 @@ FinishResultDisplay jsr ClearScreen jsr ClearPMmemory mwa #GameOverDL dlptrs - lda #%00111110 ; normal screen width, DL on, P/M on + lda #%00111110 ; normal screen width, DL on, P/M on sta dmactls + lda #%00100100 ; playfield before P/M + sta gtictls jsr ColorsOfSprites mva #0 colpf1s mva #TextForegroundColor colpf2s - VDLI DLIinterruptText.DLIinterruptNone ; jsr SetDLI for text screen without DLIs + VDLI DLIinterruptGameOver ; jsr SetDLI for Game Over screen ; initial tank positions randomization ldx #(MaxPlayers-1) ;maxNumberOfPlayers-1 @ @@ -1855,26 +1857,15 @@ AllTanksFloatingDown lda Ytankstable,x ; cmp #32 ; tank over screen - not visible cmp #80 ; tank under screen - new tank randomize - bne TankOnScreen + beq TankUnderScreen + cmp #72 ; tank under screen but.... parachute + bcs DrawOnlyParachute + bcc TankOnScreen +TankUnderScreen jsr RandomizeTankPos TankOnScreen jsr DrawTankNr - ; now we must clear sprites over and under our banner - lda pmtableL,x - sta xbyte ; sprite position in RAM - lda pmtableH,x - sta xbyte+1 - lda #0 - ldy #PMOffsetY ; start on top position -@ sta (xbyte),y - iny - cpy #PMOffsetY+32 ; banner begin - end zeroing sprites - bne @- - ldy #PMOffsetY+64 ; banner end - start zeroing again -@ sta (xbyte),y - iny - cpy #PMOffsetY+80 ; end of zeroing sprites - bne @- +DrawOnlyParachute jsr DrawTankParachute ldx TankNr dex