From 73c0b86b90b5fdc9911d34f6787e56445aeded28 Mon Sep 17 00:00:00 2001 From: pkali Date: Sun, 3 Apr 2022 18:10:47 -0400 Subject: [PATCH] build 133 --- display.asm | 33 +++++++++----------- grafproc.asm | 2 +- scorch.asm | 48 ++++++++++------------------ scorch.xex | Bin 33790 -> 33853 bytes textproc.asm | 85 +++++++++++++++++++++++++++++++++++--------------- variables.asm | 15 ++++++--- weapons.asm | 33 +++++++++----------- 7 files changed, 118 insertions(+), 98 deletions(-) diff --git a/display.asm b/display.asm index 1725dff..c03043e 100755 --- a/display.asm +++ b/display.asm @@ -7,7 +7,7 @@ ;----------------------------------------------------- PurchaseDL .byte $70,$70,$20 - .byte $42 + .byte $42+$80 .word textbuffer2 .byte $02,$10,$42 MoreUpdl @@ -29,7 +29,8 @@ OptionsDL :5 .byte $70 .byte $42 .word OptionsScreen - .byte $30,$02,$02,$70,$02,0,$02,0,$2,0,$2,0,$2 + .byte $30,$02,$02,$70 + :maxOptions .by $02,0 .byte $41 .word OptionsDL ;------------------------ @@ -46,18 +47,14 @@ NameDL ; ------------------------------------------------- dl ; MAIN game display list - .byte $70,$00 + .byte 0 .byte $42 .word textbuffer - .byte $02 +$80 ;DLI + .byte $02, $02 +$80 ;DLI .byte $00 - .byte $4f - .word WhiteLine .byte $4f .word PlotLine - .byte $4f - .word WhiteLine .byte $4f .word display @@ -69,24 +66,22 @@ dl ; MAIN game display list :97 .byte $0f .byte $41 .word dl -; horizontal line -WhiteLine - :screenBytes .by $ff 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. 132 (un)2000-2022" + dta d"Welcome to Scorch ver. 133 (un)2000-2022" dta d" Please select option with cursor keys " dta d" and press (Return) to proceed " OptionsHere ; 0123456789012345678901234567890123456789 - dta d"Players : 2 3 4 5 6 " - dta d"Cash : none 2K 5K 8K 10K " - dta d"Gravity : 0.2G 0.5G 1G 2G 4G " - dta d"Wind : 1B 3B 5B 7B 9B " - dta d"Rounds : 10 20 30 40 50 " + dta d"Players : 2 3 4 5 6 " + dta d"Cash : none 2K 5K 8K 10K " + dta d"Gravity : 0.2G 0.5G 1G 2G 4G " + dta d"Wind : 1B 3B 5B 7B 9B " + dta d"Rounds : 10 20 30 40 50 " + dta d"Shells : slug slow norm fast hare " OptionsScreenEnd ; ------------------------------------------------- NameScreen @@ -138,8 +133,10 @@ EmptyLine dta d" " ;----------------------------------------------- textbuffer + ; 0123456789012345678901234567890123456789 dta d"Player: " - dta d" " + dta d"Energy: 99 Angle: <32> Force: 1000 " + dta d" Round: 50 Wind: <22> " textbuffer2 dta d"Player: ******** Cash: 00000 " dta d"----------------------------------------" diff --git a/grafproc.asm b/grafproc.asm index ff81ab2..9096c3a 100755 --- a/grafproc.asm +++ b/grafproc.asm @@ -674,7 +674,7 @@ NoMissile ; calculate start position of the tank lda ydraw clc - adc #$25 ; P/M to graphics offset + adc #PMOffset sta temp ; clear sprite and put 3 lines on the tank at the same time ldy #$00 diff --git a/scorch.asm b/scorch.asm index 648a616..d847cfa 100644 --- a/scorch.asm +++ b/scorch.asm @@ -73,13 +73,14 @@ displayposition = modify ;------------------------------- ;constants -FlyDelay = 150 screenheight = 200 screenBytes = 40 screenwidth = screenBytes*8 ; Max screenwidth = 512!!! margin = 48 ;mountain drawing Y variable margin display = $1010 ;kill dos with the casette recorder! MaxPlayers = 6 +maxOptions = 6 ;number of all options +PMOffset = $23 ; P/M to graphics offset icl 'lib/atari.hea' icl 'lib/macro.hea' @@ -91,12 +92,6 @@ MaxPlayers = 6 ;Screen displays go first to avoid crossing 4kb barrier ;----------------------------------------------- icl 'display.asm' -;---------------------------------------------- - icl 'constants.asm' - icl 'variables.asm' -;-------------------------------------------------- -OffensiveTexts - icl 'artwork/talk.asm' ;-------------------------------------------------- ; Game Code ;-------------------------------------------------- @@ -139,9 +134,10 @@ START MainGameLoop + VDLI DLIinterrupt ; jsr SetDLI + jsr CallPurchaseForEveryTank - jsr SetDLI mwa #dl dlptrs lda dmactls and #$fc @@ -251,6 +247,7 @@ Round .proc ; ; the default shooting angle to 45 degrees ; of course gains an looses are zeroed + jsr DisplayingSymbols lda #0 tax @ @@ -479,7 +476,7 @@ LP0 BCC B0 CLC ADC #10 ; multiplication by 10 -B0 DEy +B0 DEY BNE LP0 ror ROR L1 @@ -613,8 +610,6 @@ PlayerXdeath .proc jmp AfterExplode - icl 'weapons.asm' - ;-------------------------------------------------- DecreaseEnergyX .proc ;Decreases energy of player nr X @@ -734,19 +729,10 @@ deletePtr = temp cpw deletePtr #variablesEnd bne @- - lda #2 - sta OptionsTable+2 - sta OptionsTable+3 - mwa #1024 RandBoundaryHigh mva #$ff LastWeapon sta HowMuchToFall mva #1 color - mva #$40 MaxWind - mwa #$0080 Wind - mva #25 gravity - - jsr WeaponCleanup @@ -820,10 +806,6 @@ ClearResults rts .endp -SetDLI .proc - VDLI DLIinterrupt - rts -.endp DLIinterrupt .proc pha lda #$02 ; color of playground @@ -865,9 +847,9 @@ GetRandomAgainX stx temp ldy temp UsageLoop - cmp TankSequence,y - beq GetRandomAgainX ;apparently we have already used this value - dey + cmp TankSequence,y + beq GetRandomAgainX ;apparently we have already used this value + dey bpl UsageLoop ;well, looks like this value is new! @@ -913,7 +895,6 @@ RandomizeForce .proc ; RandBoundaryLow ; RandBoundaryHigh ;---------------------------------------------- - lda MaxEnergyTableL,x sta temp @@ -939,7 +920,6 @@ GetRandomAgain mwa temp temp2 EnergyInRange - lda temp2 sta EnergyTableL,x lda temp2+1 @@ -1121,10 +1101,14 @@ WaitForKeyRelease .proc lda SKSTAT cmp #$ff bne WaitForKeyRelease -KeyIsReleased rts .endp +;---------------------------------------------- +OffensiveTexts + icl 'artwork/talk.asm' +;---------------------------------------------- + icl 'weapons.asm' ;---------------------------------------------- icl 'textproc.asm' ;---------------------------------------------- @@ -1132,8 +1116,10 @@ KeyIsReleased ;---------------------------------------------- icl 'ai.asm' ;---------------------------------------------- + icl 'constants.asm' +;---------------------------------------------- + icl 'variables.asm' -TankColoursTable .BYTE $52,$32,$72,$92,$B2,$02 font4x4 ins 'artwork/font4x4s.bmp',+62 diff --git a/scorch.xex b/scorch.xex index 8d50ce9096222e1ca394e0a0f07efa110a78748b..500356ac65fac339d6672cb346dd9c61ee5d16d2 100644 GIT binary patch delta 12663 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 pE8b?r-)wz^XX&v0y>9;|#$HOYQ^zPSD5Ych5QZ z+;h)8=iGD8jlWQLWs9zM)~)^Cw5(cXnt47&XPCJ$MKd#DvN!$K{@zu$Muh(&>Bbbp z%yB8Y8HVIl>@)L;3CTL$DxD_$Z-ylde|=)IE?H;L>F}+ak)FItGxLQMm*#;v6CSXQ zXWs^c_sv_=y$X2Wa$Cl%$C9u9#?L(&k1Sc4ouOH?QZs4E%A6&cnspgD37UTWZ}9%* zwuilmqXzfWj7(phsljKkM&n%R%+PqJj2h`(FzV)sntQUGOT!pVzgzIupM4EvUpKL@ zLF@~ki7VGSm#zi}@19Y^_6A2K#(5m0y$?*VnKcK`n_4v*tzI8DV9>D9kpo7j*y08Z z8$B^@c+#Y4mOm}ZT0N=rQxu4`6a^@?;^X~p?Ol5_S8mhChDOk6BD}e)S9-UtcI^FN z_3r41M0=EX@1c7J#d3-FPPP7rBfo0jfx{<0|EJD4V&(%23*8m_KltoSpCPwRnV*yY zF@6y`rz0n-wz!*X8iPdOCHYK{!GPdpZ()s zL&wgZGk4+Q<;A|b56{NleCL!o3-YQCe;0N4L#}6}gNIr!#M^s*GVK4>^Yf?f&x2i` zf4}B4=bF!-dww43`us=NXRbFeBZo76nj=|+WSx{OOwh^WbxHq<)d}NuChJ-$y*F43 zu%zLOP453}DHe+x-?Av@rN?^Hs9l>^n|$j`4XdwumttiC+2l*qSmAHB+YK$QCsWj zk;=u2NKk=27^8oyMdFtD&RcvxS$tX|wfam%()&gcX`ycbk+i%4 zmiXVc@Ws3R=Piof`qlzT%Lz%;pI0iptAj#{z=4?lPS+2!GDKDPf&rQracQ^C`Kd3Zd$vsdJ0jZDvO`;O(J43|6*AA zy!ax|Nahlmqd~pt_RT7ituYss)wRfss+(13--<{`3k?bPlJXcyV_f09m$>!Dthhqu zJbQ<}WPF>TrQ_-tP)kdRSiXiNz;XSSXp5{8!c(7>1}SI_3;JWP;gYKD~qA&xZVDy zg=zlAg=vn&MMD?ev1rPoKQ219NLl1^BrHl;)Pe8s96vfD(^<=qJ}iA~`i%5B=_?j< zi?=V97XSC+1B(+D9mQY5qAwOZIyfrz5jIfM=0~lUmatYow7Bl(pkBz~y;_VEl%`8d zx)(?+PU~Ewklt_K4Ap1y#k0R4&eKHBrNZaL^!f^BEx(r%8HbgOL$7`ubIM=o*hlIc z>Ij+H6ddv~B1BO6Ln1^{`6D7kQTYTBqA8ouz^*ZVRmz@Ha|8lQk%FGG)uvb#;WS&I zFW3T+q~UIzqe0Bg`U9Wq*0qEo-rvs}$w5gjBj7GEKcG<}L|5Qotseay zU8`t)Z)xX@!>??V@N0Ortb0_Np-d}S^gT-ZKAf@5^uS^xW(TKWvy)d4W0o#1 zE+hF9zxtj2K!1FFJ;PbbpLBh=44Tdk9 zRuG7nthc_B?qFkaQO2yhvx^B|DCPyU(0^{=-r5%H*&-?CdJ60XR22yQ^#VqQ^v6^m zA6^YXU7H(wwK{!{3n5d($OX#~4#tuy7Gu_%XYvK1Aj7jDbIJUBelw!X7O7e&C6Y_n zhUF0QC|1cuu}b+At5iV60)eL@FKnjbW?>5zw+MyQ)R2p{Poi=j<#S~h<@4lx%DdzO z%JKO!Px%6QGv#@C3*|S2dQ)8X`=L{&= zn5E}AreP!EI1de*+jJof!(JM4Gk427i84su!T8tqlQ&Rv`wq}*Qe6wB|BCfv{OG>SVia`_$N&Wt>MXWb60OA|4~$lsD!t?(_8 zt_n+-6D}ochx@(T(gt%&i4rgF2*fJiiaP`M2cv5v!F5TP;u?-EI}}|D_%?<+S(J8k znjP$qIV~ZEXi0~jN~Agt1H?*NWA?WMK<3jBQq0SOl;xVb9S}m@AHAb3Bkt>k;a$OW z3=q`0=bAy)rsZ8FGnjoIV^QQoHi3^=6hZt{S5=v0y0;Lcc}p#KaNZ0MKE()kF~X-2 zgZW%OPkN7cF{-EF(DE)gwEQ$2n#DJS$7_3Ng%V~RKij^mOVpU64aSxT1eR4Tkd|C1 zB(G5U=3N)U?bYD?TRTb!{>$JXkl6w;W5{+PG-?~R_$Jubi`R(ZfTNBgCkG=5@|(!X z0i-q_ZRBxiA*BoDRi;$lyPe#@{dIX@8?vxd%LCPT{5dmeS|A}fHINuwABY0r`{jXX zJdBxv5qLbB85oO)Inz3Dx%{{;DG_whRrQ$`>x|{HK~X7ysw}=TfGGMa7_pZeZoT#7 zvYw(?PjW1(41npzK{EGYbg>HPe`){$G;mevdulKYPSQYn5TJWyu^E^)m7K8yKKZl? zKQ)#hKA}&vG>$JcE$0I-1Q~@i7s;ziaYdy7J~@P+7u0i%K5TnFy1y@Z4fTYflS!@R)Cq$H}|FGXWV$9}HFLwdaW z2eX!>;e;=l)IBzLct0!?t`F0M^Penn!xmIf& z7fVBC*wl|IZ8fpfZ=NCeh%!*^i~Uk>Em|RiwU2Z>N91w>(BN{d?88g2Uu7}k4||VN zB17-x1ZS*rqQZiD$fR}&_6xb|z4s?_Gl`N2iIg}-6M;o5TA^mLF}w$0M8Gn!Ox*!J zf$1S4ol1mxB5zCOLkx#h7E6=)LN!>%V0Z1BrwLmoOZzK}XZwgdmQ6cL>zhqjs~-m9 z2%0mQ%CVoPg}`QXZwo`QgQxwrVdUpv_SPX;A(;YtWsEA~{~{R2*5`&C#NCk1^ii}2 zOBx8)RyfHPRyakl^1>%<*@aJu^ta9(1G8!+LK_kOL9i#WxWv2o{DjkF+!v(gb5fd1 z4Fko6PU2;AT}X;;+D_#@JOnE4FU)_#P*Azs zu;&qCh!3edio=@S;*_D7;YRr=$v#AoW<%rIjm#6F^z0_)jMnv!n1OEZM7MXM+f_8{ zA1zNK%ALVTJc6T)^7|w^MODrrlAWsRr;+(>Bf&0;XA`j=1)r;hDH1>xGA952Gk!6kbNL9TY%b zyYKzVPFdYRg3*N~4aE9Nw#2Dt6f8!s$k;P5CehHr2Tq9zb8jpf7i#FL$CZtLUFQfWMYG0F>%~nK=OT>VK8R*jI`F4fcG4Sew9-t7Q%l zB7*~j$Pjc@GCbd4-kcm4vQfQt*D6R9&<1aC-`*n`ODVJ-c0%UBbhqJJFuE&~fn&C_ zhuMx4&f%d)xB;i68i7SV=>ZxEWm&lfgB|wN-Ucu>%RRk(!IV;neo)zACv%6x&R)X- zRjy&|c$T0thCItr%j!J5t03PrY!L{q>45mJg^5)}_}{^i0>!dq#`_n&2@D{@H923; zQp0sBUMOzB_Gb`Bg$CZ!_#sOTXOhNaq;|S7i;JlOFiXS0`a{Qv`%d^)<444OTU!Jk zwZqh|@D;(MZb4=0*5p;UrtQShdImMF-HxAIu3G3pqMp5h3h79pvo}&XTQG&AD41mR22*afX!2w1A5x3IBW__C)wo)!bB%ULZ!Pmh8 z-(}*vNWACn8mlYM@s7BAB=-{v%Rg3VwxW*PdOAwE2xgn8qx_SK)zbbFjjmLy6B3R& z(l9zIl}06VdWD8fHyU-&+V6dDTe=&YJui4Ze%lgkFEm_i1!glQA$nN7^iwsT-dB4m zl(#r=Y=I+*bYPbr|p2ZwnaW4YMn#NeL^e)3Yq{WM)dGr zv5em?dU1jfx8o$?Kz@eBAB#M2F7J^ivgZL$(Bw|U2|@WXd_1tOUxOos;b{0Yfu^H^ z!_42du$lh=PeM7nFHz0^JUhH^F00UN_WJvhlL;g^!aW>9Col@p<4Yi{9yFKh|z|=Sr+f z6|M9K5Dfs)T?U%b#v>itw-#^JvG#)pOWv|n$Jr}1^|MlOu~2VG^^H<2>YO{O``GJe zr^0Tknz`Yc79OQlVsTs?YS|l8cl|4+_2B*(en$n$m1q>ZGMBslRm=^fKb{7mDj~6O%bhiK@pv zOx3Jf2K4U#vxyshUwMS5z$g}E-Ne5n@>v>wFFJw0DS2b1hrx$*!K)bDpE(QTVm#54 zhR6g+Ca=c*nWm)&}d&{HhUh)(i+<&9;!*dE}Cwtj?I=Qw_bvE5~7wyOfy4p#1EubAv$|M@i7ho~?*3-#Kj8ubJ zPvQB~(}Q~Jn8)Omv@wU)>V+H%j^5WE8Ztbg3e%d*^P3B{Vpv2Ret(T}p^`s6Mfnbc zF&eIh(SS=2nsF*kit?SQVLh{1RzjG$J`f*FM5!SjC4`A6E_`Kmu6IEGVBe;d)G!ol zhB@qeoHf{SWhLz)58#Y)U`Gh*q)IYoRak-^+`h-dP|P(N(`HaPhZ?gI8&}fWSToqP zC1Oq?9u_T3L+RUXGu9>Rr5a{HQ(!>qxLveR-AY=27qz<9vzG<5vbZWZo!!D+s+tAg zfEiuNTs#YRZ}nBP24&9Tcd+fny>pO zdxN=6M(IrxvZ3(GG#EPARFgXwr)DMfK00^ckd5UjrGt`71}B$JOD>t746A1*%kvEX z{M> zflo|?Pb6i1b{R#QcnGz~PZQZBwv z#{@qqUEPOT>;F>?EE_g>H_RKvt)@Y3gGzu+=G;Wz`H7{g8BNC;DzBj^9@*JHHM@VWdLZOq!J+#;{pC_F~x$JN#V)_R=E>(y2iYpti{`ufMH=Oyfaj&f~9 zjHF3e+ly(ii|LnPrfSE>=OAH)lMro}6&uFQ ze&5FDN}B9LHk=h3Z77irDDF^fA@Ld&oANfQ9wirT)fa8@_l(OA;8N$oR+z+iTtaX8 zN7nZz)^|&>kpnC%Lbzme>pOn5bzHPr7j1ID7XQUWxoneW30G{=8^ZTCDOLEvCjZL@ zQu(q?_|Ya`u?atgZ&T-PLdys~S8Vbo+PEM!I2qAbx)9z0k~d0cet`wogGVq)ieqF` ze|02eNC8XNaMHwveq-m{a9XuVwDd(^QMiZtk4cj$e?%p*A3ooZidZ9iQyY8#0 zxC;91tMFT7Z@Owrj^`j@Xa?5Lo{*aU_aPjwO(ON9?-O20K_<_nJ_LbN)R2b#UoG%5 z=-+xn;SJaBy4aiH1l)ay15xFPb)H>+Pl4xx2dWm>%TdpTHogk8Ik5qVu_XCsi4#tw zKvN&4NOR4XQRrPutLmSa$`@Lf=9=3?wK)<^=?O-H3T}#Yyh{{TO^OGHa|{zq3C2lJ z81O{nT#B3mUzbyf*OWf+4ou*mUA^E@-MP-5aIV9S4?BpklXxFZCuwdRwp`7d`6@BL zc?&ODr{@99fSa3L0B&i{=Or=k0FM+p_dtQ$D7#q=ml5PP7x1E(*Ua;k)<^Ta`o*`5 zugVjv_~%85uMkCau0+@8K~uq3vThORCW?`jkyVir_WfsF-Uk=Y=5BBq#hQ#-zDE3O zMjiiG5GF+^{l#aX<7W|r{tFrVbNqH|iVGkwK-&TG093{(wTi(gdNX$6VtRYV(|o?w z;WCT6n!RX0-Mk&eD$wW{jVI$tK36Quc#6-n7J%kSgt=Vtspc|{&ofD`mS>Q{JS#qX zpaS!J=D_nvd%n#RSr>E=!QSymDY0sbI(Fb(+_955PzCFY!j&F(HLQ9zQ_NSUhVP8- z7IPtB9(MZfc**JrqU*57JqR&Cy>arei=;9l-r*9w?8*tJ=bs<*xAAUV)A29B0)2S# zzQ1JfkdpkCZAQ_T6~p_)zXaoxzgFZ5!ttrr8dR0c+H2+>`` z!7DG#Ms*+MbClZ~4Ci5G6R9wXg^tM-AxJ$9Rvp6G@GSN&r5$^h(rT0^(oGX)fO6MN z{KlqZ5|t;>U1_8PT_#gjY&Z})R1P<80&hlhC5@;B`$V*A^{3JZiW^B+(7-{3vnWR$ zEZhNhAXgcLQpbTj4_B_LXMPOIu6qYmQJ^5**&^@YWw#^@nu;s)VN-dY z{ixzLFIhIy5DTBZA8EX%?j;Z&Eb?wzX1WHbDe}t826N>(sC!@~=A)Wq#A_DeUqmBo zHeaPSi}~HG`2fEMR^wt{L! zy2>@4m*fdFc#BycN84dVU^AY!-${k>>?M#~dpnMh6R34)p%E0>ofO$!6i>Oi$Oc32?{1=Hw=>B1jTW`JE{X3EA zp=K^$fRMzC1xeAu82Sf(S;4aK-wOpb?c^zxcPd@W{M)AS1>pS9be`u+YsOG^P0+Wl zK+w^lBW8FCtZx>ojnt$W=p^eXNWUZhm5H!P{(uB6<{b&0YYOh`G27+ zs7K6TVe}amT%Tp7Hk6d3ClMPa#moR^#Kpx)9IL%3+ZNZgvWjo(@xU01Yg5DaP82%G`V8O0)m z>LRzUC4`Bk($!u480MNe^g-3&&N%A40gpb^*&mO1>Kwq~ z*_S#8;*mg|H{y{Oqs~#( zIh;Cgr%n@fj>aiwhdh@AabH~#?HfdWBM=c$<$``=>CizGCw{#4gH7PIP*sNa#fSTH zF?Oc!2tj9;qwVmSDE3?d-xBn8fFteIdVBqr(wZoHFan3JxG_S69X}(}6ou?vj<7dH z+G`^1N=u6ifhiw326i^}*J);1Z^vOm5BesMVFaCB*@JDk$B^7_9y31FkFDu(+|rxd zRW{cVOroytSd4>2J0rpq^4PSWa)JW!EtyZ!Eb_* z!TLV7A%pcb+qz2@<)*?qPw*%9BU*t`uK$a`q#eto)iRa5##EvUsRSD7DyQ_2%{#++Blo6|=HD-*IX)1EmEP0ipQEbY zUK;!(>M>X(RAkCftl_;V)Ub2#fik3h-UA-@?Pk%7U+W#Wh})aXP`>FNr@nQT@lj7; ziCf2tHV!F*-vOmTXf1?Jti515EWEoz=@{scVtQhRs~GRM&fo3byP+^f_r$#a0TFJO ACjbBd diff --git a/textproc.asm b/textproc.asm index ae1847d..fe72a05 100755 --- a/textproc.asm +++ b/textproc.asm @@ -14,7 +14,7 @@ Options .proc ; this function returns: ; - number of players (NumberOfPlayers) ; - money each player has on the beginning of the game (moneyL i moneyH) -; - and I am sure maxwind, gravity, no_of_rounds in a game +; - and I am sure maxwind, gravity, no_of_rounds in a game, speed of shell flight mva #0 OptionsY @@ -103,6 +103,11 @@ OptionsFinished lda RoundsTable,y sta RoundsInTheGame + ;6th option (shell speed) + ldy OptionsTable+5 + lda flyDelayTable,y + sta flyDelay + rts ;-------- ; inversing selected option (cursor) @@ -131,7 +136,7 @@ OptionsSetMainLoop asl adc OptionsTable,x ;OptionsTable value * 5 tay - ldx #4 + ldx #MaxOptions-1 OptionSetLoop lda (temp),y ora #$80 @@ -180,7 +185,6 @@ OptionsYLoop ;------------------------------------------- ; call of the purchase screens for each tank .proc CallPurchaseForEveryTank - mva #$2 colpf2s ; set normal color mwa #PurchaseDL dlptrs lda dmactls and #$fc @@ -217,6 +221,10 @@ AfterManualPurchase mwa #ListOfWeapons WeaponsListDL ;switch to the list of offensive weapons jsr PMoutofScreen + + ldx tankNr + lda TankColoursTable,x + sta colpf2s ; we are clearing list of the weapons mva #$ff LastWeapon @@ -820,16 +828,35 @@ NoArrowDown mwa #(NameScreen+41) displayposition jsr displaybyte jsr SelectLevel ; setting choosen level of the opponent (Moron, etc) - ; clear the name and place cursor at position 0 + + ; clear tank name editor field + ldx #8 lda #0 - sta PositionInName - ldx #$08 ; one more because cursor could be there -LoopName01 - sta NameAdr,x - dex - bne LoopName01 - lda #$80 ; place cursor on the beginning - sta NameAdr +@ sta NameAdr,x + dex + bpl @- + + ; copy existing name and place cursor at end + lda TankNr + :3 asl + tax + + ldy #0 +@ lda TanksNames,x + beq endOfTankName + sta NameAdr,y + inx + iny + cpy #8 + bne @- +endOfTankName + + + lda #$80 ; place cursor on the end + sta NameAdr,y + sty PositionInName + + CheckKeys jsr getkey ; is the char to be recorded? @@ -1492,7 +1519,7 @@ FinishResultDisplay lda Energy,x sta decimal - mwa #textbuffer+40 displayposition + mwa #textbuffer+48 displayposition jsr displaybyte ;--------------------- ;displaying quantity of the given weapon @@ -1535,7 +1562,7 @@ loop06 sta decimal lda EnergyTableH,x sta decimal+1 - mwa #textbuffer+63 displayposition + mwa #textbuffer+40+34 displayposition jsr displaydec ;========================= @@ -1547,9 +1574,9 @@ loop06 lda AngleTable,x bmi AngleToLeft lda #$7f ; (tab) character - sta textbuffer+52 + sta textbuffer+40+23 lda #0 ;space - sta textbuffer+49 + sta textbuffer+40+20 lda #90 sec sbc AngleTable,x @@ -1557,7 +1584,7 @@ loop06 tay lda BarrelTableR,y sta CharCode - jmp AngleDisplay ;like jp, because code always <>0 + bne AngleDisplay ;like jmp, because code always <>0 AngleToLeft sec sbc #(255-90) @@ -1566,12 +1593,12 @@ AngleToLeft lda BarrelTableL,y sta CharCode lda #$7e ;(del) char - sta textbuffer+49 + sta textbuffer+40+20 lda #0 ;space - sta textbuffer+52 + sta textbuffer+40+23 AngleDisplay - mwa #textbuffer+50 displayposition + mwa #textbuffer+40+21 displayposition jsr displaybyte @@ -1581,15 +1608,15 @@ AngleDisplay lda WindOrientation bne DisplayLeftWind lda #$7f ; (tab) char - sta textbuffer+79 + sta textbuffer+80+28 lda #0 ;space - sta textbuffer+76 + sta textbuffer+80+25 beq DisplayWindValue DisplayLeftWind lda #$7e ;(del) char - sta textbuffer+76 + sta textbuffer+80+25 lda #0 ;space - sta textbuffer+79 + sta textbuffer+80+28 DisplayWindValue mwa Wind temp lsrw temp ;divide by 16 to have @@ -1598,8 +1625,16 @@ DisplayWindValue lsrw temp lda temp sta decimal - mwa #textbuffer+77 displayposition + mwa #textbuffer+80+26 displayposition jsr displaybyte + + + ;display round number + lda CurrentRoundNr + sta decimal + mwa #textbuffer+80+14 displayposition + jsr displaybyte ;decimal (byte), displayposition (word) + rts .endp ;------------------------------------------------- diff --git a/variables.asm b/variables.asm index 99b69d5..0bd7e95 100755 --- a/variables.asm +++ b/variables.asm @@ -10,9 +10,18 @@ ;===================================================== ;-------------------------------------------------- ;Variables +;-------------- +TanksNames ; DO NOT ZERO - ticket #24 + :6 dta d" " +;---------------------------- +;Options DO NOT ZERO - ticket #27 +OptionsTable .by 0,0,2,2,0,1 ;-------------------------------------------------- variablesStart ; zeroing starts here - +;-------------- +OptionsY .ds 0 ;vertical position of cursor on Options screen +flyDelay .ds 1 +;-------------- 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 @@ -358,10 +367,6 @@ CharCode4x4 .DS 1 plot4x4color .DS 1 ;1-white, 0-background -;---------------------------- -;Options -OptionsTable .ds 5 -OptionsY .DS 1 ;vertical position of cursor on Options screen variablesEnd ;---------------------------- diff --git a/weapons.asm b/weapons.asm index 0f488a8..faa6966 100755 --- a/weapons.asm +++ b/weapons.asm @@ -1648,19 +1648,9 @@ LWindToRight bne nowait lda color beq nowait - ;wait - ;this is where program slows down the flight of a missile - ;possibly it is too slow to wait till next frame... - ;we will see. - ;---2003-08-01 yes, it is too slow!!! shorter delay - ; must be here like few sta wsync's - ; half a frame would be the best... - ldx #FlyDelay -DelayLoop - sta wsync - dex - bne DelayLoop - + + jsr shellDelay + nowait lda HitFlag bne Hit @@ -1879,10 +1869,8 @@ mrLoopix sbc #0 sta vy+3 - ; 2 waits for 5 bullets - wait - ;wait ; speeded up build 131 - + jsr ShellDelay + MIRVdoNotChangeY lda MirvDown,x ; if bullet is already down we go with the next one @@ -2249,7 +2237,16 @@ HowManyBullets .proc rts .endp - +;-------------------------------------------------- +ShellDelay .proc + ldx flyDelay +DelayLoop + sta wsync + sta wsync + dex + bne DelayLoop + rts +.endp .ENDIF \ No newline at end of file