diff --git a/scorch.asm b/scorch.asm index 1bab099..c476ff8 100644 --- a/scorch.asm +++ b/scorch.asm @@ -178,21 +178,8 @@ MainGameLoop jsr RmtSongSelect jsr DisplayResults - ;check demo mode - ldx numberOfPlayers - dex -checkForHuman ; if all in skillTable other than 0 then switch to DEMO MODE - lda skillTable,x - beq peopleAreHere - dex - bpl checkForHuman - ; no people, just wait a bit - pause 150 - jmp noKey + jsr DemoModeOrKey -peopleAreHere - jsr getkey -noKey ldx NumberOfPlayers dex CalculateGains @@ -244,8 +231,10 @@ skipzeroing bpl CalculateGains lda GameIsOver - jne START - + beq NoGameOverYet + ;jsr GameOverScreen + jmp START +NoGameOverYet inc CurrentRoundNr lda #$0 sta dmactls ; issue #72 @@ -269,9 +258,8 @@ skipzeroing lda #song_ingame jsr RmtSongSelect + jsr SetPMWidth lda #0 - sta sizep0 ; P0-P1 widths - sta sizep0+1 sta colpf2s ; status line "off" sta colpf1s @@ -928,13 +916,7 @@ SetunPlots ; sta dmactls lda #$03 ; P/M on sta pmcntl - lda #$00 - sta sizep0 ; P0-P3 widths - sta sizep0+1 - sta sizep0+2 - sta sizep0+3 - lda #%01010101 - sta sizem ; all missiles, double width + jsr SetPMWidth lda #%00100000 ; P/M priorities (multicolor players on) sta gtictls jsr PMoutofScreen @@ -974,6 +956,17 @@ ClearResults rts .endp ;-------------------------------------------------- +.proc SetPMWidth + lda #$00 + sta sizep0 ; P0-P3 widths + sta sizep0+1 + sta sizep0+2 + sta sizep0+3 + lda #%01010101 + sta sizem ; all missiles, double width + rts +.endp +;-------------------------------------------------- .proc DLIinterruptGraph ;sta dliA ;sty dliY @@ -1393,6 +1386,26 @@ getkeyend bne WaitForKeyRelease rts .endp +;-------------------------------------------------- +.proc DemoModeOrKey +;-------------------------------------------------- + ;check demo mode + ldx numberOfPlayers + dex +checkForHuman ; if all in skillTable other than 0 then switch to DEMO MODE + lda skillTable,x + beq peopleAreHere + dex + bpl checkForHuman + ; no people, just wait a bit + pause 150 + jmp noKey + +peopleAreHere + jsr getkey +noKey + rts +.endp ;-------------------------------------------------- .proc RmtSongSelect diff --git a/scorch.xex b/scorch.xex index e3526ad..5057b83 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/textproc.asm b/textproc.asm index aeaa30c..da7a0a9 100644 --- a/textproc.asm +++ b/textproc.asm @@ -1832,11 +1832,46 @@ FinishResultDisplay lda #%00111110 ; normal screen width, DL on, P/M on sta dmactls lda #%00100100 ; playfield before P/M - sta gtictls + sta gtictls + jsr SetPMWidth jsr ColorsOfSprites mva #0 colpf1s mva #TextForegroundColor colpf2s VDLI DLIinterruptGameOver ; jsr SetDLI for Game Over screen + ; make text and color lines for each tank +; ldx NumberOfPlayers ;we start from the highest (best) tank +; dex ;and it is the last one +; stx ResultOfTankNr ;in TankSequence table +; ldy #0 ;witch line we are coloring +;FinalResultOfTheNextPlayer +; ldx ResultOfTankNr ;we are after a round, so we can use TankNr +; lda TankSequence,x ;and we keep here real number if the tank +; tax +; stx TankNr ;for which we are displaying results +; lda TankStatusColoursTable,x +; sta GameOverColoursTable,y +; ; +; iny +; dec ResultOfTankNr +; beq FinalResultOfTheNextPlayer +;MakeBlackLines +; cpy #$06 +; beq AllLinesReady +; lda #0 ; black line color for rest of tanks +; sta GameOverColoursTable,y +; iny +; bne MakeBlackLines +;AllLinesReady + ldx #(MaxPlayers-1) +MakeAllTanksVisible + lda #99 + sta eXistenZ,x + lda #0 + sta ActiveDefenceWeapon,x + dex + bpl MakeAllTanksVisible + + ; start music and animations lda #song_game_over jsr RmtSongSelect ; initial tank positions randomization