diff --git a/README.md b/README.md index 5e25491..45ef4f2 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ -# Atari 8-bit Scorched Earth source code +# Scorch - Atari 8-bit Scorched Earth clone source code --------------------------------------------------- + +Scorch is a multi-player, turn-based, artillery video game. Tanks do turn-based battle in two-dimensional terrain, with each player adjusting the angle and power of their tank turret before each shot. + by Tomasz 'pecus' Pecko and Pawel 'pirx' Kalinowski Warsaw, Miami 2000, 2001, 2002, 2003, 2009, 2012, 2013, 2022 @@ -7,9 +10,10 @@ Warsaw, Miami 2000, 2001, 2002, 2003, 2009, 2012, 2013, 2022 You can contact us at pecus@poczta.fm or pirx@5oft.pl home page of this project is https://github.com/pkali/scorch_src -This source code was originally compiled under OMC65 crossassembler -(https://github.com/pkali/omc65) -and on 2012-06-21 translated to mads +This source code was originally compiled under [OMC65 crossassembler](https://github.com/pkali/omc65) and on 2012-06-21 translated to [mads](https://github.com/tebe6502/Mad-Assembler). + +Compilation: `mads scorch.asm -o:scorch.xex` + Game source code is split into 5+3 parts: - scorch.asm is the main game code (with many assorted routines) diff --git a/ai.asm b/ai.asm index 9e13183..1dd7530 100755 --- a/ai.asm +++ b/ai.asm @@ -345,58 +345,3 @@ loop rts .endp - - -PurchaseMeTable .proc ;weapons good to be purchased by the robot - ;the comment is an index in the tables - dta 1 ;"Baby Missile " ; 0 - dta 1 ;"Missile " ; 1 - dta 1 ;"Baby Nuke " ; 2 - dta 1 ;"Nuke " ; 3 - dta 1 ;"LeapFrog " ; 4 - dta 1 ;"Funky Bomb " ; 5 - dta 1 ;"MIRV " ; 6 - dta 1 ;"Death's Head " ; 7 - dta 0 ;"Napalm " ; 8 - dta 0 ;"Hot Napalm " ; 9 - dta 0 ;"Tracer " ; 10 - dta 0 ;"Smoke Tracer " ; 11 - dta 1 ;"Baby Roller " ; 12 - dta 1 ;"Roller " ; 13 - dta 1 ;"Heavy Roller " ; 14 - dta 0 ;"Riot Charge " ; 15 - dta 0 ;"Riot Blast " ; 16 - dta 0 ;"Riot Bomb " ; 17 - dta 0 ;"Heavy Riot Bomb " ; 18 - dta 0 ;"Baby Digger " ; 19 - dta 0 ;"Digger " ; 20 - dta 0 ;"Heavy Digger " ; 21 - dta 0 ;"Baby Sandhog " ; 22 - dta 0 ;"Sandhog " ; 23 - dta 0 ;"Heavy Sandhog " ; 24 - dta 0 ;"Dirt Clod " ; 25 - dta 0 ;"Dirt Ball " ; 26 - dta 0 ;"Ton of Dirt " ; 27 - dta 1 ;"Liquid Dirt " ; 28 - dta 0 ;"Dirt Charge " ; 29 - dta 0 ;"Earth Disrupter " ; 30 - dta 1 ;"Plasma Blast " ; 31 - dta 1 ;"Laser " ; 32 - dta 0 ;"----------------" ; 33 - dta 0 ;"----------------" ; 34 - dta 0 ;"----------------" ; 35 - dta 0 ;"----------------" ; 36 - dta 0 ;"----------------" ; 37 - dta 0 ;"----------------" ; 38 - dta 0 ;"----------------" ; 39 - dta 0 ;"----------------" ; 40 - dta 0 ;"----------------" ; 41 - dta 0 ;"----------------" ; 42 - dta 0 ;"----------------" ; 43 - dta 0 ;"----------------" ; 44 - dta 0 ;"----------------" ; 45 - dta 0 ;"----------------" ; 46 - dta 0 ;"----------------" ; 47 - -.endp - \ No newline at end of file diff --git a/artwork/HIMARS14.asm b/artwork/HIMARS14.asm index 88cd952..12637ab 100644 --- a/artwork/HIMARS14.asm +++ b/artwork/HIMARS14.asm @@ -7,7 +7,15 @@ ;icl "HIMARS14.h" ;ICL '../lib/atari.hea' - org $80 + +WIDTH = 40 +HEIGHT = 30 + +; --- BASIC switch OFF + org $2000\ mva #$ff portb\ rts\ ini $2000 + +; --- dmsc LZSS player routine on zero page + org $80 chn_copy .ds 9 chn_pos .ds 9 @@ -26,22 +34,15 @@ skip rts .endp song_ptr = get_byte + 1 - - -fcnt .ds 2 -fadr .ds 2 -fhlp .ds 2 -cloc .ds 1 -regA .ds 1 -regX .ds 1 -regY .ds 1 - -WIDTH = 40 -HEIGHT = 30 - -; --- BASIC switch OFF - org $2000\ mva #$ff portb\ rts\ ini $2000 + +fcnt .ds 2 +fadr .ds 2 +fhlp .ds 2 +cloc .ds 1 +regA .ds 1 +regX .ds 1 +regY .ds 1 ; --- MAIN PROGRAM org $2000 ant dta $F0 diff --git a/constants.asm b/constants.asm index b595e1b..bb2308c 100644 --- a/constants.asm +++ b/constants.asm @@ -13,7 +13,6 @@ CashOptionH GravityTable .by 10,20,25,30,40 MaxWindTable .by 5,20,40,60,80 RoundsTable .by 10,20,30,40,50 -RoundsInTheGame .by 10 ;how many rounds in the current game flyDelayTable .by 255,150,75,35,1 ;------------------------------------------------ @@ -284,12 +283,8 @@ costable linetableL :screenheight .by <(display+screenBytes*#) - ;:20 .by <(display+screenBytes*#) - .by (display+screenBytes*#) - ;:20 .by >(display+screenBytes*#) - .by >PlotLine ;---------------------------- bittable .by $80,$40,$20,$10,$08,$04,$02,$01 @@ -327,7 +322,7 @@ WhereToSlideTable .BY %000 ; 00001001 .BY %000 ; 00001010 .BY %000 ; 00001011 - .BY %000 ; 00001100 + .BY %100 ; 00001100 .BY %000 ; 00001101 .BY %000 ; 00001110 .BY %000 ; 00001111 @@ -630,12 +625,12 @@ EndOfTheBarrelY ;------------------------------------------------- TanksNamesDefault - dta d"1st Tank" - dta d"2nd Tank" - dta d"3rd Tank" - dta d"4th Tank" - dta d"5th Tank" - dta d"6th Tank" + dta d"1st.Tank" + dta d"2nd.Tank" + dta d"3rd.Tank" + dta d"4th.Tank" + dta d"5th.Tank" + dta d"6th.Tank" ;Weapon prices (*10 on screen) price_Baby_Missile___ = 0 ;_0 @@ -907,6 +902,58 @@ WeaponUnits .by 25 ;Contact_Trigger .by 0 ;_____________63 +PurchaseMeTable ;weapons good to be purchased by the robot + ;the comment is an index in the tables + dta 1 ;"Baby Missile " ; 0 + dta 1 ;"Missile " ; 1 + dta 1 ;"Baby Nuke " ; 2 + dta 1 ;"Nuke " ; 3 + dta 1 ;"LeapFrog " ; 4 + dta 1 ;"Funky Bomb " ; 5 + dta 1 ;"MIRV " ; 6 + dta 1 ;"Death's Head " ; 7 + dta 0 ;"Napalm " ; 8 + dta 0 ;"Hot Napalm " ; 9 + dta 0 ;"Tracer " ; 10 + dta 0 ;"Smoke Tracer " ; 11 + dta 1 ;"Baby Roller " ; 12 + dta 1 ;"Roller " ; 13 + dta 1 ;"Heavy Roller " ; 14 + dta 0 ;"Riot Charge " ; 15 + dta 0 ;"Riot Blast " ; 16 + dta 0 ;"Riot Bomb " ; 17 + dta 0 ;"Heavy Riot Bomb " ; 18 + dta 0 ;"Baby Digger " ; 19 + dta 0 ;"Digger " ; 20 + dta 0 ;"Heavy Digger " ; 21 + dta 0 ;"Baby Sandhog " ; 22 + dta 0 ;"Sandhog " ; 23 + dta 0 ;"Heavy Sandhog " ; 24 + dta 0 ;"Dirt Clod " ; 25 + dta 0 ;"Dirt Ball " ; 26 + dta 0 ;"Ton of Dirt " ; 27 + dta 0 ;"Liquid Dirt " ; 28 + dta 0 ;"Dirt Charge " ; 29 + dta 0 ;"Earth Disrupter " ; 30 + dta 0 ;"Plasma Blast " ; 31 + dta 1 ;"Laser " ; 32 + dta 0 ;"----------------" ; 33 + dta 0 ;"----------------" ; 34 + dta 0 ;"----------------" ; 35 + dta 0 ;"----------------" ; 36 + dta 0 ;"----------------" ; 37 + dta 0 ;"----------------" ; 38 + dta 0 ;"----------------" ; 39 + dta 0 ;"----------------" ; 40 + dta 0 ;"----------------" ; 41 + dta 0 ;"----------------" ; 42 + dta 0 ;"----------------" ; 43 + dta 0 ;"----------------" ; 44 + dta 0 ;"----------------" ; 45 + dta 0 ;"----------------" ; 46 + dta 0 ;"----------------" ; 47 + + ;------------------------------------------------- ; Screen codes of icons (chars) representing a given weapon WeaponSymbols diff --git a/display.asm b/display.asm index c03043e..d2244ef 100755 --- a/display.asm +++ b/display.asm @@ -51,10 +51,7 @@ dl ; MAIN game display list .byte $42 .word textbuffer .byte $02, $02 +$80 ;DLI - .byte $00 - - .byte $4f - .word PlotLine + .byte $10 ; 2 blank lines .byte $4f .word display @@ -66,12 +63,11 @@ dl ; MAIN game display list :97 .byte $0f .byte $41 .word dl -PlotLine = display + screenHeight*screenBytes ; the last line is plot pointer ;----------------------------------------------- ;Screen displays go first to avoid crossing 4kb barrier ;----------------------------------------------- OptionsScreen - dta d"Welcome to Scorch ver. 133 (un)2000-2022" + dta d"Welcome to Scorch ver. 134 (un)2000-2022" dta d" Please select option with cursor keys " dta d" and press (Return) to proceed " OptionsHere diff --git a/grafproc.asm b/grafproc.asm index 9096c3a..095e20c 100755 --- a/grafproc.asm +++ b/grafproc.asm @@ -977,6 +977,7 @@ EndDrawing .endp ; ----------------------------------------- unPlot .proc +; plots a point and saves the plotted byte, reverts the previous plot. ; ----------------------------------------- ldx #0 ; only one pixel unPlotAfterX @@ -996,7 +997,8 @@ unPlotAfterX ; is it not out of the screen ???? cpw ydraw #screenheight - jcs EndOfUnPlot + jcc CheckX + mwa #0 ydraw CheckX cpw xdraw #screenwidth jcs EndOfUnPlot @@ -1032,6 +1034,7 @@ MakeUnPlot lda color beq ClearUnPlot + ;plotting here lda (xbyte),y sta OldOraTemp ora bittable,x @@ -1174,33 +1177,6 @@ point .proc rts .endp -; ----------------------------------------- -PlotPointer .proc -; ----------------------------------------- -; draws pointer that shows where is the bullet -; when it is over the screen -; (it is on the top of the screen) - - - mwa xdraw tempCir - - mva #0 color - mwa #screenHeight ydraw - mwa oldPlotPointerX xdraw - jsr plot - - - mwa tempCir xdraw - - mva #1 color - mwa #screenHeight ydraw - jsr plot - - mwa xdraw oldPlotPointerX - - rts - -.endp ;-------------------------------------------------- DrawLine .proc ;-------------------------------------------------- diff --git a/lib/atari.hea b/lib/atari.hea index 35f0629..2d5e17b 100755 --- a/lib/atari.hea +++ b/lib/atari.hea @@ -103,8 +103,8 @@ CONSOL = $D01F ; rejestr stanu klawiszy konsoli Start (bit 0), Select (bit 1), * --- POKEY * --------------------------------------------------------------------------------------------- -IRQENS = $0010 ; rejestr-cie� IRQEN -IRQSTAT = $0011 ; rejestr-cie� IRQST +IRQENS = $0010 ; shadow register IRQEN +IRQSTAT = $0011 ; shadow register IRQST AUDF3 = $D204 ; cz�stotliwo�� pracy generatora 3 (Z) AUDCTL = $D208 ; rejestr kontroli generator�w d�wi�ku (Z) @@ -147,22 +147,22 @@ NMIST = $D40F ; rejestr statusu przerwa� NMI ;------------------------------------- ;additional system variables ;------------------------------------- -COLPM0S = $02C0 ;- - rejestr-cie� COLPM0 -COLPM1S = $02C1 ;- - rejestr-cie� COLPM1 -COLPM2S = $02C2 ;- - rejestr-cie� COLPM2 -COLPM3S = $02C3 ;- - rejestr-cie� COLPM3 -COLPF0S = $02C4 ;- - rejestr-cie� COLPF0 -COLPF1S = $02C5 ;- - rejestr-cie� COLPF1 -COLPF2S = $02C6 ;- - rejestr-cie� COLPF2 -COLPF3S = $02C7 ;- - rejestr-cie� COLPF3 +COLPM0S = $02C0 ;- - shadow register COLPM0 +COLPM1S = $02C1 ;- - shadow register COLPM1 +COLPM2S = $02C2 ;- - shadow register COLPM2 +COLPM3S = $02C3 ;- - shadow register COLPM3 +COLPF0S = $02C4 ;- - shadow register COLPF0 +COLPF1S = $02C5 ;- - shadow register COLPF1 +COLPF2S = $02C6 ;- - shadow register COLPF2 +COLPF3S = $02C7 ;- - shadow register COLPF3 COLBAKS = $02C8 -GTICTLS = $026F ;- - rejestr-cie� GTIACTL +GTICTLS = $026F ;- - shadow register GTIACTL DMACTLS = $022F ;- - rejestr kontroli dost�pu do pami�ci - cie� DLPTRS = $0230 ;- - adres programu ANTIC-a - cie� -CHBAS = $02F4 ;- - rejestr-cie� CHBASE -KBCODES = $02FC ;- - rejestr-cie� KBCODE +CHBAS = $02F4 ;- - shadow register CHBASE +KBCODES = $02FC ;- - shadow register KBCODE SETVBV = $E45C XITVBV = $E462 @@ -178,10 +178,10 @@ JSTICK2 = $027A ;- JSTICK2 - po�o�enie joysticka 0 JSTICK3 = $027B ;- JSTICK3 - po�o�enie joysticka 1 PTRIG0 = $027C ;- PTRIG0 - przycisk potencjometru 0 PTRIG1 = $027D ;- PTRIG1 - przycisk potencjometru 1 -TRIG0S = $0284 ;- TRIG0S - przycisk joysticka 0, rejestr-cie� TRIG0 -TRIG1S = $0285 ;- TRIG1S - przycisk joysticka 1, rejestr-cie� TRIG1 -TRIG2S = $0286 ;- TRIG2S - rejestr-cie� TRIG0 -TRIG3S = $0287 ;- TRIG3S - rejestr-cie� TRIG1 +TRIG0S = $0284 ;- TRIG0S - przycisk joysticka 0, shadow register TRIG0 +TRIG1S = $0285 ;- TRIG1S - przycisk joysticka 1, shadow register TRIG1 +TRIG2S = $0286 ;- TRIG2S - shadow register TRIG0 +TRIG3S = $0287 ;- TRIG3S - shadow register TRIG1 /* @@ -189,8 +189,8 @@ Rejestry OS w pami�ci RAM $08 - WARMST - znacznik gor�cego startu $0E - APPMHI - najwy�szy adres RAM zaj�ty przez program - $10 - IRQENS - rejestr-cie� IRQEN - $11 - IRQSTAT - rejestr-cie� IRQST + $10 - IRQENS - shadow register IRQEN + $11 - IRQSTAT - shadow register IRQST $12 - RTCLOK - zegar czasu rzeczywistego $15 - BUFADR - adres bufora dla operacji dyskowych $17 - ICCOMT - rejestr przej�ciowy kodu operacji I/O @@ -267,12 +267,12 @@ $0214 - VTIMR4 - wektor przerwania licznika 4 POKEY-a $0218 - TIMCNT1 - pierwszy licznik systemu $0226 - TIMVEC1 - wektor przerwania licznika TIMCNT1 $022A - TIMFLG3 - znacznik wyzerowania licznika TIMCNT3 -$022F - DMACTLS - rejestr-cie� DMACTL -$0230 - DLPTRS - rejestr-cie� DLPTR -$0232 - SKCTLS - rejestr-cie� SKCTL +$022F - DMACTLS - shadow register DMACTL +$0230 - DLPTRS - shadow register DLPTR +$0232 - SKCTLS - shadow register SKCTL $0233 - LCOUNT - licznik odczytu dla nowego urz�dzenia -$0234 - LPENHS - rejestr-cie� LPENH -$0235 - LPENVS - rejestr-cie� LPENV +$0234 - LPENHS - shadow register LPENH +$0235 - LPENVS - shadow register LPENV $023A - CDEVIC - kod urz�dzenia dla SIO $023B - CCMND - kod operacji dla SIO $023C - CAUX1 - pierwszy bajt pomocniczy dla SIO @@ -283,25 +283,25 @@ $0244 - COLDST - znacznik zimnego startu systemu $0245 - RECLEN - d�ugo�� rekordu z nowego urz�dzenia $0246 - DSKTIM - warto�� Timeout dla stacji dysk�w $0247 - PDVMSK - maska obecno�ci nowych urz�dze� -$0248 - PDVRS - rejestr-cie� PDVREG +$0248 - PDVRS - shadow register PDVREG $024A - RELADR - adres procedury przemieszczalnej $024C - PPTMPA - rejestr przechowania zawarto�ci akumulatora $024D - PPTMPX - rejestr przechowania zawarto�ci rejestru X $026B - CHSPTR - wektor nieu�ywanego zestawu znak�w $026C - VSFLAG - znacznik przesuwu pionowego obrazu $026E - FINE - znacznik delikatnego przesuwu obrazu -$026F - GTICTLS - rejestr-cie� GTIACTL -$0270 - PADDL0 - rejestr-cie� POT0 +$026F - GTICTLS - shadow register GTIACTL +$0270 - PADDL0 - shadow register POT0 $0278 - JSTICK0 - po�o�enie joysticka 0 $0279 - JSTICK1 - po�o�enie joysticka 1 $027A - JSTICK2 - po�o�enie joysticka 0 $027B - JSTICK3 - po�o�enie joysticka 1 $027C - PTRIG0 - przycisk potencjometru 0 $027D - PTRIG1 - przycisk potencjometru 1 -$0284 - TRIG0S - przycisk joysticka 0, rejestr-cie� TRIG0 -$0285 - TRIG1S - przycisk joysticka 1, rejestr-cie� TRIG1 -$0286 - TRIG2S - rejestr-cie� TRIG0 -$0287 - TRIG3S - rejestr-cie� TRIG1 +$0284 - TRIG0S - przycisk joysticka 0, shadow register TRIG0 +$0285 - TRIG1S - przycisk joysticka 1, shadow register TRIG1 +$0286 - TRIG2S - shadow register TRIG0 +$0287 - TRIG3S - shadow register TRIG1 $0288 - HIBYTE - indeks operacji nowego urz�dzenia $0289 - WMODE - znacznik sposobu dost�pu do magnetofonu $028A - BLIM - d�ugo�� bufora magnetofonu @@ -326,15 +326,15 @@ $02BC - HOLD4 - pomocniczy rejestr przej�ciowy $02BD - DRETRY - liczba powt�rze� wywo�a� urz�dzenia $02BE - SHFLOK - znacznik klawiszy SHIFT i CONTROL $02BF - BOTSCR - liczba wierszy tekstu -$02C0 - COLPM0S - rejestr-cie� COLPM0 -$02C1 - COLPM1S - rejestr-cie� COLPM1 -$02C2 - COLPM2S - rejestr-cie� COLPM2 -$02C3 - COLPM3S - rejestr-cie� COLPM3 -$02C4 - COLPF0S - rejestr-cie� COLPF0 -$02C5 - COLPF1S - rejestr-cie� COLPF1 ;gr.8 letters -$02C6 - COLPF2S - rejestr-cie� COLPF2 ;gr.8 background -$02C7 - COLPF3S - rejestr-cie� COLPF3 -$02C8 - COLBAKS - rejestr-cie� COLBAK +$02C0 - COLPM0S - shadow register COLPM0 +$02C1 - COLPM1S - shadow register COLPM1 +$02C2 - COLPM2S - shadow register COLPM2 +$02C3 - COLPM3S - shadow register COLPM3 +$02C4 - COLPF0S - shadow register COLPF0 +$02C5 - COLPF1S - shadow register COLPF1 ;gr.8 letters +$02C6 - COLPF2S - shadow register COLPF2 ;gr.8 background +$02C7 - COLPF3S - shadow register COLPF3 +$02C8 - COLBAKS - shadow register COLBAK $02C9 - RUNADR - adres procedury nowego urz�dzenia $02CB - HIUSED - adres ko�cowy procedury nowego urz�dzenia $02CF - GBYTEA - adres procedury nowego urz�dzenia @@ -352,15 +352,15 @@ $02EC - DVTMOT - dodatkowy rejestr Timeout urz�dzenia $02ED - REVNUM - numer wersji nowego urz�dzenia $02EE - CBAUD - pr�dko�� transmisji z magnetofonu $02F0 - CRSINH - znacznik widoczno�ci kursora -$02F3 - CHACT - rejestr-cie� CHRCTL -$02F4 - CHBAS - rejestr-cie� CHBASE +$02F3 - CHACT - shadow register CHRCTL +$02F4 - CHBAS - shadow register CHBASE $02F5 - NEWROW - nowa pozycja pionowa kursora $02F6 - NEWCOL - nowa pozycja pozioma kursora $02F8 - ROWINC - zmiana pionowej pozycji kursora $02F9 - COLINC - zmiana poziomej pozycji kursora $02FA - CHAR - kod wewn�trzny znaku $02FB - ATACHR - kod ATASCII znaku -$02FC - KBCODES - rejestr-cie� KBCODE +$02FC - KBCODES - shadow register KBCODE $02FD - FILDAT - numer koloru dla wype�niania $02FE - DSPFLG - znacznik wy�wietlania znak�w kontrolnych $02FF - SSFLAG - znacznik start/stop dla przesuwu obrazu diff --git a/scorch.asm b/scorch.asm index ddc4d26..8b1aa03 100644 --- a/scorch.asm +++ b/scorch.asm @@ -715,8 +715,6 @@ deletePtr = temp lda #0 sta Erase sta tracerflag - sta oldPlotPointerX - sta oldPlotPointerX+1 sta GameIsOver diff --git a/scorch.xex b/scorch.xex index 500356a..87d5dbc 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/textproc.asm b/textproc.asm index fe72a05..c802281 100755 --- a/textproc.asm +++ b/textproc.asm @@ -823,11 +823,13 @@ NoArrowDown jsr PMoutofScreen ; display tank number ldx tanknr + lda skillTable,x + sta difficultyLevel inx stx decimal mwa #(NameScreen+41) displayposition jsr displaybyte - jsr SelectLevel ; setting choosen level of the opponent (Moron, etc) + jsr HighlightLevel ; setting choosen level of the opponent (Moron, etc) ; clear tank name editor field ldx #8 @@ -919,7 +921,7 @@ ChangeOfLevelUp ; change difficulty level of computer opponent bne DoNotLoopLevelUp mva #$0 DifficultyLevel DoNotLoopLevelUp - jsr SelectLevel + jsr HighlightLevel jmp CheckKeys ;---- ChangeOfLevelDown @@ -927,7 +929,7 @@ ChangeOfLevelDown bpl DoNotLoopLevelDown mva #$8 DifficultyLevel DoNotLoopLevelDown - jsr SelectLevel + jsr HighlightLevel jmp CheckKeys ;---- ChangeOfLevel3Up @@ -939,7 +941,7 @@ ChangeOfLevel3Up sbb DifficultyLevel #9 DoNotLoopLevel3Up - jsr SelectLevel + jsr HighlightLevel jmp CheckKeys ;---- ChangeOfLevel3Down @@ -947,7 +949,7 @@ ChangeOfLevel3Down bpl @+ adb DifficultyLevel #9 @ - jsr SelectLevel + jsr HighlightLevel jmp CheckKeys ;---- EndOfNick @@ -992,7 +994,7 @@ nextchar05 .endp -.proc SelectLevel +.proc HighlightLevel ; this routine highlights the choosen ; level of the computer opponent ldx #8 ; 9 possible levels diff --git a/variables.asm b/variables.asm index 0bd7e95..f4996e9 100755 --- a/variables.asm +++ b/variables.asm @@ -16,7 +16,13 @@ TanksNames ; DO NOT ZERO - ticket #24 ;---------------------------- ;Options DO NOT ZERO - ticket #27 OptionsTable .by 0,0,2,2,0,1 +RoundsInTheGame .by 10 ;how many rounds in the current game ;-------------------------------------------------- +skilltable ; computer controlled players' skills (1-8), 0 - human (no cleaning, ticket #30) + .DS [MaxPlayers] +;----------------------------------- + + variablesStart ; zeroing starts here ;-------------- OptionsY .ds 0 ;vertical position of cursor on Options screen @@ -26,9 +32,6 @@ NumberOfPlayers .DS 1 ;current number of players (counted from 1) TankSequence .DS [MaxPlayers] ;sequence of shooting during the Round GameIsOver .DS 1 ; 1 - it was the last round in the game ;----------------------------------- -skilltable ; computer controlled players' skills (1-8), 0 - human - .DS [MaxPlayers] -;----------------------------------- moneyH ;we place zero at the end of prices and money ;and have range from 0 to 99990 (not too much) ;money players have (maybe one more byte is needed?) @@ -354,9 +357,6 @@ ResultOfTankNr .DS 1 ;---------------------------- -oldPlotPointerX - .ds 2 -;---------------------------- ;PutChar4x4 LoopCounter4x4 .DS 1 y4x4 .DS 1 diff --git a/weapons.asm b/weapons.asm index faa6966..ee989b4 100755 --- a/weapons.asm +++ b/weapons.asm @@ -218,10 +218,10 @@ DoNotEor mwa ytrajfb ytraj+1 jsr Flight + jsr CalculateExplosionRange lda HitFlag beq NoExplosionInFunkyBomb - jsr CalculateExplosionRange - jsr xmissile + jsr xmissile NoExplosionInFunkyBomb dec FunkyBombCounter bne FunkyBombLoop @@ -1673,7 +1673,7 @@ SkipCollisionCheck jsr UnPlot NoUnPlot - jsr PlotPointer + ; jsr PlotPointer jmp Loopi @@ -2020,7 +2020,6 @@ mrSkipCollisionCheck jsr unPlot.unPlotAfterX ldx MirvMissileCounter jne mrLoopi - jsr PlotPointer ; pointer only for bullet nr 0 jmp mrLoopi @@ -2241,9 +2240,10 @@ HowManyBullets .proc ShellDelay .proc ldx flyDelay DelayLoop - sta wsync - sta wsync - dex + lda VCOUNT +@ cmp VCOUNT + beq @- + dex bne DelayLoop rts .endp