From 513f13c5fcde7c4c9e9f31a2fd58bb2255c1b225 Mon Sep 17 00:00:00 2001 From: pkali Date: Mon, 25 Jul 2022 09:50:49 -0400 Subject: [PATCH] broken inventory rollback --- constants.asm | 5 ++ display.asm | 103 ++++++++++++------------ scorch.xex | Bin 40625 -> 41425 bytes textproc.asm | 217 ++++++++++++++++++++++++-------------------------- 4 files changed, 162 insertions(+), 163 deletions(-) diff --git a/constants.asm b/constants.asm index 192eb5e..9fdcd72 100644 --- a/constants.asm +++ b/constants.asm @@ -688,5 +688,10 @@ gameOverSpritesTop ; end of the Gover sprites by number of players ; 1 2 3 4 5 6 .by 130,130,136,142,148,154 +;-------decimal constans +zero +digits dta d"0123456789" +nineplus dta d"9"+1 +space dta d" " .endif diff --git a/display.asm b/display.asm index 443397f..c3ecec9 100644 --- a/display.asm +++ b/display.asm @@ -1,4 +1,4 @@ -; @com.wudsn.ide.asm.mainsourcefile=scorch.asm +; @com.wudsn.ide.asm.mainsourcefile=scorch.asm .IF *>0 ;this is a trick that prevents compiling this file alone @@ -54,42 +54,42 @@ dl ; MAIN game display list .byte $10 ; 2 blank lines .byte $4f - .word display ; 1 line - :76 .by $0f ;76 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :13 .by $0f ;13 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :8 .by $0f ;8 - .by $4f ;1 + .word display ; 1 line + :76 .by $0f ;76 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :13 .by $0f ;13 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :8 .by $0f ;8 + .by $4f ;1 .wo display+$0ff0 - :2 .by $0f ;2 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :9 .by $0f ;9 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :8 .by $0f ;8 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :7 .by $0f ;7 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :6 .by $0f ;6 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :5 .by $0f ;5 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :4 .by $0f ;4 - .by $0f+$80 ; DLI (black bar) ;2 - .by $0f+$80 ; DLI - :3 .by $0f ;3 - .by $0f+$80 ; DLI (black to end);1 - :38 .byte $0f ;35 ..... = 200 + :2 .by $0f ;2 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :9 .by $0f ;9 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :8 .by $0f ;8 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :7 .by $0f ;7 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :6 .by $0f ;6 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :5 .by $0f ;5 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :4 .by $0f ;4 + .by $0f+$80 ; DLI (black bar) ;2 + .by $0f+$80 ; DLI + :3 .by $0f ;3 + .by $0f+$80 ; DLI (black to end);1 + :38 .byte $0f ;35 ..... = 200 .by $4f - .wo EmptyLine ; additional line of ground + .wo EmptyLine ; additional line of ground .byte $41 .word dl ;----------------------------------------------- @@ -125,14 +125,13 @@ MoreDown dta d" more " dta 93,93,93 dta d" " -GameOverResults ; reuse after game (remember to clear on start new) ListOfWeapons - :32 dta d" " ; WARNING! 32 offensive weapons at the moment! -ListOfWeaponsEnd - -;ListOfDefensiveWeapons -; :16 dta d" " -;ListOfDefensiveWeaponsEnd ;constant useful when clearing + :36 dta d" " +ListOfWeapons1End +GameOverResults ; reuse after game (remember to clear on start new) +ListOfDefensiveWeapons + :16 dta d" " +ListOfDefensiveWeaponsEnd ;constant useful when clearing WeaponsDescription dta d" " dta d"Tab"* @@ -151,8 +150,8 @@ EmptyLine ;----------------------------------------------- GameOverDL .byte $70,$40 - .byte $47 ; 16 gr8 lines - .word GameOverTitle + .byte $47 ; 16 gr8 lines + .word GameOverTitle .byte $4f ; 1 line .word display+(40*72) :28 .byte $0f ; 28 lines @@ -164,13 +163,13 @@ GameOverDL .byte $4f ; 1 line .word display+(40*72) :7 .byte $0f ; 7 lines - .byte $00+$80 ; 1 line - .byte $42 ; 7 tekst lines - .word GameOverTitle2 - .byte $00+$80 - .byte $42 - .word GameOverResults - :5 .byte $00+$80,$02 + .byte $00+$80 ; 1 line + .byte $42 ; 7 tekst lines + .word GameOverTitle2 + .byte $00+$80 + .byte $42 + .word GameOverResults + :5 .byte $00+$80,$02 .byte $70 .byte $41 .word GameOverDL @@ -212,4 +211,4 @@ GameOverTitle dta d" game over "* GameOverTitle2 dta d" Player Points Hits Money " -.endif +.endif \ No newline at end of file diff --git a/scorch.xex b/scorch.xex index c47ca91d3a85557fa35ad967bd2e4da17f3a6531..10c8686385e25122761ac62f78f7219d99081bb7 100644 GIT binary patch delta 3213 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 @@ -479,7 +479,7 @@ NoWeapon ; if we got to the defense weapons, ; we switch address to the second table. - mwa #ListOfWeapons xbyte + mwa #ListOfDefensiveWeapons xbyte NoDefense cpx #$40 jne CreateList @@ -534,10 +534,10 @@ ClearList1 bne DoNotIncHigher1 inc xbyte+1 DoNotIncHigher1 - cpy #ListOfWeaponsEnd + cpx #>ListOfWeapons1End bne ClearList1 ; And the same we do with the second list @@ -564,10 +564,10 @@ DoNotAddX02 ; add to the address of the list clc lda xbyte - adc #ListOfWeapons + adc #>ListOfDefensiveWeapons sta xbyte+1 stx xbyte txa ; now there is zero here @@ -577,10 +577,10 @@ ClearList2 bne DoNotIncHigher2 inc xbyte+1 DoNotIncHigher2 - cpy #ListOfWeaponsEnd + cpx #>ListOfDefensiveWeaponsEnd bne ClearList2 ; here we have pretty cool lists and there is no brute force @@ -715,7 +715,7 @@ ListChange jmp ChoosingItemForPurchase DeffensiveSelected - mwa #ListOfWeapons WeaponsListDL + mwa #ListOfDefensiveWeapons WeaponsListDL lda isInventory beq @+ jsr calcPosDefensive @@ -795,27 +795,27 @@ invSelectDef lda IndexesOfWeaponsL2,y tay ldx tankNr - cmp #ind_Battery________ - bne NotBattery - ; if activate battery, we do it differently + cmp #ind_Battery________ + bne NotBattery + ; if activate battery, we do it differently mva #sfx_battery sfx_effect - mva #99 Energy,x - bne DecreaseDefensive ; bypass activation + mva #99 Energy,x + bne DecreaseDefensive ; bypass activation NotBattery - cmp #ind_White_Flag_____ - bne NotWhiteFlag - cmp ActiveDefenceWeapon,x - bne NoDeactivateWhiteFlag - mva #sfx_white_flag sfx_effect - lda #$00 ; if try to activate activated White Flag then deactivate Defence + cmp #ind_White_Flag_____ + bne NotWhiteFlag + cmp ActiveDefenceWeapon,x + bne NoDeactivateWhiteFlag + mva #sfx_white_flag sfx_effect + lda #$00 ; if try to activate activated White Flag then deactivate Defence sta ActiveDefenceWeapon,x - sta ShieldEnergy,x - beq DefActivationEnd + sta ShieldEnergy,x + beq DefActivationEnd NotWhiteFlag NoDeactivateWhiteFlag - ; activate new defensive + ; activate new defensive sta ActiveDefenceWeapon,x - ; set defensive energy + ; set defensive energy lda DefensiveEnergy,y sta ShieldEnergy,x DecreaseDefensive @@ -897,7 +897,7 @@ EraseLoop beq CharToList1 ; we are on the second list (deffensive) ; so there is no problem with scrolling - mwa #ListOfWeapons xbyte + mwa #ListOfDefensiveWeapons xbyte ldx PositionOnTheList beq SelectList2 ; if there is 0 we add nothing AddLoop2 @@ -1324,11 +1324,6 @@ displayloop1 rts .endp -;-------decimal constans -zero -digits dta d"0123456789" -nineplus dta d"9"+1 -space dta d" " ;-------------------------------------------------------- .proc Display4x4AboveTank ; @@ -1831,61 +1826,61 @@ FinishResultDisplay ;-------------------------------------------------- .proc GameOverScreen ;-------------------------------------------------- - jsr ClearScreen - jsr ClearPMmemory + 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 + lda #%00100100 ; playfield before P/M + sta gtictls + jsr ColorsOfSprites mva #0 colpf1s mva #TextForegroundColor colpf2s VDLI DLIinterruptGameOver ; jsr SetDLI for Game Over screen - ; initial tank positions randomization + ; initial tank positions randomization ldx #(MaxPlayers-1) ;maxNumberOfPlayers-1 @ - jsr RandomizeTankPos + jsr RandomizeTankPos dex bpl @- -MainTanksFloatingLoop - ; main tanks floating loop +MainTanksFloatingLoop + ; main tanks floating loop ldx #(MaxPlayers-1) ;maxNumberOfPlayers-1 -AllTanksFloatingDown - stx TankNr - inc Ytankstable,x - lda Ytankstable,x -; cmp #32 ; tank over screen - not visible - cmp #80 ; tank under screen - new tank randomize - beq TankUnderScreen - cmp #72 ; tank under screen but.... parachute - bcs DrawOnlyParachute - bcc TankOnScreen +AllTanksFloatingDown + stx TankNr + inc Ytankstable,x + lda Ytankstable,x +; cmp #32 ; tank over screen - not visible + cmp #80 ; tank under screen - new tank randomize + beq TankUnderScreen + cmp #72 ; tank under screen but.... parachute + bcs DrawOnlyParachute + bcc TankOnScreen TankUnderScreen - jsr RandomizeTankPos + jsr RandomizeTankPos TankOnScreen - jsr DrawTankNr + jsr DrawTankNr DrawOnlyParachute - jsr DrawTankParachute - ldx TankNr - dex - bpl AllTanksFloatingDown - jmp MainTanksFloatingLoop ; neverending loop - rts + jsr DrawTankParachute + ldx TankNr + dex + bpl AllTanksFloatingDown + jmp MainTanksFloatingLoop ; neverending loop + rts RandomizeTankPos - randomize 8 32 - sta Ytankstable,x - randomize 0 180 - sta AngleTable,x - randomize 0 (49-8) - and #%11111110 ; correction for PMG - clc - adc XtankOffsetGO_L,x + randomize 8 32 + sta Ytankstable,x + randomize 0 180 + sta AngleTable,x + randomize 0 (49-8) + and #%11111110 ; correction for PMG + clc + adc XtankOffsetGO_L,x sta XtankstableL,x - lda XtankOffsetGO_H,x - adc #0 + lda XtankOffsetGO_H,x + adc #0 sta XtankstableH,x - rts + rts .endp ;------------------------------------------------- .proc DisplayStatus @@ -1937,17 +1932,17 @@ RandomizeTankPos ;--------------------- ;displaying name of the defence weapon (if active) ;--------------------- - lda #$08 ; ( - sta textbuffer+80+22 - lda #$09 ; ) - sta textbuffer+80+39 - lda ActiveDefenceWeapon,x - bne ActiveDefence - ; clear brackets - lda #$00 ; space - sta textbuffer+80+22 - sta textbuffer+80+39 - lda #47 ; no weapon name + lda #$08 ; ( + sta textbuffer+80+22 + lda #$09 ; ) + sta textbuffer+80+39 + lda ActiveDefenceWeapon,x + bne ActiveDefence + ; clear brackets + lda #$00 ; space + sta textbuffer+80+22 + sta textbuffer+80+39 + lda #47 ; no weapon name ActiveDefence sta temp ;get back number of the weapon mva #0 temp+1 @@ -1980,26 +1975,26 @@ ActiveDefence ;--------------------- ;displaying the energy of a tank shield (if exist) ;--------------------- - ; clear (if no shield) - lda #$00 ; space - sta textbuffer+40+10 - sta textbuffer+40+11 - sta textbuffer+40+12 - sta textbuffer+40+13 - ; check shield energy and display it - ldx TankNr - lda ActiveDefenceWeapon,x - beq NoDefenceWeapon - lda ShieldEnergy,x - beq NoShieldEnergy - sta decimal ; displayed value - lda #$08 ; ( - sta textbuffer+40+10 - mwa #textbuffer+40+11 displayposition + ; clear (if no shield) + lda #$00 ; space + sta textbuffer+40+10 + sta textbuffer+40+11 + sta textbuffer+40+12 + sta textbuffer+40+13 + ; check shield energy and display it + ldx TankNr + lda ActiveDefenceWeapon,x + beq NoDefenceWeapon + lda ShieldEnergy,x + beq NoShieldEnergy + sta decimal ; displayed value + lda #$08 ; ( + sta textbuffer+40+10 + mwa #textbuffer+40+11 displayposition jsr displaybyte - lda #$09 ; ) - sta textbuffer+40+13 -NoDefenceWeapon + lda #$09 ; ) + sta textbuffer+40+13 +NoDefenceWeapon NoShieldEnergy ;========================= @@ -2057,30 +2052,30 @@ DisplayWindValue displayAngle ldx TankNr lda AngleTable,x - cmp #90 - beq VerticallyUp - bcs AngleToLeft + cmp #90 + beq VerticallyUp + bcs AngleToLeft AngleToRight - ; now we have values from 0 to 89 and right angle + ; now we have values from 0 to 89 and right angle sta decimal lda #$7f ; (tab) character sta textbuffer+40+25 lda #0 ;space sta textbuffer+40+22 - beq AngleDisplay + beq AngleDisplay AngleToLeft - sec - lda #180 - sbc AngleTable,x - ; angles 180 - 91 converted to 0 - 89 - sta decimal + sec + lda #180 + sbc AngleTable,x + ; angles 180 - 91 converted to 0 - 89 + sta decimal lda #$7e ;(del) char sta textbuffer+40+22 lda #0 ;space sta textbuffer+40+25 - beq AngleDisplay + beq AngleDisplay VerticallyUp - ; now we have value 90 + ; now we have value 90 sta decimal lda #0 ;space sta textbuffer+40+25