From 6b68066c941c46423fd7c7c879bee3b5bc55bdea Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 23 Jan 2023 14:21:02 +0100 Subject: [PATCH 01/17] Visible targeting bug --- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49333 -> 49333 bytes weapons.asm | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/scorch.bin b/scorch.bin index 07e81050707bef5e570686da06c8e1cde2b810c3..daa159c5d592d40e85a63eb9f4b0077f47720e93 100644 GIT binary patch delta 16 XcmZo@U}|V!+TiHR$h+Cecb^deFGK}{ delta 16 XcmZo@U}|V!+TiHR$hO(Zcb^deFB%1W diff --git a/scorch.xex b/scorch.xex index d277f07c73498908b35236b8b2b63a76256cef11..28f2aba429e61cd1034b1ef465779ea9759f41d1 100644 GIT binary patch delta 16 Xcmdnm$h@_Yc|%zrBk$(&K06}-IrRoz delta 16 Xcmdnm$h@_Yc|%zrBirWkK06}-Im-rC diff --git a/weapons.asm b/weapons.asm index be8e5b6..d4ea51b 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1805,7 +1805,7 @@ SkipCollisionCheck bit TestFlightFlag bvc NoTestFlight bit Vdebug - bpl NoTestFlight + bpl NoUnplot jsr WaitOneFrame ; visualize AI targeting jmp YesUnPlot NoTestFlight From c41c01cee0acd2229fd4b97125593af189f358ae Mon Sep 17 00:00:00 2001 From: pkali Date: Mon, 23 Jan 2023 08:36:19 -0500 Subject: [PATCH 02/17] readme updt --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c5087be..402a764 100644 --- a/README.md +++ b/README.md @@ -55,12 +55,12 @@ With the advent of [fujinet](https://fujinet.online/) we are thinking about maki 2023-01-23 Early morning edition. It is 5:11 am and I am writing this instead of dreaming of electric sheep. -For the last 6 weeks theversions we released had an awful bug - the conversations of tanks were completely invisible. Thanks for pointing this out, RB5200. +For the last 6 weeks, the versions we released had an awful bug - the conversations of tanks were completely invisible. Thanks for pointing this out, RB5200. - tanks talk to each other again -- better stochastic non blocking wait one frame -- rare dstance measurement bug fixed (rarely a tank survived a direct hit) -- 5200: second fire works (by RB5200) -- "visual debug" mode in A800 version, triggered by pressing [CTRL]+[HELP]. It displays distances measured, laser aiming and aiming technique. It leaves a mess on screen, but it does not impair the game, just makes it a bit harder. +- better stochastic non-blocking wait one frame +- rare distance measurement bug fixed (rarely a tank survived a direct hit) +- 5200: second fire (by RB5200) +- "visual debug" mode in A800 version, triggered by pressing [CTRL]+[HELP]. It displays distances measured, laser aiming, and aiming technique. It leaves a mess on the screen, but it does not impair the game, just makes it a bit harder. ###### Version 1.25 @@ -671,4 +671,5 @@ For the first time Scorched Earth for Atari XL/XE (build 103) published. Together with Pecus we were working on this piece of code for four years and it does not look like it is accelerating so we decided to publish what we have. Last few weeks I was translating source code comments and labels to English to let other people work on this project with us. In other words Scorched Earth becomes an open source project :) Now it's your turn to help this idea happen! -...transmission error...former history missing... \ No newline at end of file +...transmission error...former history missing... + From 0832d841f4ee375a68cff5036e8314450706590a Mon Sep 17 00:00:00 2001 From: Pecusx Date: Tue, 24 Jan 2023 09:00:43 +0100 Subject: [PATCH 03/17] Small talk - small fix. --- artwork/talk.asm | 4 ++-- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49333 -> 49333 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/artwork/talk.asm b/artwork/talk.asm index 34ae5a1..81b049c 100644 --- a/artwork/talk.asm +++ b/artwork/talk.asm @@ -124,8 +124,8 @@ OffensiveTextTableH dta >L0,>L1,>L2,>L3,>L4,>L5,>L6,>L7,>L8,>L9,>L10,>L11,>L12,>L13,>L14,>L15,>L16,>L17,>L18,>L19,>L20,>L21,>L22,>L23,>L24,>L25,>L26,>L27,>L28,>L29,>L30,>L31,>L32,>L33,>L34,>L35,>L36,>L37,>L38,>L39,>L40,>L41,>L42,>L43,>L44,>L45,>L46,>L47,>L48,>L49,>L50,>L51,>L52 dta >L53,>L54,>L55,>L56,>L57,>L58,>L59,>L60,>L61,>L62,>L63,>L64,>L65,>L66,>L67,>L68,>L69,>L70,>L71,>L72,>L73,>L74,>L75,>L76,>L77,>L78,>L79,>L80,>L81,>L82,>L83,>L84,>L85,>L86,>L87,>L88,>L89,>L90,>L91,>L92,>L93,>L94,>L95,>L96,>L97,>L98,>L99,>L100,>L101,>L102,>L103,>L104,>L105,>L106,>L107,>L108,>L109,>L110,>L111,>L112,>L113 dta >LEND -NumberOfOffensiveTexts=54 -NumberOfDeffensiveTexts=60 +NumberOfOffensiveTexts=53 +NumberOfDeffensiveTexts=61 .endp hoverFull dta d"MY HOVERCRAFT IS FULL OF EELS!" hoverFullEnd diff --git a/scorch.bin b/scorch.bin index daa159c5d592d40e85a63eb9f4b0077f47720e93..0271c6e10c0611d84eae7f39ee5903310dbbd090 100644 GIT binary patch delta 23 dcmZo@U}|V!+HjAL(RA~DzE##hs>`d)6aZ?-2*dyY delta 23 dcmZo@U}|V!+HjAL(QNa5zE##hs>`d)6aZ@52*v;a diff --git a/scorch.xex b/scorch.xex index 28f2aba429e61cd1034b1ef465779ea9759f41d1..e97e3f2453c45ed8fab50dd3826beaa9c38d8ebf 100644 GIT binary patch delta 23 dcmdnm$h@_YdBbLZM$^q({JCs^)c)>oCIE8H3A6wJ delta 23 dcmdnm$h@_YdBbLZMzhUZ{JCs^)c)>oCIE8a3AO+L From 6b2eabd1caae8d2b2035a6e906c03e388b8935de Mon Sep 17 00:00:00 2001 From: Pecusx Date: Tue, 24 Jan 2023 14:20:29 +0100 Subject: [PATCH 04/17] Nicer Lazy targeting amd "visual Debug" for Lazy Boys --- scorch.asm | 6 ++++-- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49333 -> 49334 bytes textproc.asm | 34 ++-------------------------------- variables.asm | 2 -- weapons.asm | 41 ++++++++++++++++++++++++++++++++++++++++- 6 files changed, 46 insertions(+), 37 deletions(-) diff --git a/scorch.asm b/scorch.asm index efe486a..43b66c6 100644 --- a/scorch.asm +++ b/scorch.asm @@ -15,7 +15,7 @@ ;--------------------------------------------------- .macro build - dta d"1.26" ; number of this build (4 bytes) + dta d"1.27" ; number of this build (4 bytes) .endm .macro RMTSong @@ -27,12 +27,14 @@ icl 'definitions.asm' ;--------------------------------------------------- -FirstZpageVariable = $59 +FirstZpageVariable = $57 .zpvar DliColorBack .byte = FirstZpageVariable .zpvar GradientNr .byte .zpvar GradientColors .word .zpvar WindChangeInRound .byte ; wind change after each turn (not round only) flag - (0 - round only, >0 - each turn) .zpvar JoystickNumber .byte + .zpvar LazyFlag .byte ; 7 bit - run Lazy Darwin, 6 bit - run Lazy Boy or Darwin (!) after inventory, 0 - nothing + .zpvar SpyHardFlag .byte ; >$7f - run SpyHard after inventory .zpvar Vdebug .byte ; "visual debug" flag ($00 - off, $ff - on) .zpvar xdraw .word ;= $64 ;variable X for plot .zpvar ydraw .word ;variable Y for plot (like in Atari Basic - Y=0 in upper right corner of the screen) diff --git a/scorch.bin b/scorch.bin index 0271c6e10c0611d84eae7f39ee5903310dbbd090..fe6f0201ff6603536d8883fef1262eb0401eae3e 100644 GIT binary patch delta 11927 zcma)i4O~=J`v1J~>M-}Jn1e5HQA80-)XY)yr7}aj<{RR>T@Vo*MF((AR~R&}p)odi zO+lR;kxN{1a8UQxj_U-qK@4R(mAc#RPuEHbvUR66Gd1!5J$DAwe*Hebzom1}bDr~@ z=RD^*&)Yf0#j4_Bl~Wh293W7^Pbr@krUxHU_C3`WoS;(fK1GKeP%3{f)P#?pw=GrT z%JLa1*52EdwX9;_({-A*Ge^zVvCR1S=r{5-zl?F_Nj(V3OWDkTR3^!sTJ30ckD>}= zC|e9=Rd+^F(J|EIC`#|{EdzT~?g*+din2wJk4r-+E8`7C-=###`j`P9_Yx_ajC5}Z zL1H;pQUHKYy*pbbkxjWXWD*(Vql-kgOu`Hr*)k0oi_plR*kgo7Hu-E#QnO*KLreLB znHSfvM`qrTXsHixV?UTF1(S887D)a4RnETt zwpY_i|I9fSM(PVwC|e4}In>lSqt;59!M&Q2`tdgA^=$Ufv;Di_3w4)MJ~flFx0Uu` zhU&HMV2U@^Vxzoj_LUc<`~2UTGpi*fUsG*#=PlrM%%oiA$XfSOt#1JH+<|H%8qB?U z;y_QhSIxv_ix+)Lj@7*AK0`qVZW49a&+K?ryl4g-4MGi+_EMffzDN(_3-=^?qnIDc zFc9-yZbT44VrqG!szUzx-vWuAWn?xgDh^6c_ z5?QF3OB-A1|5O+5G#-DG@&;EM%Wb8Uf0UW&%&H8+y0AUWz&Wk-kJ4kjjYwe{t+=+y;q5^rEiMJYzt3i8&%$=@NsA=n3+8RotP#0%QlAGRc7$K|jJ4kO{thD(99JOb^G4D|gwUB)mlmmaS5i3|o^#hwISM}A;I0$m zD8`(ygxOF;RF5#XRO?X@c5La9w$+igd??R#Huc5QNt8R0(yyCD6wf^b2DTg%fl_0!~t_rGF#N0M5@!>_;noM^ajF-h%l<9ALq=ouFYW z7nD7F$1d`!?Dt#h7hCj=Z57!y*;A9tlQBWx#;Qd=m0elCSQy(gUO7lu*3+O|D7=C1 z!NS>|F%yI5VI5{m(0RS1P?s~zQmC`4Zxrb~SG+wP_<713F8KhIk}O3!(VnDgvy02Z zh`kh-36J%PQ7#jn>NWO>V544jY} zfQuI{EsFH%tihd&BH7USm*szf2v&B31(~f%g&U`Q4%L3u;k`+YL0+X|!Ond59O}|s z$`@;m;Z5$j1VJ>}=2GNno7^E3Mxz}8&GUXH=6hSQ=a!?CBS-7e_`*_hk5c3> zN0!+LILF)+>Us~3F)Z=YVn1KF_q=q^8!QERRnlEzitPFwHiF~pJ*pQBLl{hueI~Ok zm1EzY&%_90A`>YrYeH%X1nCL(hKv|=YF(sGsVq9SwNHqu%_I~Jh%&onBmbgesGOP}dX*Aif`w>N-j0O$$w9z!<)-}QoUkXOxQFGrKmR(nIlr88pq zrCimbmPR#{S+Qf0>*WRfV%P5%@JqNZ|DAv}5`8GBsm}jSLowHuH->qC)QhH^aNcB9 zwdL6rV!@?!EpttHci=>Gy0)cdhvRsLwo>7GrvYxzb+!SXkSM~xkFV6a-fQ6hc|23= zYHqL`p^mT8x;|>KtkE9N(z^cMU+cL_!VaPqs=H9VJ$!7r0o_~C+RJ-bTE8hOU0H-nr&GjwZp4D z53e==D?V1Sv7yq_&;=cIA(ju3`p10@gEkOe zIN*dNGn4{?q(x(RczCTlQCl%s*WS_?>iw~5nQPY)%i}t!FAS&=VFUj*!U_Jk^pt;c z=G81|JD({<@~bKpdyde1>@+iv!vupIm9)1HhLplQezBhRX z)Q(uQERzjNm!9vQ>Ai<$x|+%#aDAJ~msgqU56Fz!`$&qiOd{jkqKSFz0RJ|juI!>N z&*$z)vunzPA+f!by#+(;6Uw#1>e#21^MtC{shV@?4!dw7wx6IH)c=X#4D4Z&X+$NR z6k65bT2HfMGw}O5U2Uu(!Q<`1G#nCW!tGgUwg_S7py6i1lAExkuRpNakyduVlWEmR zE6WbZ;_dqqp%o$1f-@|ou-h_01VWxzZ*M5I4UUKedw@XO#ydR8Z{g0fYvvL}meK22ql{e?XQMVK4+*nEPe<6z~(&wlkFP1@>@e+g0%@ zY`6w|Tt%}POXkRkEa_iY}qQvMXT2tLQ5VZ$u-! z@3|7;hxqt8f!?c*D*9Z>62g?Finc3(Shf+t23NNr(!I5sKk5E=HGis|{F_JGCWC0Y zc9PE*^RAuZNyxd~RSB=}su8k>?hgNMwJdvmPNMM3&=}=VVZgBA%09vi!>JCZ5g{{YF1meYO9Q{6u2XZ=D4&Yz%;y3KMM~pE^kat{icK| z?Y6DjmMfv&|43@fF0HinH`nwi51*JLlfuP%nGtqh4p{~AM0p$ii#79Kuvb@0zW|o{ zKt2Sde;7^1BK3fq^8@MW@U=|zTH>vr3mp6V{1FnLNpU2CPc0$=nu3o&#&71AVNRWW zqU^%`;;<|Hf~cLglVpz-L$oAzM^uo+=anSsNOUvIAKkF0*JLN#m9?-CWhT42+pm|I zaJYIPxHY;{1SYYM83I%A8_`@wJbM~EJE77WZX+)TPKmg8e}6XV&j|EKKh$p@>?pw` z*)=UhY-;wp6$ARsvGgDlm>(5c>&7<+`sJ9;e%wmsoU zBl|gT+UkUUBchXiskTbW{Znd=!d6344i94umia>Z0H1(Zt=6VUYQOTm_h(Kz2&pbX ztmQ+jmBbeyTFmn-^J+wsCrcO{vhd)uG)CElyY^XS!_ClJ+c#)js)T) z_3J8fIw~C?)fGtYO{%N%DJ{;UD_~Efjr{ z`vGnkP{ecK^AkQ#^d@N~v)OWk1e(`%zP<)Yam_@SxRwWj6#<5h8@lOvS*C~oiY5^L zuA3$-4%%OKx4}U!QLzFNTwVx(UnN3Y6zN&wi*xFLZnk_xh_~pHebEN#^u0xq02ZMQ z;72-NI9lX`06Y&-MuDgM1XPp-B3rJ?QR3Psls&OusSt*Z9IYHFEFC#mnJJh@KB4@B zP&ab6>a+F2{gH91yX%D^NpZ?(Ath20SJn1q+)GKb zSo?-K$>LWLF*L&5vMu7f-f`l}q%q7l!m*^$QT7dhwG{(-o4Bp%Rj5;O(@vk7eOtJZ z#EyNz)V5wPZqEtjw~Hk{ZBn@5+V&0&U&1Dtns*sQz9W?9#S$5)U&RA{djs==uzu9& zC(5=M#M9Sy@fqSDI#6uDBnI*1we{ff6x!)%JAR`0496{sbP9hN6&o0`{#QeG{cl5} zM-L0Bq;PI53Za#yYxg9gXy< z#h>cO=nFBPpmf$y22^S~NXx0dTtlIe(1`{~w$5{~bO1DQ-oB{gG^Ha$&al-{Qivso z#>sh~|8pz-Pi_cFX_UMq8j~v(JBcM|Ggcc()}GB9fhLhqZL&a(85$Q2%gpf(O#l8%n+0o-l?{Fsc{hQVzsyTSkR;|b@VWM(~} z?C+Kpg6oLzPmY!!?5BXH%o-|Zgf)Yh(b0p?z~@R71Hh8-%-G&f!t~PCaCylyh}^1; zoE}2RQSljA=}Niurs^)eNkQ_!lCiPMGNE>COnO=O0HuEbwphmI(=oiJn z_FzUKIMpK+%8)|A*TpTqU_;g$2B$`!^@cuvU$+FWfe_aDp;gUJ*d*@rK24~3gX}71 z^=w#2Pn=hetvxook)*HyjiZoxDEPPFJH)rbRJ{2u|2(!jiVfRj4{`NOYue{~vgr+9 zPzn7*QtF7?)P~tmY6O2lSik2f=QFb0l+b;EWw(S}|2DV=YEm3v-VlPQw(8{*6F}@B z{tLGbKvdtjLqYk)w-9Fszle3CDnyp8X76vrNC>01RBTrga_Sl!n0-6mK#zQK$Pg`A z)?hh8Cu?{}b|5Mo9QSOnw52|Cl1lh$+~YJZAQU{ur}G*7O0qRVj3KG-f4>YM07R-i zU}ZDP3d>CFBq7U?GvMMD??6md!$@1~ih2{DQE$R7l$mf;B;mRtN%@X2VEnMKbz1&? zc;m;{3bV%Rm9Gg|UTx>dATB@wF~%A$GQc4m?L)qAMRMcfbZehuz*MKvcRHk z#K8z{w1hQU!W%6;8ad{>{ZQ#r3KgBLMak~p7bSBSimnv375R#ODjIDbW&YN@tN8We zGeu{LY}=}~y}fPfD=Dv>+;(@Pcn{!{vg{=JA%nsKKfOr8=I*}fZ> z3_6scPB3ft%UJh!2*xRK;cNFZ_jdq`aS9bvrmNa_3tvtdJbV3qp!XnngevpPj%KIV z0#*A;Jc`42X+H-md;$rRjmat|c6Cs|uKFQ*k;|FJb5>YTKaMbe>M&)NuyyLdep$uj zE`Sp`ev_Eazbs}TlwFBH7fhd;8mC+@{B3Hn>ed!v$uonQw~L84!d=D;y?8RG7jcd` z@TWMKa7;MEg6*09$z2WjENc(@Fwu!J`W)DYR{DfI6IlRziO0A61HMVCCswt7Kl^7M zwF&>%-eO#H|7xTdnKaS}8_r=ZPGa+hfX#2-AS`>XAK^g%DtNIG zRBx#KHOW5+W|?J#{m;cg^ZxXlt*^Aj@jVR7CqGc1d{5ys;s;z1u^WZ;(^A4z6tgE6 z%BK?EpZ2_Rj}ZF&AoDkGUvcX6%nV%or&-WJ2hA2!9pM6Uoa+TC#d~GUm;$6~FW@7Oym&aLyM`7_MD`kqHks zhu09}7VjJ48RqNd8S2w{5^y^<1cklTvqAPzJKi5NlVD;e2_@v50QU)>=2aUJPLP|- zB(i-rPL_|NOOi6vUYTi*DccF%wvpZYoG4Zf)suf2R&SH#V+vM)nIMdtK0J)b#GA-` zxLH^;{e`FxH;X5UO7ZF9X%dI=E4xll>vRzn{;DRJMcCw!9nG+|MK3&O{`D1zeEH$O z2!S{xa(9U9L|lGMNR8W1tC`H*D6b5tNeJ>iUY?-wO)5`NL8g~?IjHNN`}ne!cy7r* z;=qIk;tz1+h;maas%#fI+(3r<+h;gWh&POJn)6VqX8V_*IFv;0qfwhi4V&a!m>Bn} z@8rcTpQC2p+8eh5lc(;LFM7e)MfSUfJbv!&N|@qN`4-^jK+XPA zA{TvM-z67#r|$BQa_@xQazXg=E>8qn1I)WUI{c2<&AMI{qY@|&TB*D4wBe>FO8?L4B`=B44h7JwD9*x!fFwXx%54T%{-f5?dtN1N?C`%D~&PP#D z--oO4#E_WAR*JLTSxNzbB-Zz}cN{7IyJw(Zf&Liud)1d8>eoy6XARO?2I2k)$vw6k z?ZH~hU@a;iWIfm;{vdOEzFhiKvpofKO5YxxIKvhO6=ip+a5SZVPo#gxNcvY5w?9cE zMe#P_@{7^J^^`uuDX3-+R+b9!Ga02ycwy#n-Hg{j^qN6h;&+thnc2!Cf_Y|tLCwwy z1E1uY;PXAgGBz!2PwohYPEs?Ig+H;0%6Q=$c9e3Q5H)M~unDQG-XebGRpUsq*IyGG zaU9>{(;YvOWa%c7rMUeYNT2Zd+-Ui?bXLEGhxTCRugLjgC-1>|CO`6bwXyx`yST0E zTt>7ljjC-$g$k^M`yTW3fDMZA>4-^6z=-Gez!H&xasa5|8{IX+y;%uLy)g8}k!-*O zp+fz@3U%=|y(;S%N2uba1bz@9hpb7D*e){gL%vlWEL6UjsJjb0fW3rX5(x|ccyYMu z?rtGu_BQ2r!mim*hsPgqMNN)LEGvyoP9!2>EGKcmu!3A;+J*l5ZfnB|eUDfzBP_~Xh z{`slzqq=4aZsgEjEP4g^&>Ig<8i8jB(48!kMWD84r+rp^Q@gD(3fdrOgzx z^PqSP#zd@wQNdFXjybZ~6K&OWXmLH z=n1lt#H5CKT+V|o*HLX7;T7bLaM`EGeQc!Ag+=H^O_UVOw;(C!8Y=!%c-#&J|Cy|! z;r!=l<|z2{Bvd1DB_akJQXo&HH}+epSg4)f&rJAX_HC5Ci!a`D%QpyqWy%9T@-;5@ ze7Ldp4VJC@{(Y=R2-xwE8e+r05o8-KcYwCfEazJf?K^nr%ATHd_UJ?vf|L{3Y5R~9 z+sslg*fsCdWaRYU8maK-T|rj*GBPeCR`7wSKd{^7;Zh|=6XywM29N#88>~%0wfCg- z7Am}3{3Up7z;=Upv_p%6uwPiXb^%W^Wi#a|x1thIDKor}Bw&FY7vT&-<&`9oTmdNV zO=@J}B8pUfz&TUO^*NCQlB4iLtOm%J_y@nX$5kd#U2FBPvDYID2ykxBV?W#1N|U`o zDDu#FOeq&wq|Z^M>&fS#=vYW@F~q#W8cJ>=!jV%< zcJ~`{r$5hzjTeu4dij>Cp%{=GGz3X{wJ~7Zy58d;5+{MKT;PEq=8{=5tSKGprVQsa zVi<>5HJ;(tNsxm-x<)|lOq7X)LO8;}w4n(^cA7_I*ACgykI3$#)6IM*tV^>Fg7*qJ zV0jboE#Sn$khTZOw|pFVdv#U5trTJw_E{4|IeMHw*WRmv1i6{o2Zx{XjUk^9a(?(hNkfm!9cig6Wu#pf0L0UR-S>)Rfk^JYS4 zO&2kasS@5?s1H6q&mO~W63#9h@fgC0{79tph%&~NW8Ho|5;_+?6?=Rhb7h`*0q>Mx zweeI5juEew*o`*k59Q32a%QTqV9^un#B%}`*&H~AunbWB}WuyO%iiB)Kv zH*w}-P-F2e>J!;@cghhy^c8GsxxZt;uR3r%ln4FhjM*rpEFLio483Oa1Y>3rUj)WK zf@U*_$2vv}a~Ag#{ODMDzdQs3kP2HA38UiYzTV*ovxyg8l@ge0{sSU3&NGKz^)_kFP zqmO2vIz%=hh(Cq`U{#y>LN?i}5g$_YPd7d!k1+A{QcWDwm3i!c9sIu-vi6Z#@bs~| z!O&}mWcL357;=WSfgv+EYJQlb<_m1@p@3m&ku4_g!9zc)L&JZB{rXtEfO1MZ!W}NW zwzbv$oi{mn}7Jx zj^|0wr8M7+syr8-XP8`go{>i$!Q_)iFa=^kQyz-=`AsJ4P=lC%&4f1*V!^dMyc~L9 z9$XIL#IpY8<%eMaHxbi74i)9R$t*wIyvch5hLQkd0URCxq6*rL82vCJCQb2oJ&aD@ z06hGE4xtI{t|5ybOfe1f`p2NQAWx*gus z{i(|3Uxb>)x|5CP&fn@k)G%%4yv&WS?fb*~pWapX8T0Jymx}h3AOFj>pTdVuPv30& zvbGkI#R5Pt#+_^K&v@*?anI;|DG0 zzVAPB{)Sf%zWvVmf839sy>3To-QRqj17j!5;I`WQf8Hd2ggaR=Lci7Frv|V7Z`H{) zb!z1?;l#Rqp@PK!ApRV+Pnek-74nv3d$XVG>?vbzqOy0Q)-%)_)m}n>@An3<<$|<+ u@X&>L80n~N7!iIwNhL1CyGXo}oN9l!@&q2s*+-+YZ3|sE2sVIu)r;fn7(T`Z zPl=dQBXW>Kjt)LI2P2YRGsn-#~`;etBwQc znpDp(l-l^0C7L%&3|}s7;VUE^Un$KM9*-OyRg@)Be4G?yO*kqo6qZNETCCO}jWov^ ztdXWz^(T0hRex!|q_L_`U?!#@Q_?U+SNm2Y?Q2JH_ejn@ZT}N6iI5nsnO)A$maFT$};BLWu9D}Z!q(0ZKDYd z=Js51h&MvkGI_<~DW95SgJ*f%6m;M!QHNd3kvBvOfuljFfl>|S9qNnmGQJ4!qjDUR zyc2UVH*3i6-*!T#HB{0m`V;Q5hGK5)!W5^|DQ5lF29rX;SR@|t#WVG58U1fX6JLd; zY&H>DXqnj8yXc=At2Ubs+9^4t(X`vXjZ#KgzGI9<^}$#dwugz&?4o~>9^vgo3R5Xx zFc}?(q20^GW$jKml1N%y1cHB^&1Sxc?c9+QL&O)t+oc!N%INd~_eAWBxa1vcyY4M_ zU9o1zTz)C$U`~u8H)9drz+lBD6Ekm0rC7n6NEZ=;vFK1vjKQ;yDhc8_&jG4L#pfG6 zPO3MEF95<~{u};;G=={fg8wt{hYA(~fmS`p6J6D)P#aOauZJ$VaQYk~} zM52VAB+!B;VxeD6q-??eoJi3c2s9mHFu3C>VAaJ_ZUeCD3>1g44wYxzJ=_SRb0T$X z9Myy|<0!IYiyKYY4m6n6RgxO>v)Qx2(pT?Nu3!1Dg!9zw5DO*#r+t+$fqpC~uSrr1 zOX>LJqty1#sLt)5QrkZ#s<$Qv#^`sDi*+B(e@^s?*prFEAv$FdPFA9I&{3QToTtUu zpDy}_q_*Pxh4AlifQ8t3(6HB{<7aN#?r9Bm?j3CxFIr=din+4Jai_Coq1AA-yRNvY zcnZ2PUF^|@T%X3FZdoWi(Jxt@C@kz}R4)+T!uwF+<9-QGh0ev&EY{!?2IueeB_plB z)7!L{tMuM8az7^?VetwKkZwt9SKZXsTcUt)cB3Ri9 z78JJXRUX)Y*;LPYr+kGRlJa_0_T~!DZ0h?=%9m(M;LV;)f*_jhnG`wrW={x((P)QI z-4#9O%jG|d6>=BU!0Mo!#X4`0FMLLsgCc(%S>{o|Ip(V1>_1FBLHN4=5cO5z$Nm}7 zFc0A{M2?xvqAZR*IFDH%jEQ-a0{c&8RYPFj5IHn0v2|IDUahw5Uo#+7!;}kEgX1jl zhuwUzG@TETp5{Y|(bd4_RIZh}_$bJOb_}nd!|clvoztA&EUQW9Jf3A;rh}q5iAn9V zr!bdTZ=bcj2E$g&JFy5YB`&h=U>NHn=HNV77&Ye&lcO(dDW{h5hRbIqOBit2YcG2> za@27xMSrafB7h*d-ytn^n$vkW9sP&foQ?oPHLDa!lb?(2nS(oY#7U|rIINgdk$+0)_ z=U}I?k0H$Py=+yUV$cCU$9$BhNRHW@XHj0dO`-`l^Us{L!8%hf8LX@x=I@-e&RS2i z-aM%XzU_JVwn11K@oih++w}bFEPUJEJpY&&GDZb_#XdO7l|9CWN>4!-^w5PwK2#c% zbPlF$2z+tC6-gE-1q4Zprih4$W>2cFZm7Pe^Jtj-OGBP}Ypyj-FU7)Enh-qj?<1(- z4@zVGlQW;bDsA8kr5Jumy=upM^bQBj%;PY@P-i_Y55SOZFpS?Wr+vE4ql|pjp@J`{ zSiGr?x%mp?T->^h?nS^LW5XXBD}*ySPtdz?=zaBMl*rL@hik7B`W@P&su;z zvvT-@kf{S9XH6j+k}o}fccxG8o9RLpU+cb<#qVw~x6~?(IR;3onnEJu>!O(%P|Lqh zsH^*^EAx3S<~V|Cgrvl1b&N1Rag@4Lcr|gNdY-U9aZ1qfe5XS=lsHgO4;?frv;cdU zZceMG)599t+{qyGY+-mis$ZfzEaQ&e3uh&chc9kyOMa@gN!l zS12=HM(+Q84JGTPA%Kx^3I5qP5Ks4w1$gz`T~$l1u~%JF3%0knQw+aH+z&S+Ho(h> zClQKrK~VJ?VbZX{>TN>qu)K)h=(kVP?kxe#Qkj)2!Y-naiFXd_ju!MR~f^r>?u8_7th;aI)f4a zw+UN^57VdW6ua~<&NDE_o+^Aie5B#ll7su{`egT;i76H@V+-+eE=~B9@0SZVhrblF zJh$%6#O?cO*6?b5nCF`;c;>$euO?4WZxI~HvH1Nz$;p{pa_buCYWlphf&OYsF5$`A zKs(g#2D)YiA`b3Qc8q6DBmaTtawFf`Lw?Ii+iVog7e3%C#PSQRJc&v-xc9;JyAKGX zMr=(@E>?tZC`pCcR+Z@Za?#9xAeQs3j?fmftgV)>cW&CyU}Exxvm;W~vxTUUOm4wa zvBiK;wndu5e}H7BmHD7pY~laH%wCH9@v7wzX&rw`k^U)?6li&yM6i)vNUz)-(P5MS z$pP{ILa5&=!{dvEH%2B{?vbB*7db%wE~y8|{M1n`f5b7{%aj?O<69K$yJVaa{Z)z1 zm(0H}y$*k%L!zZAl1f2a$G1MjfG<(9kUSQiLs{8F-H1~osleiuNmeML&|q;R{_TK= zagDveMX<8N5+kMZE5X5U4_RVJFlOqLsYPpDqiZm^r^AauGzX=P0jA-^23j}4`72x2 z)Uq;Va*utDuJcTo{IjIBR_mlS|8`9e@^IV|lO7?qD2%YjOUNpu$oqM>@ZYlW#nLUn zvhK-;fa2~)Q?N)i;p)6VZd%$9JTDprAI@2VUh~$cFMm55*o!sBY8p2Bk7?`^}$TkGGsaR!C0D;@;>8= zQo{R468lL!jPh+K<*A{3;dtJjf6aycfWhyP z4Vb@-1n1reB&7pgSL{yV%%kz6e#)}%qdeELN>ug(Bt;=MN8tKOm~hvtHIqVb&k@Qn*z`Ru0#yLK6*( zv;>r<@#SoJ>HkX7r;to1o9({K4JduAw|=6xdi2&K;G76{um=t^7HDDUlRmkJ8x9ol zEAV+7mQPOCNr@KgKS^+UQSXa2N~#NH!o-Dg1hi`bL&rabmd75kT)ImF)&+FW+-+mR zQldQ-B>p@R0Dnq6+WZ)At}n@@2fD@DMQDAY_r)8f4{yzn0cb)S(n-9IF~lKvw5-D{cC#IsQe zG$P?+tHmSocyV$1<48nG(#OPo_Znc`>wvsoT;KkN93-x5-|W+}7laSfS@n8BonaWf z)ZDSfDDu5wJTF!oFKp-yGA!ZwYW8t6vtAgRF=o`U)kg8d3tRXC@%O!`JAk55{NTcJ zFw}~6KHAQ!6kp)HMv+e8?Tp00kmU~z+44UPIiE4|`F#}h-|j>$;TOo%L|d29c$U(Q zP9<+|`rPUI1rAaE(S3lDFB+UCx+*dUcy;?wwY*EU2#~`yTO*^d)*n_=b2>e6)ACPltNjKzRhSypqkR#4mHE?`8N3KoDOR z!^jx1K?NY}P=mC(dQ%g#qpH!wNzr_@I5^8ROz@2famf9fZ4tHF8H5*JYmlh%;<;7 zD4N3cM)3%tI*6Y5M|CR{peemi44H;8n6e|kgCpE8XKF^#|@_K@q@`Q zsN8kRdV}H*pa}mfMU0Z*8=EvTvO+wNqQ()My@E*9d4rPEAn1)%;LA`#<_QBA^crE} zxIq^1|AkG`lY$qaAhp0JE348{9bnQG59Y1=SW0Ab<|R0#OSh>(jCmUdKSJy1%r} zp(fO{s3P)jZF(C$MAMWJIPUnJ~jK}}VSnO!NQ8A}G!YvduAu!%Xh+M#MO z^93zt2))LPLvT)LF{Z1363!Y&4qc|>{|IC8m`TTfMvR8qx|AkQs=249XGaOmvixm_I}0md=>L7d94razAoQ;q*I`Zf0|0 zF<*kUE)6M3UYZ>EGl(T6I|cfw1tEkN&s<^oQ|HyuLe|7ZeSnW9mQ4v!!Z0ZcVOyXQ z=X6j!jSb_VHV-R1r`RG7Pw`ve()dPZpRi=ov(b)h{tsfKccCp<`p|fxvDxDg+>=IV zMz0mlP8xwD6!CP%fYNL}%vqMrhdY;N^AXP1viV4-S;%}k&T?rN&crqfWu5<6JI(X^ zwbMAtGSI?UQZ4D0WfqeqY29b*yz72h`^(zDtUtZ}!ur)4H*NgK`m5_z8wP9`ykXde z)D0OM#%wfhe0t-qjjwIIvi7x29FC5i`Qb1OvZOk1@@bK@chOgOl+hgG-NQKEc6J;u z_2UmCdKP+~ju{(cVV<(!lHrAhSNA)cX}%HBx!oup>ka0Q!P0!m4Bm#D2t6uPhZ)l@ zg}?+}$e5fIVcNw^;4zZ9D7-TH1(dL+Rk6EfrY4wr1j4xJVE;gJ4q z7Y7r37>SXcajY|nT<=i7K?^_(B3JSp&)Hx%{SYB;%E$!AI)hjMcmd#x#l@&M1&IaT zPFH9Ehno_s8OIB&rX;D$gmm}iDrF03Pt3D+Le4dMqS(Zpkxz{%nm!$*-L z-_E&4!T}s&15E9_9!h6#;cPsPQeuhtP>e<{(Sn)%y5F-QYsiyp!02}x( z9x^9&h(gHMfUQ`9lSXnflA;uCorZafo5dgG1>%|Z!>)PaVdI4}uuTyWmWU=|8Iyg( z;qIg1?)7l@5pee*Uh7q@dKh+e7^W0 ziP8AQfm0^fUJ!8`(9o`!PhaS!4tUGwelykb@U@6?A>zLr0Y4JCZNvp6E<~QnO4>zh zncZ7aY#H2?66||ycS?|N((V)ugc-fnNnP^Z!Q1E6-fPN39Fo!ozoWw)CCX1-xLiBM z;m$J5-~I#V4VA;0id z;;r5dm?B||w;GS!EnXgvjIAk?y&7LO?iaLd`WB@${MihZ8}TiKuA5aUuPFXf9QWx^o$gj{xOHEK*`2pHN!5cZ&Wh02pR&Nb?GDO~97 z3S5x!_6Kj3Y+Cln8~!ULzXVCM6v`EW8lde@7{gw#zK>MAq#DcHPvaV@l!EZ0PFGMg zGFj9Lfse6d1|#}!FGAePAMMi(&WnjUYvK%CAt5ivUIH*wXC10T6~n*eAbt;XW1dpq z)3P(G$=%2pHG`ak)&c$c;rX3Jl83o^3+uj6oqt`1X4$gdH=UCbs|hjA28; zLZqzj+@3&-$E+i0@k{GSTI{qY(W2KnoJN487W&Uj)mLo;{R>7Z*Y7ZA&Ma0tgqbr3 z34fZI84eoc9wGEiVI-Rq-dUE$(CJ!SoV~$5sva)1vKeZVaDh$5!D3mfcvjZp9I^@9 zh4>d^H8_#iGvh6QJbWY%BBcwh24n1>c3|?e`b~XE^@Jyyb-7Vy1j)~W^htaMUnlp!{4YB~`zjYCq+8#&O2a#EVaow2?D#EXs!!#H-WKOKk zScDLOESyVo2vg>4w@j&2j)K3;gZqTOk3|sClIu%+;i34?Xx@%%t@irgHncOPJG;8* z>o9kuh0_EEOKX|WcQdhdh}d?tQzX^=M?2*k>Pe@3Ll}7{Go_L_C@i1LSlTH#2ze)z`U{G? z@4F9<`F52z-WJrWlQqZ)_mPlF%10IO01AVJ{>m-<`v#-9uUCiq?@;8a5Zns*vi5zp z#{;VuS9pVMBpYdBij*|xw3F&y0jsWbL^vag5mPIjY=5B-?SGy{QZY%GN69)g{MS&p zUKRgmMgJoBZ~Xdqf&^nErbK{XM>6D%krOXU7UBJQ0|yf(nd2)Im*GqHUh@rwvzY96 z4#E%f`di+9i|rHwMme;J802n2F~~{>sQD~Pu65t$V%EOY=?PclZPXJ;oq(PC7P4Er z6b&;bPb33h_;&+U{+uh=MxREuwQo4F#-y;ouJ;eG$8h2U;gjHazj~Y9D=15evjjwe zZ#po4fXr?iviN$1x8o}iWCT)FL>>r&7n2Y$4^Z5DG%1op_^0`tbIsUoD2XAE5|tlf zGeUU8ko&basXm?RTb6%4(Wm!WNbMuQtQ6pq{rasgng||I!+qm{s1!-0Z%|L`$Csl# zSOwltAFMh+DNV$Lfh%uhV)aCW>Rm$u6awin%A!OLN-D{2d0Vm&{`{FU?6Zkp_a8LuM(k&FIy(7r34yCT+Ma$eU`L1UcLbiyu{p zggqdf*q+Ttx$TI|D{7}Xf&SdMD_I>QeL}tk(%@Sl96AuFv~x?#S8v$5b5DKr zz@d+hdGgsAuu-r`-e6a-#K1Cgq!I7x??`Mh`=W?+%zYQGN|{@YRRp=N;J78Ai1O3? z0Wp2opd8^NwvL^*+ut$xp$?oD)gJ%7C{roST#z;r3~jZ0LohQ5B?99gKtukwzjur< zXTd%9VP&M79kU?-X4cE*al(Rq=(PWf5Z#jj!+(F^axqW`slbd1LMoCBc zU1Aj+<<@r?)n24LDY#=lQvD?yNbV6VgVB7c&-vBxN$ zM9O>;vHuGH(9w5?j(BLOExhAo#|j_Kj(vv+I+)*&M7yEeaB_aMXT3M;#~G(su&Jq*Jky zyf^Rx-!bgTm*Pp(K?Wl};Ub#5x;&5Xo#q*{cN+K1-jDa5-5Y6-v_FmiBJErgUp@mR z9P{oJIF_5)4dw~wb9@DC`Q8URo+mx0b9~bq%H8*Ya~m-oWxtt7{v930AZg?V{z$4dD!j3WUi z0+<>A;xy(y+*UjG;*{K`ZsOwM2;e-Gz~ zzsG$w4*yN^IVT5=321p(K+8Ervs?Es`Zmnc;B0C8@|&vzlgCe;F=uh*R^h`> z-@D|WaP!p!A+9L0b$HQVHLZ6_4r|r*!r{`l!gfmhzrP=IEy4O2aR@6Tp7G9;RQ4&=!*!+f5B3+TRjM}m2m4_6v#HhT0DUJp_=Qpv zzeu8alf>|O(k_03q~r6YdBXS4J!_6nlUglf)1(?pLYh=-8JA{xI8E~Lccr_$O;R!H zRQqhl94VApa$V9`)E6)t6FXbdpo2+X!o0Z@fVfMEoy<>}{;w;{=W`g%JmwFxnW$xw zieKgjzsnq)#cW}j$eF-CJzLA>uuQ{TNoD4ZmNpH)gn1)R>O+Xi+05_fVN9*F-IGKW z#!$8x%BsB+O%02orbJT)Pd^3NkMcxPh0&BPl6+hqNm&^=41JdqDC>Y^eEgI^*%YLo zMiL};Fe|A5z^B2Jt&qs3JQsVup)rB!2T(bU^si0b@wwEVpz7zD5+%n9~J zQc|YbmPFa6P_}0%snb?KNm|=hN?K;ir6jd2pJJlt+7?8$)9p-55p&hVq;Fz0dCaGq zr8Mm2w7_2Kv6otYqeSs9GDA`srjVIb#BAEcoXCUt*GLgyfU~PgW)g``p?vDLcKW+! zjccINHdAs?JN-T9d?CtEID@jypg5&#o1F`O*;x5r|aW}OT6H|pbt|U>++Fdn9g@SLTc*Zx3SzE-&n?xgD zh{fzM5^0#V%*Pws>91=GcNmYoO35L$#sju;s&|+p7%RgDF_&kx)89w~cpH(!Gn6lw zjE=_0jy2+%7N^{Y2wPkX(Hxw`M$W{BR?Lqg0t~@9nmI0)PV9eA#?FWjy%Vh6-aMD! zo<$}3Rvw!l1-3Sn7#VfGxPdpK9pJlRew4xEpmKtE&QnL_sQC0`PlM1si!r~mkl9#7 zl#Xz;Sm)Ic9&G7RwpCHK4N#gd*{J8sCsUpT%CL4aQ8>>?jEB}?Mdv3|*5H3lrf3a@ zBw@J*cMJur>KMu$4Xo;Dio;mD$}{mEZbY(kGWF9$st#i&QbRd#m|1It;L&2H7D{UH zgE_Id^REfNpPd@Al@dR<6$sRvhl7^XNg845oMEHRQswVZZRLNa%3Fwry%Z${SzeBk z?plt}{5wQ#h~@ZED48>s!x@UTtkXdEac(lP3GMU`lG=ik7Q!Fm01L7001ev#bbQUF z97w6Dc2_igLH<|<%Hjf9W53(hxX@ydJF2tmvZn$AGY*t%7Wg!Fb>l)oKX;URxG-UE zvib!f7vCd@anhL=#l#GDq}6cx+yhIhPXiasEA9smu9LN>2fGIhS(j@C(xbDEc@EOJcs-0A?k8 z+L&{B%&oNw@WQ+RT)cRBL6lE#4Y{)*iY=UbMfn$qV6B%;hsuL9Vc9SQR0^ewdQXLyQujk1hiW}s1=!4}5<;>A} zgM8sLa*t5tFIiH2GvFLkEF`CnRevO8rjAn=3)a-9`obiH!}!>rW4@cmvCKRsM!1^# zFa`E6%qxWey&-bwxZx*t{=#%5-j|kOVH3@T;Mw^GEN*$I&jWpeoq>-jr9?=kk zt0Bf_QjydSiw9oXH1bf)SJHK!bRB*APP&c&L*;$|q5+^cSU!qw0@leOJWkd!P9j**0_WlxyXb!}}W&SM!mhsyoOCip`4TTO6>WZ(aNEK}z`+r0T6b)v&izS~C73$4O6UGZlf|ezmaTIu;&dzGBxboKVu4(DUxHRFEcA29Y)azRsWEawpm!cWU$QC!)1IXZM8UPwtSh?iIx2h zj%^55MjYENI5s{1A`8d1e3^et6d9uezG5`&6C87}$JkKmNum*Yq7kvs2x)NKXE1L= z;f)nfB*@F7%n7>c5&F)y<}mr2nkDYIMV5#4(m+^HBO(U=4MYzXS4gWNQ;W?3kS{EooxUEJq{! z*lU4?*woVD((oPZ1i{6P40>ldK0f9~m?2Ff8Syh;IKyOu33kGA%-%$PdS#8?5HNYK zYlq2`G9ME!O0O}-eU`XR8fke^FQr&E>7_=?6!P_yzSiVMh}D@Uhqw`78RokPy4@gA zm09*-5?z^P5VLZGm(nB5Df9U^nA0n3O#~9nZxmPLsQ4E>27o=CY5XzB)E+GbRc5gt zaMJI3XF7Y|Oy*R+%FURSIMF{*tOPi^#ZJG%=H^_%{f3bq{rAK2OPfdr+ki zl+jn+APmeHuYO#ZmhmKl>FpU)gR0ViT<)m_rWDcY=bLZ8tYqjbKebPBIzO^Zm;mrvJM z6;L+E3VVv!;R|xK*q^N+C_>_j0SgG0o|EFpahySpV-k*I;G9Ba zB;c?h=_VbA_>B)D~8UPwGzFjsXB6a zx5s*#{a-s{nG-8|%(P?F<L%cI*GDqc_S3J(C2 zy8xsCGUWI{pxI1;H<)q~@i!B?pm)$&qLFptL2tD6HgkRjfRVLE@wyF$GZ>M7v(UD3 zgg!y1*r%^J$9g3!HkjN!zJV@GMnDEIEzc(a$WhIl!bCVcAUaN*ah7Da_Gs@@%2 zj&+@1;Ry4rO@(`YQFwjTuMy2$T{RH@cCQ*Wd&HvZ8oHFe?yRBDk61*QveeLawY!F{ z+=wuQYeM!2i4Jgmu}w#$H*a z?2REO0Y+PuqvP{L6MsU?<4@W{8%?sdRPJso*;Zp@qJ;7&i;=BevX^m1zf}? z73L_Ii%pn)bAvgGgkVOXPF19+wY;pWF}i2KeL)t-q>=!a@Lq!~Jbb;fM|F*x;-BiY zy{v1)G5A{2TFP|N%Yj8aIP3f7sKf}dQJI?EnM3%N#0R-$FRhZQehE7H3lOgH*uucY zb;KHG;2Pq@f7@#p?((lqQKC243dH#fi%9gQLi9#b0%m>*?yjwf;gulHF9y5HFM#?T zn=g5U!;%CBoG*HA?hvV1(KS7)B z3IS@ERg2Mx;emjl@u7|FF|?bhn5fQjw4szYLH3(zY4oi6@)#ji) zm8m%@TOGNI5Hq6ig=+-d27-GDfM9Cb)vYkaGma+l1v*z|~u6hAG!76_#f5+Ga>9?Fd}pW;mr|9n2r zPBogU9eP+FWE2pnEwlVvkBHi*m%=S-vV6Es6`E*BE5J|+pT{PxC6)$bwIQZad8KqW z*{}yG-cl$gkqtlHJ39!yrMGzWmNRC(r3tJO=??KsqHfbkgl|ay>?H{+g7#Ik%?M^m z#A5X15~a!~0q4a4-WCF05anIui*xCLZ??QgsJH2T!;+;_KP`v?tO!lO-qZUc&>|lM z;O(8M)`(nB?-8i33wrTnBvsY!Xne~iBGOi7Pnx{oLGQ0r;pQ6bY#b;vZmu|-15Yk?4k9u zQ^aeLF*KrIOM!Sso+xG}KF0JBPMRK#KC~XNj;%m07K>YULWQ=r?C@#XTH%g~o$$1& zW1T_VmJ`Nr6H9%%#E9e@+q#1IQZ~WVT9z#GU12;gmMTEQ3Lfxp)-z8F=DbJ8TMClJ zQ#Z=^4Dt6}NJ3zeWbwp}b>Q(N+UaOJzoqyL=XVt86#kJH8yK?gXG6;Vw;|&!_P+>4vp%uyULK+8<*m z#CU>or;bWS2B(X(T-qyj6dLh&&>%Oj3mgm^04!beR@2Yz>qYYRRFY>VM|n zZm0jjjU@LQ-1kLeibJ)79RChut&!Z=vw0)XBoe_*5n}R3$EorWc+|gjJ>cH!L9}kb!kZ*lPa(q2W5BX+10qe6DBZ8parLTkxLf2E-jB(r8Qj&PNxlVld_SmzgO;SDv|a^42aTn^~1=K zkjz&P(2{~;Yj?3PXedtln4H=>%%Njv~ zUu6yV$qqz?H#R>VA{I1eO|}VNZ+@6YJwnBEd^(@OXOgWE61OA{{M%*#0U%QC13Q~h zSy*Xee=Tg*UDBEX!1S=)N>uq@M@NXn^a3FRglNmrg+xx%kj}Aci$&DOem?7O*)neTK-b zo-u>Zs?B)oe&oii>31jZ6Q;gANc|^a@yiQC$h4k$!s(Zvq z6!|~~&Uu7F*oGb9pcg+^dzdHKAI}boFN25UYnfHTsiLR*PD6>k8)IgE2bCguQ|ig&xVSHW(oT-pbx<$958CW)g@b?pV!1AII-#~j?7N@V2oRdDIOj$#eRrE z2?uibtvi;j7}Uny(9l{B0x5uC2tcp+qv>AfCwSOWbS@JTneCTpY0nEu3pSoOYMe z)rBq^@hCZP_oG<**vE)2Wb0?c0=3h}mFdZ9*=sz$l^-mUw1|v_{cIbLl*n-=SostN zZ(ly)+BULO$dWA8`94geCL%&XZa7cvg2{_Y_IyBf1=&8JJb$HNZT?EJdBXAS6Ol>! zeEVY$UE7vj-%ek9|9uLB6SeH`goF}i#n%PczvCzc48XrZQj9`Siojl|`Fa?Ev+D!i z=j{3(r`J(0*0&s&ulpA<+0XCLo#5O?#>-*KmmdyM)UhK4S4o_Dzi_d{Hc%{Z-h!cf z|10YKTNFMczd{v`EfC818Q~g=Da*wf&UUgn{+&*fWy+$in^@u$3!t%E={> z+@V(ON@2=`V>qa8uIC>TcJm^aXV-6C|>>$C6Vv$kJ zIG0yzL_kBTs}slu+c-rgsveR0C8)5+G5dGmu-M4venj*!=OKPGvRjRtEaxa#A?AWG zXXn^3vU)jzd0W`NGsW=s7V!kpL_S?SMFK%S(|>M-&vw?L>QK`{iWO>KXh|#V{ejZo zntxt?Q3@~qA`F%-kxC|tn<%_om>0L7)-ol#YK_hqxh_7~H~v6;kZ;O?cnySir_4!x z=)H@thEnf$$`8t)@lD<^S%>;3QebUJ|6Srx5DoLU|HOHplEclYiX(H*4lnga%88^z zj#N2P>g1M(sZr@Ykr%ggww7tz6SoZ0=kHO9&tUBmo4U(eftmW0d3WPyTABA4eunPy zR?6Yx^67W^<-mx4%B%OKqpG20hmEmTe8k#FplG5fyyOhNBoigu8;5@m@I|V=N zF7ISHgp?~%cd=)7IyY1}=A|6Br4e2j$v}^pG zTugT-A9Xw4hCEpaCKYKqEPxKHGCfq_81F;v^be6M(&T>9@#_^R~_YRP+S^o;8zqm_lT3Wj#Up9p0I9H)500+ zli@R}Jkhvdvk`)}vQTr=Dr~Ea8``pkeQCExMdM}>Ov9wT2a|RVCQZek!S(y?%143G zFpLa)X*d1{9NtxW*B_cOEkfTtBgSo!pjJ1mS;s7(b8UbcSD@E?c z|7@jv!#zn9UYoqR2hS-OM);e+WVKT8G;i*~T9XsE&>B9ZE-p;(3%ll=FJ92*DxAe+NC~ zLZspU0_WSM;y+ZBGJ^jI%^VeffkcKR=0zA`!#&L#CC7dtiNdFQ2Za!380(&W1I&t_ zxrUm$FT)!OA5E%`r}wg72t5Wow2m0>@V$QHt#pBy&#c@6@7qgE+H^Me;W+8(pPW~#B~pD5jhdI)<4{V;l!cBy^&W8 z``9xARwC~kVkTlh73dy`16E`q913Gra{UY3uo1E#KF=hv=Q2Q1rK!W9E*0WV%{!cH z#sNc46oKRfAl76EjyM3nrp7rEsh&0Y7t>c^6eWK@r&54L_S?Pf^nQ#*5OUvmOsOPy zq>qp#e2C9OhO&^{rxXUBy>u*2^Y{Nd%X%2M3 zii=0QeSKQ&IOKz^M~a}<7%)>kZ-fx8lWjj=T)JuRzHmVu}w&5RDKB(U-m8t@E4`omMwT}Whsb~81ftm1(hf!cCI~!JuG~CVB7%27aO8*EkN|K zYt%DsQkWSYlupIno&B>SvE_H2ETlv`jsPV=*Sd*jj3-5m#nAJ<)9>g5B-DgfQ zOIXh=Fs1Fvqn1Kstlu&EM!BKBv2IjIHR2J&mL#fWgR3td%H_jG7J5!mAD^OJnvO!j zbjV-^=GXwJU$XlY_0uVWJ&<5`6v{}#o}#)HP!Iu?((N_*Vj+j{CI!*VyOc9i7g3ii zwf%(j#Rh|0Zh~H{*noAp|I!5Q=viC9M^k(aY6KflBgmhYzj6cq3Soz1p!2BS?-vW< zbzO&;QHOE&ipN8PGo|O?mPQ?GrI18!IV%%AZfSP)H;5N=g1vUvO#ULv97+~1A{}rM zmy(VCp^x+q9sRSR*6`Mgts8wbyBMR6V$@M25o$Wj7qiJ;jeD1(zrFb`c~gp)q*~&$ z(&n=Nb@2aU$l70F!Q0>J0Yk1s3VZ)QhFswtV8{%PzPz8K){CrgC}5o06sya7@qiKc zZT>xM;W_all0jjJez=JG_IA(0!zrExhf}y!hp!$EvnAobEc};b z(>DQ+_~j6q(C!(s@ZJGDGvXSK-zcU7E9gQ`te6`;*VVWyVZeuqwag=t<9CzKIz82y5K& z>Yp$FK#zQyec7__&Gzg6>HGMksngRIEzQU-d86@9p7*HBp35JxDSuv7{s_OSo39p6zEXEPSluQR zH|!1jlf-`|ejn`?h8~X&Jtx^-9pt`xa`N#6b-x6iceEVcSxVpXI|^8J;U(9I(J$a7 pr_<3iF5<&Pjral{a^hL%RQnmnalHSsKZ+WJT}e!yY;pOh{|23kA#4Bu delta 11934 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 z z3Ki5H8=2cGD2Ree*!HURQlWsbBN1_4xz()*dXm8pm7LQna>9sa)9YTMgAFCIuKD7j!VS%JP_XzAu9>Kl;mtLA0e{zHeGp zt{c}jEN)!e$fcKK@;nC8?C9UWFK((`&c!{Vd)C4|jeP4EWZiZY7IGss6m-im^*6X} zM_V^4S7AvhFb2T*01#KQdJv=UN5s90>Hens(b=njNBnCSmeTI-vf$nj*%;T~2Z_Hr zkOqTu7|7ouIHT`zUjj?;6TSW^KtlrB9~RJlLDl%i^RIp$X7zr0?$WhegQm_{l)ZLC zNk!c|pLg6CI_j|(mgjA+eDjp@L-@dPGggX@_rAEz#6C4+%iaTj@P6}CpGO~?nw+v= zQTmGQwe@eG`nc0~%NR3y{Is0)J5T)nuNNb#8yUVrz`|9R`~@acJFHT9qV zcjU0Ao?Wtfhtr|{ysG|?M{DM5s~Y##+z3V`tN4urVQ0 - right) - lda Force - sta ForceTableL,x - lda Force+1 - sta ForceTableH,x - lda NewAngle - sta AngleTable,x - rts -.endp ; ----------------------------------------------------- .proc calcPosDefensive ; calculate positionOnTheList from the activeWeapon (defensives) diff --git a/variables.asm b/variables.asm index 1b78ca4..595e4fb 100644 --- a/variables.asm +++ b/variables.asm @@ -168,8 +168,6 @@ TargetTankNr ; Target tank index (for AI routines) .DS 1 SecondTryFlag ; For precise AI aiming .DS 1 -SpyHardFlag ; >$7f - run SpyHard after inventory - .DS 1 ;---------------------------------------------------- ;Erase .DS 1 ; if 1 only mask of the character is printed ; on the graphics screen. if 0 character is printed normally diff --git a/weapons.asm b/weapons.asm index d4ea51b..dcf7cd5 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1149,8 +1149,12 @@ afterInventory jsr MakeDarkScreen jsr DisplayStatus jsr SetMainScreen - ;jsr WaitOneFrame ; not necessary jsr DrawTanks + ;jsr WaitOneFrame ; not necessary + bit LazyFlag + bvc NoLazy + jsr LazyBoys +NoLazy bit SpyHardFlag bpl NoSpyHard jsr SpyHard @@ -2508,6 +2512,41 @@ SpyHardEnd rts .endp ; ------------------------------------------------- +.proc LazyBoys +; ------------------------------------------------- + mva #sfx_lazy_boys sfx_effect + jsr PrepareAIShoot + ldx TankNr + bit LazyFlag + bmi GoDarwin + jsr FindBestTarget2 ; find nearest tank neighbour + jsr LazyAim + lda #%00000000 ; set "visual aiming" off + beq EndLazy +GoDarwin + jsr FindBestTarget3 ; find target with lowest energy + jsr LazyAim + lda #%10000000 +EndLazy + sta TestFlightFlag ; set "visual aiming" on + rts +.endp +.proc LazyAim + ; aiming proc for Lazy ... weapons + ; as proc for memory optimisation + ; Y - target tan nr + ; A - target direction + sty TargetTankNr + ; aiming + jsr TakeAim ; direction still in A (0 - left, >0 - right) + lda Force + sta ForceTableL,x + lda Force+1 + sta ForceTableH,x + jsr MoveBarrelToNewPosition + rts +.endp +; ------------------------------------------------- .proc TankFlying ; ------------------------------------------------- ; This routine is run from inside of the main loop From 793d494fc5b87c6c32449d4f9929866708ea7f0e Mon Sep 17 00:00:00 2001 From: Pecusx Date: Wed, 25 Jan 2023 14:10:50 +0100 Subject: [PATCH 05/17] Minor optimization --- grafproc.asm | 9 ++++----- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49334 -> 49328 bytes 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/grafproc.asm b/grafproc.asm index b9fd115..c31e8e4 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -551,16 +551,15 @@ NotHigherByte02 sec lda xtankstableL,x sbc #$0f + ; and clear lowest bit to be sure that the X coordinate is even + ; (this is to have P/M background look nice) + ; "AND" does not change "Carry" bit. + and #$fe sta xtankstableL,x bcs NotHigherByte01 dec xtankstableH,x NotHigherByte01 -; and clear lowest bit to be sure that the X coordinate is even -; (this is to have P/M background look nice) - lda xtankstableL,x - and #$fe - sta xtankstableL,x inx Cpx NumberOfPlayers bne StillRandomize02 diff --git a/scorch.bin b/scorch.bin index fe6f0201ff6603536d8883fef1262eb0401eae3e..261139b94479c543030e6a24f74b227f92105e0f 100644 GIT binary patch delta 3912 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 delta 4060 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 diff --git a/scorch.xex b/scorch.xex index d603c124fc2e812c9e6e5569ce1be1d4e15fe3ec..72f6e2fa696c845283c6f6ad7afb4c44a0c58e5f 100644 GIT binary patch delta 4029 zcmZ`52~<;8mX`!U1b(zw2nsy5QN$%G7KXaiY7yHgRkUiY5E9oAHL zORccZS|~?xq1SSb>f39GVENfn6nUHtP;kD z)tntuO$D5hex|%Brm(CI*Kg>VOyLhoTN7;(tnag*TfOlI8r+@1Ceqn$9o>bArkRvg zjDIB4qv}NcDdcoi1lmYOzg;pUJexy!qjC4!A~ZBw!};nqim=T1@uD+m+VvEW$8m^e zuvvv~e+VlMpNhr9%I-&9pp&=aPG>Js-DsNO3bmb0WWWeg?L z2zF%?BU|hW6S0|CQl^U@rx4dv_hI4L_=cM0tYQU2dxcS-QqOjn+ z>2;>PR9K%Q9S00M5U`-)0s~%{-Il22M$p9_K9(S4k$|FNL0MZOzN^}S@PlaKfrTA; zHEq;VFio6AWR5q-nUgKIIWe6K*M0`NrnHEz#RB42&cTNG9dLJ$@)|H-i~k*bV}OqA zPQ#O46k{{5vd@K9c8Sb_aR;~tB!GDzr+LA8&{QGm8_UbW@IIdKCZTS!DATk zcJ&UseaUp(zGOI9RWiKWc5*aJj`ondS@TgYnV}9vnIugeCi+h%=~OFGA(3vLha$=H z&EKH?M&B)S5Sn6Ko9%#H!?R6=6kTFk?nbxaSfbW!Mz_d)%~-IQPtKY}PIZu5$|$FH z(`HSiNv(-gp3~W~6z7)b9@ZSzG;4Qh+qJXu=jZR!eyaUidscf< z+pE2$y{~uDm`Tx*NBd2l#Mg0Y&KWCJ~KQ-7c2X_;%Tu(RAR!BjvoGaal zOZA*R%_yD}khgLJoJ#fhNde>~%#y6!2qYq3ShSYBr}gq&o6C))86~Tv zGuT)f6og*?PPUcjQ=?r7&;X&fl6T-4hPcd6-Q~# zYj8y_^&*iOa@0MOVd6MclNy){ES>$#;cDteG zoas)B6ZbNV63$1EL;?#Y3zFT7KnEkhERMF-44WRfzCqzb(hCAmC21;P+_$ScZi6qL zyhEM5O~KOT4kUC%Dv6>$b+s1^Xuo3(9uuVm$sUDa=nz>{xODO%8plU{VFy+m6J-je zETe?zhg2gZ8gN>uBaqR}s{*+!`Zu#LQ|3&UG6!h1ozh2jb^%|EpYwA=wG zn!@}C9*|*u5&-j(%I8V`O59SA2PIpOcc9BgZ1-34JQ8g3y8cY!PBV}|cpr-ccuyI4 z;FB^608rp3Z1tWNQfIwv@!*~=@N?GrIosX|><4>)XPv(@) z+$|45Q^?qgNpB5?1QYsPR6J7@(fa-_2eG-(afK_rQ9Mg!e z0Fl)ZW7{g1)+@`*6lNRQT@YAoE5sXCEmq>%EZ)0P(&uauLC3Qb$~(hpiLORQX4i}i zg{q#$+gF0uLc#U7wFEtTscUJF{A>uP4yPZ2gktQU21)Q4mB2r1BvdP*a6*b^Acyj9 z7T;gE?c`#O4=N?7cAWe`jp7P3}goz3Ye@p&~3#>4cM8itR3wYR|8!W z!;OH@vrHE#BA%zHsr4PbV}POsD1`PKa-qmRiVezD5n+(Mpxos{(bG|z9{rT&6Uk;C07Qa3@zoy-I z>Y~-tFJy6Sl7{Ix^zBW_$e@U|x%Hp@^qZ5<^oaDLii2PE+;^6TgwKguvh2M$4ZC~) zp>Hn#dUxn(|8aBIY}B^w`|;=Vm;ZfT8op3f(RR4|%-zS{ZzPrN+I`{y~VKt&N=`4{PVxoW>&sw zR@%OM7TvU;efGQx?I$17AE7u>y>O9VhzXxf#fceMVZh%J=fW{+oQ-2lI3ojhkOvmM z}&zybo>4#3N$p%B!rf3Qs5B#o6miYW?bJ4 z@&o~~9PTmTYa3uE;Lny}H=IB9&B_3$fBBGsl>v12(lf3n?y(O6iqHb0OV|R;?Fl*sim_ixOj5#$ ze#M~}*3`mwI0D{a?U&@I!O=v5*WO0M>;cKN0wt2flyRy!6OOSLr)UuBA@%Dg4ec?2 zBPAssMm}193&b7YU{(5-8u|C6Xg(=&8ulSssWVV1X;1B%Qfk!kht6AAJ^#;s4>k$Q z=Z^E6ScbR5IT6mSKT)i{^%f-~32z7;WZCp57R&!*`O#1@f@`L1$}?8V(M)Lv;Be_& ztMnPE+8jZJm}KwrDf5~=3R7?o>E1jm+#}8L0k!Ylb1NVsRtAVK*%Vz}1#4SU@a$}S z!^jIxCB27COgk7Al}2CRjHA+U^WDuwc_WNv*E-rLUB5T02Zr4USWt0+6)z{g>EJ!X zZiH_wlixAO96WUvOQ#qe&-5!<#-`{@6uj6}xIC|y6rD+(`p#78nxOmx=mH}tE+hit z${_7MzzsJgDN7#-Ugpzr&hLWUL@qZo{eEs;aB_n$fVK;R2mJ}usJdmtl^>EE3^7NJfuq19vC_J}r34!O% zEg=){s+Gm^LM(bneNu~9>pgQo{v}`s06Dj1W<-yHe?yBPn}(&!zH9w2B~1ng#%6=2 zz+?ofyurMaWNyYd^axp(@r1%NgY3^(w?bwVmC_Jkgfx=*l=Ls@ax5U{KZM-fX!30; zQfY-is4A!ij4L8!4qv$-jFUWFng0jn5Gm_2=OCW6Wj?IgZvcB3Hj&k{NiJ)hnUN2C znF&Au;FCtD&u$N1Uy)srNh$V!M$nd3_9-uvLo|k)>O^(A)M=ug^h9XHUrXLjJR} z9fcHYfv9C$@EVe4+KO%xr)dH>JSb=NbDCO+=;2Hs{Vo-sGL!@WrGCsC{HI z!3Q`H+i8ac_#U3mMMq4anq28%oB7exq-YM z;Cg^3@kyeGq~i5rm(6QXjxd7d7@lD>_(V37*R$z-61xRdlTvdyBBaBdi*ArtlhTorVQWkr&wwq=xQdg)xIWaypNh(U&Ki14$;E)7lFmtWc|61Z^KtC0Zl} z=o}wY{VMKb%JBu&@4H}a&siauUpgC+e-m+q>_GyT*=1)H;mxm zc1bOagr`afkp+^Ff+*R7F-2etC&MIf*X}WwI&hzr9#38?2uC%fx`2CtH@04b9O=DI z^vtV`7;Pl6>=Az-`2~3HUX3FbGaz|*p$<97g2EN>Y$^;M*#oHnT@w0LkD(=H zEt}E}mdzla6o!KA8-??{WqxTAK1Svg%?mn~#dpYMn@!{o$>p3)as>dmc5jg#Vs>S5 z@-*mxpDhco(I|02NlQv=h-B4zI;YfWRnEujv9rk-{T!qDD(6%v51|5d*_$5l*RT;htWT#aMLoiwnuK1i@ULux( z7$1wc1D3fK@c=AiO2i6jD4!5}hfM$q?GvKEGf|W)$!Lo>1eSJ-=miU75kp~l@tG2F zGOPm@aXc)uO2o%up-aTapbSlp2MP3hMXi|%EhSP;A1mlxc=*#eI=;BIK)%z9C17s@ z{T}(&GBMOr5Jdj4w=gGtp?I=qT2;p>q>vy4)KzJsN ziabMG$i|Y9k6zyllY-pN?l@(Xa0n&2o*XWl?4495 zj(5t3AIhd99SPep)qgO!xoB5>lY||k!ceW?=XM~B5b^-wj(?ftL$+H^1Jbx-G8#q1 z9ntVa<#|X$3d&~(N5S#t%)Q5PTxEB+<~HP@d=gf$oj8s>NkT(V zE&eovag_M7sg7lStl?m4?462K2A9|3%XRoMVkRR!k5poqc^gSY!jVeQxQcQ3t&qpk zM>awdGQwmi(`nF>!s8>=_>~5H8Hk+T_(9h$m#ty8cT#wN1HT7Co!<)?fDKC-yfaH2 zTdwN&l@wrS6ZCveC?a81Q=*~Gr;DEDUZBZ}wXPZAOdE9}9bSqHp>7?VFSO}UlI~I! zk)o<6MnId9ni;?ETIJ4F7Ydl1 zIWX2GExyme4l5-h$rA<*ak|ZCpc$&gfR&=xR>6G63Bw_Uq**fK-1`_wS#{{>7B@vR zP{_XkpkT?KztFzQ6L4vbROJPp%!Y|W&A9s~VTRkx-FtoI+xLo3OVo3^kH#b~riR!!afnSG&$fe&e?#+8!_+B%L$msxoZTwi$lVuU zHv7b#N~E&w#1E3F#>o`kspC(qUrj{=EpXCQwn`FE0E z8zY8Y0k%EBwg*O>y`86MLZ)+}GrhOLT&&*L-R+2Loab2CIFDJ=c(&1-i-PZJ_(pMz zl{L(tKc7vl(?XC{uh^UVsOfp9o~|S1+@@K1jWCg9$gW1LcCf zejWZu%Gl54-`EBNqPyRJQR*#7|g?mT?} From 70788e772e8dc226bc61be0b200a696b74d73914 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Wed, 25 Jan 2023 14:44:55 +0100 Subject: [PATCH 06/17] More optimizarions --- ai.asm | 5 +---- scorch.asm | 8 ++++++++ scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49328 -> 49315 bytes weapons.asm | 11 ++--------- 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/ai.asm b/ai.asm index 430bf31..26aa90c 100644 --- a/ai.asm +++ b/ai.asm @@ -545,10 +545,7 @@ skipThisPlayer sta RandBoundaryHigh+1 jsr RandomizeForce RepeatAim - lda ForceTableL,x - sta Force - lda ForceTableH,x - sta Force+1 + jsr Table2Force ; wind correction 90+(wind/8) mwa Wind temp2 :7 lsrw temp2 diff --git a/scorch.asm b/scorch.asm index 43b66c6..cf6142f 100644 --- a/scorch.asm +++ b/scorch.asm @@ -1631,6 +1631,14 @@ LimitForce .endp ;---------------------------------------------- +.proc Table2Force + lda ForceTableL,x + sta Force + lda ForceTableH,x + sta Force+1 + rts +.endp +;---------------------------------------------- .proc MoveBarrelToNewPosition mva #1 Erase jsr DrawTankNr.BarrelChange diff --git a/scorch.bin b/scorch.bin index 261139b94479c543030e6a24f74b227f92105e0f..e107bc06fd1086a495fadaae3a6ff31a37f73c13 100644 GIT binary patch delta 7522 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 n4TpWY|J4 Date: Wed, 25 Jan 2023 15:13:57 +0100 Subject: [PATCH 07/17] ... and more (memory) ... --- grafproc.asm | 6 +++++- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49315 -> 49299 bytes 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/grafproc.asm b/grafproc.asm index c31e8e4..c7b3f0b 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -2197,7 +2197,11 @@ ybarrel .proc PMoutofScreen ;-------------------------------------------------- lda #$00 ; let all P/M disappear - :8 sta hposp0+# + ldy #7 +@ sta hposp0,y + dey + bpl @- + ;:8 sta hposp0+# ; optimized... but Y! rts .endp ;-------------------------------------------------- diff --git a/scorch.bin b/scorch.bin index e107bc06fd1086a495fadaae3a6ff31a37f73c13..b6ae662d7c4b1effba510d2d5380a4d71c842dba 100644 GIT binary patch delta 2454 zcmZuy3sh4_8qVYa7zj70R6&6WghCVqswidAD2NicDDn^ysn#qyp&p0`_?;1U|NdqK0b^@B3OND&4V;q8p0WGF9F*q%7`%;E5)I&O^9TU|(3r2u zuerKtw49K3hhgTEv-<%MnG1Y5p>W)2_Ed~XJhD3J0n7PL+I)wfw_CEzzCqhWVvQE# ztLMDw0RARxrR&x9Y7P1(eXBllmwMNq_5J$O zdYk^L{-*x6{ullI%Ey&YE7$CryQ@z-7k#=UF!f;-=Rx<{9&=uFFDIrM+kMU#+rRQ& zcu@=grG?i^S9EM^@9CD)otzuZM6tu85_-5#ICvh8)MAR(@`A%Cqx3)MNFz;y7CCl6@wpE4ffgUG0V5uHoFL(HBx+4zCO&>MX}VVKTY8R znfs65i|Hd>Ud6MRQCN(s?jEcNe$rlvADA;p>n3*q>N*#dX zUlFw`V4EIgxk!wPnTv$wDlsZxt`g*CM8z%wN02FYzQ?7?yzU|StqT_jyf|D$Mxq%i#jF}Djm4uHmD(z_XINdZ@vzz|#-ggm z>V!pPja7g}Sglop#pN2S3=5B1t2-8oTJrcF)=NcL3A<|-PA@(cx1LO@X1yINILULm znLLh8B+OBi?Xl39$Pm(k5ooX$2|z4nVp zCzO&{jt|LjVlh~RVv_EFk5M4G5%?pToC~C=pNs&3=m#>?)v2DnWfQ^kW#n}-9k zO#{w#OKFsg$dCs145lfhf!9%Wa)?VrgEi338=oXE08Z#(@;Y!9C9X;aqsX)>6wiaJ zDuE4YR>w?{Hd?&o7<&OVtbPv+Ah(oYZ}mQlKu%K@iJacV4%3_2^Yj*6?F<}7t5TxH z>V2dd)uk-J`#zg8N2uP1z7C&eSo3(Ak6~y?{uIWiAAPsu9G5{4LLcOms#ti|2yc{9 zmRdKu#F8eXxA&K5o*yWo;Oa)mncy=M)mhjuNE{XHF8pPXu=`sg2)hrgKsl*%qbu+| zO}|B1-pjyOZ9);gq$w^0-xKp2I}4RL;Zmq7gJP%}-wpwxN>r>COX(NIi0_^g?Vp0w19_Gjc%@YRh;{Y%{_EbUMQapZx0? z)tK$gYtfW@#`+@!<>;8TOC;Hi38&VhWtl3auCc8#!t}^At0}+fhzY zd*2h)MAxYoz=lkJkdFE@7lB!5G&570%D^TQ{K5p4C~@69P=m_W`FN%>RKfQ0%34G7 z(W&14bKi)LO@tgewl2#VW1pGGDCC;uKh>dg0?e6%t7e#r)LCJEd5qPmPvYoqiqHMb z^xv5Jtgw0i2eb8Mo>nnTXV`Xp7}*YdMqwVhoApebcNpG8ch`py*P5f)EBN`if}et& z*cX@`1g4?nY?ZjV8Jp$VAw=Hcne3JPSCA9gK_2agqu6%5tQ|iJ9fMcMBy>Mpp%}rp z7$xl<8nSq_Bv|Av36x(;Q_E*9qxd(Qnazx%unk@y1!*?ClNsHD-;z?ERe)I~`kuh( zmcdfn1KfGMQ-PgxCY_wqE1>UhffgB&_#*TYj)ixq(mtu~7#EyBDprj%%=PHgl;(e;gTv&9-<3CyoGb8{2 delta 2461 zcmZuy3sh6d8P4RvBRplHjuNTq5;!Pbz#xdn0z zAftf**Y&~WaOomox@}qavS?S_pw-a&cGp^LsjR!2*3#9Z)y@s>x;^dWocUkh{Qul9 z|IFxgVx3Oh|EW93Ll@jDK@v*xpuh@r++z`lM>jmeK|OlqF=z3_VX|gDJnNXpnmG~E zOoZN0d`vx-5b%i!_Wbx>904;8of=L=-+`{h?2vsn+=(`MJ_Y4yEztnVEjI`NK%V86 z;+C6Bo|Y5So-oPs+gSqu%(Rrw=EP!oi^V7Cnar!Ci$24D-bGs;3iBSm#4Yyc77V#H5tDO7J&{NfC3CAorjRtKz|FRJUq@*Ld}hdPWuF zSFR9vajb+)MVD7C0ENvdaYD7gT3nam=3tgx9NKb6YD`8q8HP5dgaQ-Vmtp}2P{iu9 zo_CL8;$+8nz+yE83(?cn34ljYso8k0PK^m!BzzJ>Ir50;9=aQj?V9LedoJ|ZrZ_-% zQ_zI2rK-SP6u72H3}_3zCLGKyF?4CzS=~yRJ-SsXwJ&c~ift0|L47ar$od*#roNgx#$hr(HVsgE)MWqFN&#IY@iKb(HX#rtECWlqay+bqj1X}0V zoU!W=VVAr*L|_M$x1h&qfs5oV_6IgU?sZ16yD`|^K@=tl+ad185O*lb!g~-tjc$X| zEVj++-y|V@QF8hLd`Qlw?*eO4)Vhb@BJv@(f%&MMj06Gb1Q`bwp+Az*ZoWo#+$MpS zE6GXZmXYmeZos+5Lrn?^nb^P%VV)8j1RYgmM7gYNu!h+MPAwHe!gKL-uJ+U2(h{mjm6GH_6<*GMmLX+DxSmCtdkX;7r1PC1V*EO zZ46pGW`dvZr+9-qy_?_ULGKyZo%Z_hZVGN|frG8k-Ar|98b*kdqF-pf8X@e#d>mm9 zgpDX8GjeGozPRc4DE?qJzI#<=_|~SlD11?*v~+1gx5moh!ZyfbjNJuJnFUQpo2Wx0 z1U!JwWQG7WTDHj_J;_|@=7MmdZaBZ36MU;?2p1|oh72E1SiNmQUvfK9_B`8S+naf-I?zq*B2(^F@kcm%)2XOnikbyDT>QchBmbfw5)6un#J2@jDICB2dRq1dLwddwJW30QGRG}BS!805>C&HXLxN3t1C?+pvP6cCi z>X$j%n-X%noBtbgFfV4_|H16|F3)i(+`+J?@Nr~2@hOEB=uX~CX+=AHjP7iXA|AFS zu-EbXaUH(}<=E$w9}Ys$@_ePVrwyB>`B6kgyB~YKRnYQ zxZZ&eKf32KD|zeQ+Sbl`Wm)lu;xnbEC7=oQ?L6Y5qW}N^ diff --git a/scorch.xex b/scorch.xex index 630a2e3a54e51eb06411f72c17061b55ccca90d1..0e3d414738cfb05020a5141e28d6850939e4e09f 100644 GIT binary patch delta 2428 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 From bbded4520027b5f6ca4a4b0f1a3780aa966b48ba Mon Sep 17 00:00:00 2001 From: Pecusx Date: Wed, 25 Jan 2023 18:28:36 +0100 Subject: [PATCH 08/17] Mere memory and 2 new talk texts (RB5200). And... no memory :) --- .gitignore | 1 + artwork/talk.asm | 136 ++++++++++++++++++++++++----------------------- grafproc.asm | 15 +++--- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49299 -> 49340 bytes 5 files changed, 76 insertions(+), 76 deletions(-) diff --git a/.gitignore b/.gitignore index 36161dd..015326c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ scorch.lab scorch.lst textproc.lab textproc.lst +artwork/talk.as_ diff --git a/artwork/talk.asm b/artwork/talk.asm index 81b049c..7eb46ab 100644 --- a/artwork/talk.asm +++ b/artwork/talk.asm @@ -53,79 +53,81 @@ L49 dta d"DIE, TANK-SCUM!" L50 dta d"I'M GONNA BREAK YOUR FACE!" L51 dta d"MAMA SAID KNOCK YOU OUT!" L52 dta d"I HOPE YOU ENJOY PAIN!" +L53 dta d"HOW'D YOU LIKE ONE ACROSS YOUR LIPS?" ;(sanford and son) ;-------------------------------- -L53 dta d"PARTING IS SUCH SWEET SORROW... NOT!" -L54 dta d"UGH!" -L55 dta d"AARGH!" -L56 dta d"AAAGGHHH!" -L57 dta d"I'M MELTING!" -L58 dta d"OOF.." -L59 dta d"OH!" -L60 dta d"EEEK!" -L61 dta d"AACCH!" -L62 dta d"I HATE IT WHEN THAT HAPPENS." -L63 dta d"ONE DIRECT HIT CAN RUIN YOUR WHOLE DAY." -L64 dta d"OH NO!" -L65 dta d"NOT ME!" -L66 dta d"OUCH." -L67 dta d"OH NO, NOT AGAIN." -L68 dta d"ANOTHER ONE BITES THE DUST." -L69 dta d"GOODBYE." -L70 dta d"HELP ME!" -L71 dta d"FAREWELL, CRUEL WORLD." -L72 dta d"REMEMBER THE ALAMO!" -L73 dta d"OH MAN!" -L74 dta d"DOOUGH!" -L75 dta d"ANOTHER DAY, ANOTHER BOMB." -L76 dta d"THIS IS THE END, MY ONLY FRIEND." -L77 dta d"VERY FUNNY." -L78 dta d"THE FAT LADY SANG." -L79 dta d"WHY DOES EVERYTHING HAPPEN TO ME?" -L80 dta d"I'M GOING DOWN." -L81 dta d"I'VE GOT A BAD FEELING ABOUT THIS." -L82 dta d"CRAPOLA." -L83 dta d"POW!" -L84 dta d"BIF!" -L85 dta d"BAM!" -L86 dta d"ZONK!" -L87 dta d"I SHOULD'VE LISTENED TO MY MOTHER..." -L88 dta d"I WALK THROUGH THE VALLEY OF THE SHADOW..." -L89 dta d"WHAT WAS THAT NOISE?" -L90 dta d"MAMA SAID THERE'D BE DAYS LIKE THIS." -L91 dta d"ITS JUST ONE OF THOSE DAYS..." -L92 dta d"I SEE A BRIGHT LIGHT..." -L93 dta d"MOMMY? IS THAT YOU?" -L94 dta d"I LET YOU HIT ME!" -L95 dta d"SUCKER SHOT!" -L96 dta d"I DIDN'T WANT TO LIVE ANYWAY." -L97 dta d"--" -L98 dta d"WAS THAT AS CLOSE AS I THINK IT WAS?" -L99 dta d"JOIN THE ARMY, SEE THE WORLD THEY SAID." -L100 dta d"IT WASN'T JUST A JOB IT WAS AN ADVENTURE!" -L101 dta d"I DIDN'T LIKE VIOLENCE ANYWAY!" -L102 dta d"I THOUGHT YOU LIKED ME?" -L103 dta d"CTO XYEB" -L104 dta d"I THINK THIS GUY'S A LITTLE CRAZY." -L105 dta d"SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE." -L106 dta d"HEY! KILLIN' AIN'T COOL." -L107 dta d"GEE... THANKS." -L108 dta d"I'VE FALLEN AND I CAN'T GET UP!" -L109 dta d"911?" -L110 dta d"OH NO! HERE I BLOW AGAIN!" -L111 dta d"I'LL BE BACK..." -L112 dta d"HEY - I'VE GOT LAWYERS." -L113 dta d"TIME TO CALL 1-900-SUE-TANK." +L54 dta d"PARTING IS SUCH SWEET SORROW... NOT!" +L55 dta d"UGH!" +L56 dta d"AARGH!" +L57 dta d"AAAGGHHH!" +L58 dta d"I'M MELTING!" +L59 dta d"OOF.." +L60 dta d"OH!" +L61 dta d"EEEK!" +L62 dta d"AACCH!" +L63 dta d"I HATE IT WHEN THAT HAPPENS." +L64 dta d"ONE DIRECT HIT CAN RUIN YOUR WHOLE DAY." +L65 dta d"OH NO!" +L66 dta d"NOT ME!" +L67 dta d"OUCH." +L68 dta d"OH NO, NOT AGAIN." +L69 dta d"ANOTHER ONE BITES THE DUST." +L70 dta d"GOODBYE." +L71 dta d"HELP ME!" +L72 dta d"FAREWELL, CRUEL WORLD." +L73 dta d"REMEMBER THE ALAMO!" +L74 dta d"OH MAN!" +L75 dta d"DOOUGH!" +L76 dta d"ANOTHER DAY, ANOTHER BOMB." +L77 dta d"THIS IS THE END, MY ONLY FRIEND." +L78 dta d"VERY FUNNY." +L79 dta d"THE FAT LADY SANG." +L80 dta d"WHY DOES EVERYTHING HAPPEN TO ME?" +L81 dta d"I'M GOING DOWN." +L82 dta d"I'VE GOT A BAD FEELING ABOUT THIS." +L83 dta d"CRAPOLA." +L84 dta d"POW!" +L85 dta d"BIF!" +L86 dta d"BAM!" +L87 dta d"ZONK!" +L88 dta d"I SHOULD'VE LISTENED TO MY MOTHER..." +L89 dta d"I WALK THROUGH THE VALLEY OF THE SHADOW..." +L90 dta d"WHAT WAS THAT NOISE?" +L91 dta d"MAMA SAID THERE'D BE DAYS LIKE THIS." +L92 dta d"ITS JUST ONE OF THOSE DAYS..." +L93 dta d"I SEE A BRIGHT LIGHT..." +L94 dta d"MOMMY? IS THAT YOU?" +L95 dta d"I LET YOU HIT ME!" +L96 dta d"SUCKER SHOT!" +L97 dta d"I DIDN'T WANT TO LIVE ANYWAY." +L98 dta d"--" +L99 dta d"WAS THAT AS CLOSE AS I THINK IT WAS?" +L100 dta d"JOIN THE ARMY, SEE THE WORLD THEY SAID." +L101 dta d"IT WASN'T JUST A JOB IT WAS AN ADVENTURE!" +L102 dta d"I DIDN'T LIKE VIOLENCE ANYWAY!" +L103 dta d"I THOUGHT YOU LIKED ME?" +L104 dta d"CTO XYEB" +L105 dta d"I THINK THIS GUY'S A LITTLE CRAZY." +L106 dta d"SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE." +L107 dta d"HEY! KILLIN' AIN'T COOL." +L108 dta d"GEE... THANKS." +L109 dta d"I'VE FALLEN AND I CAN'T GET UP!" +L110 dta d"911?" +L111 dta d"OH NO! HERE I BLOW AGAIN!" +L112 dta d"I'LL BE BACK..." +L113 dta d"HEY - I'VE GOT LAWYERS." +L114 dta d"TIME TO CALL 1-900-SUE-TANK." +L115 dta d"YOU BIG DUMMY!" ;(sanford and son) LEND OffensiveTextTableL - dta L0,>L1,>L2,>L3,>L4,>L5,>L6,>L7,>L8,>L9,>L10,>L11,>L12,>L13,>L14,>L15,>L16,>L17,>L18,>L19,>L20,>L21,>L22,>L23,>L24,>L25,>L26,>L27,>L28,>L29,>L30,>L31,>L32,>L33,>L34,>L35,>L36,>L37,>L38,>L39,>L40,>L41,>L42,>L43,>L44,>L45,>L46,>L47,>L48,>L49,>L50,>L51,>L52 - dta >L53,>L54,>L55,>L56,>L57,>L58,>L59,>L60,>L61,>L62,>L63,>L64,>L65,>L66,>L67,>L68,>L69,>L70,>L71,>L72,>L73,>L74,>L75,>L76,>L77,>L78,>L79,>L80,>L81,>L82,>L83,>L84,>L85,>L86,>L87,>L88,>L89,>L90,>L91,>L92,>L93,>L94,>L95,>L96,>L97,>L98,>L99,>L100,>L101,>L102,>L103,>L104,>L105,>L106,>L107,>L108,>L109,>L110,>L111,>L112,>L113 + dta >L0,>L1,>L2,>L3,>L4,>L5,>L6,>L7,>L8,>L9,>L10,>L11,>L12,>L13,>L14,>L15,>L16,>L17,>L18,>L19,>L20,>L21,>L22,>L23,>L24,>L25,>L26,>L27,>L28,>L29,>L30,>L31,>L32,>L33,>L34,>L35,>L36,>L37,>L38,>L39,>L40,>L41,>L42,>L43,>L44,>L45,>L46,>L47,>L48,>L49,>L50,>L51,>L52,>L53 + dta >L54,>L55,>L56,>L57,>L58,>L59,>L60,>L61,>L62,>L63,>L64,>L65,>L66,>L67,>L68,>L69,>L70,>L71,>L72,>L73,>L74,>L75,>L76,>L77,>L78,>L79,>L80,>L81,>L82,>L83,>L84,>L85,>L86,>L87,>L88,>L89,>L90,>L91,>L92,>L93,>L94,>L95,>L96,>L97,>L98,>L99,>L100,>L101,>L102,>L103,>L104,>L105,>L106,>L107,>L108,>L109,>L110,>L111,>L112,>L113,>L114,>L115 dta >LEND -NumberOfOffensiveTexts=53 -NumberOfDeffensiveTexts=61 +NumberOfOffensiveTexts=54 +NumberOfDeffensiveTexts=62 .endp hoverFull dta d"MY HOVERCRAFT IS FULL OF EELS!" hoverFullEnd diff --git a/grafproc.asm b/grafproc.asm index c7b3f0b..877e1dd 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -2205,15 +2205,12 @@ ybarrel rts .endp ;-------------------------------------------------- -.proc ColorsOfSprites - lda TankColoursTable ; colours of sprites under tanks - sta PCOLR0 - lda TankColoursTable+1 - sta PCOLR1 - lda TankColoursTable+2 - sta PCOLR2 - lda TankColoursTable+3 - sta PCOLR3 +.proc ColorsOfSprites + ldy #3 +@ lda TankColoursTable,y ; colours of sprites under tanks + sta PCOLR0,y + dey + bpl @- LDA TankColoursTable+4 STA COLOR3 ; joined missiles (5th tank) rts diff --git a/scorch.bin b/scorch.bin index b6ae662d7c4b1effba510d2d5380a4d71c842dba..9aac8ae191b9ebaf93297a1e9b94586a93e37914 100644 GIT binary patch delta 2551 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 delta 2523 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 From e50bc8669ebdcac7da1c6c72b91cfb6ab9a42418 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Fri, 27 Jan 2023 09:30:27 +0100 Subject: [PATCH 09/17] Code cleanup. --- grafproc.asm | 305 ++++++++++++++++++++++++++++++++++++++++++++++++ interrupts.asm | 267 ++++++++++++++++++++++++++++++++++++++++++ scorch.asm | 306 +------------------------------------------------ scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49340 -> 49340 bytes textproc.asm | 303 ------------------------------------------------ 6 files changed, 573 insertions(+), 608 deletions(-) create mode 100644 interrupts.asm diff --git a/grafproc.asm b/grafproc.asm index 877e1dd..6fbd46e 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -2032,6 +2032,311 @@ EndPut4x4 rts .endp +;-------------------------------------------------------- +.proc DisplayOffensiveTextNr ; + ldx TextNumberOff + lda talk.OffensiveTextTableL,x + sta LineAddress4x4 + lda talk.OffensiveTextTableH,x + sta LineAddress4x4+1 + inx ; the next text + lda talk.OffensiveTextTableH,x + sta temp+1 + lda talk.OffensiveTextTableL,x + sta temp ; opty possible + ; substract address of the next text from previous to get text length + sbw temp LineAddress4x4 temp2 + mva temp2 fx + + ;jsr Display4x4AboveTank + ;rts + ; POZOR !!! +.endp + +;-------------------------------------------------------- +.proc Display4x4AboveTank ; + ; Displays texts using PutChar4x4 above tank and mountains. + ; Pretty cool, eh! + ;parameters are: + ;Y - number of tank above which text is displayed + ;fx - length of text + ;LineAddress4x4 - address of the text + + ;lets calculate position of the text first! + ;that's easy because we have number of tank + ;and xtankstableL and H keep X position of a given tank + + lda xtankstableL,y + sta temp + lda xtankstableH,y + sta temp+1 + ;now we should substract length of the text-1 + ;temp2 = (fx-1)*2 + ldy fx + dey + tya + asl + sta temp2 + mva #0 temp2+1 + ;now we have HALF length in pixels + ;stored in temp2 + + ;here we assume max length of text + ;to display is 127 chars, but later it turns out it must be max 63! + + sbw temp temp2 ; here begin of the text is in TEMP !!!! + ;now we should check overflows + ;lda temp+1 ; opty + bpl DOTNnotLessThanZero + ;less than zero, so should be zero + mwa #0 temp + beq DOTNnoOverflow + +DOTNnotLessThanZero + ;so check if end larger than screenwidth + + + lda fx + asl + asl + ;length in pixels - + ;text length max 63 chars !!!!!!!! + + + clc + adc temp + sta temp2 + lda #0 + adc temp+1 + sta temp2+1 + ;now in temp2 is end of the text in pixels + ;so check if not greater than screenwitdth + cpw temp2 #screenwidth + bcc DOTNnoOverflow + + ;if end is greater than screenwidth + ;then screenwidth - length is fine + lda fx + asl + asl + sta temp + mva #0 temp+1 + + sec + lda #<(screenwidth-1) + sbc temp + sta temp + lda #>(screenwidth-1) + sbc temp+1 + sta temp+1 +DOTNnoOverflow + ;here in temp we have really good x position of text + + mwa temp LineXdraw + + ;now let's get y position + ;we will try to put text as low as possible + ;just above mountains (so mountaintable will be checked) + lda fx + asl + asl + tay + ;in temp there still is X position of text + ;if we add temp and Y we will get end of the text + ;so, lets go through mountaintable and look for + ;the lowest value within + ;Mountaitable+temp and Mountaitable+temp+Y + + adw temp #MountainTable + + mva #screenheight temp2 ;initialisation of the lowest value + +DOTLowestMountainValueLoop + lda (temp),y + cmp temp2 + bcs DOTOldLowestValue ;old lowest value + ;new lowest value + sta temp2 +DOTOldLowestValue + dey + cpy #$ff + bne DOTLowestMountainValueLoop + + sec + lda temp2 + sbc #(4+9) ;9 pixels above ground (and tanks...) + sta LineYdraw + + jmp TypeLine4x4.noLengthNoColor ; rts + +.endp + +;-------------------------------------------------------- +.proc DisplayTankNameAbove ; + lda tankNr + :3 asl ; *8 + clc + adc #Tanksnames + sta temp+1 ; TextAddress+1 + mwa temp LineAddress4x4 + + ;find length of the tank's name + ldy #7 +@ + lda (temp),y + bne end_found + dey + bne @- + +end_found + iny + sty fx + ldy tankNr + jsr Display4x4AboveTank + rts +.endp + +;------------------------------- +.proc TypeLine4x4 ; +;------------------------------- + ;this routine prints line of length `fx` + ;address in LineAddress4x4 + ;starting from LineXdraw, LineYdraw + + lda #14 ; default length of 4x4 texts + sta fx + +variableLength + lda #$ff ; $ff - visible characters, $00 - clearing + +staplot4x4color + sta plot4x4color +noLengthNoColor + + ldy #0 + sty LineCharNr + +TypeLine4x4Loop + ldy LineCharNr + + lda (LineAddress4x4),y + and #$3f ;always CAPITAL letters + sta CharCode4x4 + mwa LineXdraw dx + mva LineYdraw dy + mva #0 dy+1 ; dy is 2 bytes value + jsr PutChar4x4 ;type empty pixels as well! + adw LineXdraw #4 + inc:lda LineCharNr + cmp fx + bne TypeLine4x4Loop + +EndOfTypeLine4x4 + rts +.endp + + +;-------------------------------- +.proc AreYouSure +;using 4x4 font + + mva #4 ResultY ; where seppuku text starts Y-wise on the screen + + ;top frame + mva ResultY LineYdraw + jsr TL4x4_top + adb ResultY #4 ;next line + + ;sure? + mwa #areYouSureText LineAddress4x4 + jsr _sep_opty + ;bottom frame + mva ResultY LineYdraw + jsr TL4x4_bottom + + + jsr GetKey + cmp #@kbcode._Y ; $2b ; "Y" + bne @+ + mva #$80 escFlag + bne skip01 +@ mva #0 escFlag +skip01 + jsr WaitForKeyRelease + + ;clean + mva #3 di + mva #4 ResultY +@ + mva #$ff plot4x4color + mwa #lineClear LineAddress4x4 + jsr _sep_opty + dec di + bne @- + +quit_areyousure + rts +.endp + +.proc _sep_opty + mwa #((ScreenWidth/2)-(8*4)) LineXdraw ; centering + mva ResultY LineYdraw + jsr TypeLine4x4 + adb ResultY #4 ;next line + rts +.endp + +;-------------------------------- +.proc DisplaySeppuku +;using 4x4 font + + + mva #20 fs ; temp, how many times blink the billboard +seppuku_loop + lda CONSOL ; turbo mode + and #%00000001 ; START KEY + sne:mva #1 fs ; finish it + + mva #4 ResultY ; where seppuku text starts Y-wise on the screen + + ;top frame + mva ResultY LineYdraw + jsr TL4x4_top + adb ResultY #4 ;next line + + ;seppuku + mwa #seppukuText LineAddress4x4 + jsr _sep_opty + + ;bottom frame + mva ResultY LineYdraw + jsr TL4x4_bottom ; just go + + ;clean seppuku + + mva #3 di + ;mva #4 ResultY + lda #4 + sta ResultY +loplop ;@ + mwa #lineClear LineAddress4x4 + jsr _sep_opty + + dec di + bne loplop ;@- + + dec fs + jne seppuku_loop + +quit_seppuku + rts + +.endp + +;-------------------------------------------------- .proc SetMainScreen ; mva #0 dmactls SetDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen diff --git a/interrupts.asm b/interrupts.asm new file mode 100644 index 0000000..175bdb1 --- /dev/null +++ b/interrupts.asm @@ -0,0 +1,267 @@ +; @com.wudsn.ide.asm.mainsourcefile=scorch.asm + + .IF *>0 ;this is a trick that prevents compiling this file alone + +;-------------------------------------------------- +.proc DLIinterruptGraph + pha + phy + ldy dliCounter + lda dliColorsBack,y + .IF TARGET = 800 + nop ; necessary on 800 because DLIs take less time, jitter visible without it + nop + nop + .ENDIF + nop + nop + sta COLPF1 + lda GradientNr + bne GoGradient + ldy #$ff ; one mauntain color +GoGradient + iny + lda (GradientColors),y ; mountains colors array + sta COLPF2 + inc dliCounter + ply + pla + rti +.endp +;-------------------------------------------------- +.proc DLIinterruptOptions + pha + phy + lda #0 ; background color + sta COLPF1 + ldy GradientNr + beq @+ + ldy #1 +@ lda (GradientColors),y ; mountains colors array + sta COLPF2 + ply + pla + rti +.endp +;-------------------------------------------------- +.proc DLIinterruptGameOver + pha + phy + lda dliCounter + bne EndofPMG + lda #%00100001 ; playfield after P/M - prior=1 + ;STA WSYNC + sta PRIOR + bne EndOfDLI_GO +EndofPMG + cmp #1 + bne ColoredLines + lda #%00100100 ; playfield before P/M + ;STA WSYNC + sta PRIOR + bne EndOfDLI_GO +ColoredLines + cmp #9 + beq CreditsScroll + tay + lda GameOverColoursTable-3,y ; -2 because this is DLI nr 2 and -1 (labels line) + ldy #$0a ; text colour (brightnes) + ;STA WSYNC + sta COLPF2 + sty COLPF1 + bne EndOfDLI_GO +CreditsScroll + lda #$00 + sta COLPF2 +EndOfDLI_GO + inc dliCounter + ply + pla + rti +.endp +;-------------------------------------------------- +.proc DLIinterruptText + pha + lda dliCounter + bne MoreBarsColorChange + lda #TextBackgroundColor + ;sta WSYNC + sta COLPF2 + mva #TextForegroundColor COLPF3 + bne EndOfDLI_Text +MoreBarsColorChange + and #%00000001 + rol + sta COLPF2 +EndOfDLI_Text + inc dliCounter + pla +DLIinterruptNone + rti + +.endp +;-------------------------------------------------- +.proc VBLinterrupt + mva #0 dliCounter + mva #$02 DliColorBack + + lda PAL + and #%00001110 + beq itsPAL + ;it is NTSC here + dec NTSCcounter + bne itsPAL + mva #6 NTSCcounter + bne SkippedIfNTSC ; skip doing VBL things each 6 frames in Amerika, Amerika + ; We're all living in Amerika, Coca Cola, Wonderbra + +itsPAL + ; pressTimer is trigger tick counter. always 50 ticks / s + bit:smi:inc pressTimer ; timer halted if >127. max time measured 2.5 s + +SkippedIfNTSC + + bit RMT_blocked + bmi SkipRMTVBL + ; ------- RMT ------- + lda sfx_effect + bmi lab2 + asl @ ; * 2 + tay ;Y = 2,4,..,16 instrument number * 2 (0,2,4,..,126) + ldx #0 ;X = 0 channel (0..3 or 0..7 for stereo module) + lda #0 ;A = 0 note (0..60) + bit noSfx + smi:jsr RASTERMUSICTRACKER+15 ;RMT_SFX start tone (It works only if FEAT_SFX is enabled !!!) + + lda #$ff + sta sfx_effect ;reinit value +lab2 + jsr RASTERMUSICTRACKER+3 ;1 play + ; ------- RMT ------- +SkipRMTVBL + bit ScrollFlag + bpl EndOfCreditsVBI +CreditsVBI + inc CreditsVScrol + lda CreditsVScrol + cmp #32 ;not too fast + beq nextlinedisplay + :2 lsr ;not too fast + sta VSCROL + jmp EndOfCreditsVBI +nextlinedisplay + lda #0 + sta CreditsVScrol + sta VSCROL + clc + lda DLCreditsAddr + adc #40 + sta DLCreditsAddr + bcc @+ + inc DLCreditsAddr+1 +@ + cmp #CreditsLastLine + bne EndOfCreditsVBI +; adw DLCreditsAddr #40 +; cpw DLCreditsAddr #CreditsLastLine +; bne EndOfCreditsVBI + mwa #Credits DLCreditsAddr +EndOfCreditsVBI + .IF TARGET = 5200 + lda SkStatSimulator + bmi @+ + inc SkStatSimulator +@ + lda JoystickNumber ; select port + ora #%00000100 ; Speaker off, Pots enabled + sta CONSOL5200 + + center = 114 ;Read analog stick and make it look like a digital stick + threshold = 60 + + lda JoystickNumber + asl + tax + lda paddl0,x ;Read POT0 value (horizontal position) + cmp #center+threshold ;Compare with right threshold + rol stick0 ;Feed carry into digital stick value + cmp #center-threshold ;Compare with left threshold + rol stick0 ;Feed carry into digital stick value + + lda paddl1,x ;Read POT1 value (vertical position) + cmp #center+threshold ;Compare with down threshold + rol stick0 ;Feed carry into digital stick value + cmp #center-threshold ;Compare with down threshold + rol stick0 ;Feed carry into digital stick value + + lda stick0 ;0 indicates a press so the right/down values need to be inverted + eor #2+8 + and #$0f + sta stick0 + + ldx JoystickNumber + ; check shift key (5200 second fire button) + lda SKSTAT + :3 lsr ; third bit + and trig0,x ; and first button + ;lda trig0,x + sta strig0 ;Move hardware to shadow + + mva chbas chbase + + lda skstat ;Reset consol key shadow is no key is pressed anymore + and #4 + beq @+ + mva #consol_reset consol + mva #@kbcode._none kbcode +@ + + pla + tay + pla + tax + pla + rti + .ELSE + ; support for joysticks :) + ldx JoystickNumber + lda STICK0,x + sta STICK0 + lda STRIG0,x + sta STRIG0 + jmp XITVBV + .ENDIF +.endp + .IF TARGET = 5200 +.proc kb_continue + sta kbcode ;Store key code in shadow. + mva #0 SkStatSimulator +exit pla + tay + pla + tax + pla + rti +.endp + .ENDIF + +;-------------------------------------------------- +.macro SetDLI +; SetDLI #WORD +; Initialises Display List Interrupts + LDY # <:1 + LDX # >:1 + jsr _SetDLIproc +.endm +.proc _SetDLIproc + LDA #$C0 + STY VDSLST + STX VDSLST+1 + STA NMIEN + rts +.endp + + .ENDIF diff --git a/scorch.asm b/scorch.asm index cf6142f..72a1f95 100644 --- a/scorch.asm +++ b/scorch.asm @@ -1257,251 +1257,6 @@ MakeTanksVisible bpl @- rts .endp -;-------------------------------------------------- -.proc DLIinterruptGraph - pha - phy - ldy dliCounter - lda dliColorsBack,y - .IF TARGET = 800 - nop ; necessary on 800 because DLIs take less time, jitter visible without it - nop - nop - .ENDIF - nop - nop - sta COLPF1 - lda GradientNr - bne GoGradient - ldy #$ff ; one mauntain color -GoGradient - iny - lda (GradientColors),y ; mountains colors array - sta COLPF2 - inc dliCounter - ply - pla - rti -.endp -;-------------------------------------------------- -.proc DLIinterruptOptions - pha - phy - lda #0 ; background color - sta COLPF1 - ldy GradientNr - beq @+ - ldy #1 -@ lda (GradientColors),y ; mountains colors array - sta COLPF2 - ply - pla - rti -.endp -;-------------------------------------------------- -.proc DLIinterruptGameOver - pha - phy - lda dliCounter - bne EndofPMG - lda #%00100001 ; playfield after P/M - prior=1 - ;STA WSYNC - sta PRIOR - bne EndOfDLI_GO -EndofPMG - cmp #1 - bne ColoredLines - lda #%00100100 ; playfield before P/M - ;STA WSYNC - sta PRIOR - bne EndOfDLI_GO -ColoredLines - cmp #9 - beq CreditsScroll - tay - lda GameOverColoursTable-3,y ; -2 because this is DLI nr 2 and -1 (labels line) - ldy #$0a ; text colour (brightnes) - ;STA WSYNC - sta COLPF2 - sty COLPF1 - bne EndOfDLI_GO -CreditsScroll - lda #$00 - sta COLPF2 -EndOfDLI_GO - inc dliCounter - ply - pla - rti -.endp -;-------------------------------------------------- -.proc DLIinterruptText - pha - lda dliCounter - bne MoreBarsColorChange - lda #TextBackgroundColor - ;sta WSYNC - sta COLPF2 - mva #TextForegroundColor COLPF3 - bne EndOfDLI_Text -MoreBarsColorChange - and #%00000001 - rol - sta COLPF2 -EndOfDLI_Text - inc dliCounter - pla -DLIinterruptNone - rti - -.endp -;-------------------------------------------------- -.proc VBLinterrupt - mva #0 dliCounter - mva #$02 DliColorBack - - lda PAL - and #%00001110 - beq itsPAL - ;it is NTSC here - dec NTSCcounter - bne itsPAL - mva #6 NTSCcounter - bne SkippedIfNTSC ; skip doing VBL things each 6 frames in Amerika, Amerika - ; We're all living in Amerika, Coca Cola, Wonderbra - -itsPAL - ; pressTimer is trigger tick counter. always 50 ticks / s - bit:smi:inc pressTimer ; timer halted if >127. max time measured 2.5 s - -SkippedIfNTSC - - bit RMT_blocked - bmi SkipRMTVBL - ; ------- RMT ------- - lda sfx_effect - bmi lab2 - asl @ ; * 2 - tay ;Y = 2,4,..,16 instrument number * 2 (0,2,4,..,126) - ldx #0 ;X = 0 channel (0..3 or 0..7 for stereo module) - lda #0 ;A = 0 note (0..60) - bit noSfx - smi:jsr RASTERMUSICTRACKER+15 ;RMT_SFX start tone (It works only if FEAT_SFX is enabled !!!) - - lda #$ff - sta sfx_effect ;reinit value -lab2 - jsr RASTERMUSICTRACKER+3 ;1 play - ; ------- RMT ------- -SkipRMTVBL - bit ScrollFlag - bpl EndOfCreditsVBI -CreditsVBI - inc CreditsVScrol - lda CreditsVScrol - cmp #32 ;not too fast - beq nextlinedisplay - :2 lsr ;not too fast - sta VSCROL - jmp EndOfCreditsVBI -nextlinedisplay - lda #0 - sta CreditsVScrol - sta VSCROL - clc - lda DLCreditsAddr - adc #40 - sta DLCreditsAddr - bcc @+ - inc DLCreditsAddr+1 -@ - cmp #CreditsLastLine - bne EndOfCreditsVBI -; adw DLCreditsAddr #40 -; cpw DLCreditsAddr #CreditsLastLine -; bne EndOfCreditsVBI - mwa #Credits DLCreditsAddr -EndOfCreditsVBI - .IF TARGET = 5200 - lda SkStatSimulator - bmi @+ - inc SkStatSimulator -@ - lda JoystickNumber ; select port - ora #%00000100 ; Speaker off, Pots enabled - sta CONSOL5200 - - center = 114 ;Read analog stick and make it look like a digital stick - threshold = 60 - - lda JoystickNumber - asl - tax - lda paddl0,x ;Read POT0 value (horizontal position) - cmp #center+threshold ;Compare with right threshold - rol stick0 ;Feed carry into digital stick value - cmp #center-threshold ;Compare with left threshold - rol stick0 ;Feed carry into digital stick value - - lda paddl1,x ;Read POT1 value (vertical position) - cmp #center+threshold ;Compare with down threshold - rol stick0 ;Feed carry into digital stick value - cmp #center-threshold ;Compare with down threshold - rol stick0 ;Feed carry into digital stick value - - lda stick0 ;0 indicates a press so the right/down values need to be inverted - eor #2+8 - and #$0f - sta stick0 - - ldx JoystickNumber - ; check shift key (5200 second fire button) - lda SKSTAT - :3 lsr ; third bit - and trig0,x ; and first button - ;lda trig0,x - sta strig0 ;Move hardware to shadow - - mva chbas chbase - - lda skstat ;Reset consol key shadow is no key is pressed anymore - and #4 - beq @+ - mva #consol_reset consol - mva #@kbcode._none kbcode -@ - - pla - tay - pla - tax - pla - rti - .ELSE - ; support for joysticks :) - ldx JoystickNumber - lda STICK0,x - sta STICK0 - lda STRIG0,x - sta STRIG0 - jmp XITVBV - .ENDIF -.endp - .IF TARGET = 5200 -.proc kb_continue - sta kbcode ;Store key code in shadow. - mva #0 SkStatSimulator -exit pla - tay - pla - tax - pla - rti -.endp - .ENDIF ;---------------------------------------------- .proc RandomizeSequence0 ldx #0 @@ -1973,66 +1728,7 @@ noingame rts .endp ;-------------------------------------------------- -.macro SetDLI -; SetDLI #WORD -; Initialises Display List Interrupts - LDY # <:1 - LDX # >:1 - jsr _SetDLIproc -.endm -.proc _SetDLIproc - LDA #$C0 - STY VDSLST - STX VDSLST+1 - STA NMIEN - rts -.endp -;-------------------------------------------------- -/* ;-------------------------------------------------- -.macro randomize floor ceiling -;-------------------------------------------------- - ;usage: randomize floor ceiling - ;returns (in A) a random .byte between "floor" and "ceiling" - jsr _randomizator - .byte :floor - .byte :ceiling -.endm - -.proc _randomizator -; private function that accompanies `randomize` macro -; trashes: magic, temp, Y - pla - sta magic - pla - sta magic+1 - ldy #1 ; add 1 to the value got from the stack to point to the input parameters - lda (magic),y - sta temp - iny - lda (magic),y - sta temp+1 - -?rand - lda random - cmp temp ;floor - bcc ?rand - cmp temp+1 ;ceiling - bcs ?rand - tay ; save the result - - ; point the PC to a byte after the parameters - clc - lda magic - adc #2 ; length of the parameters in bytes - sta magic - lda magic+1 - adc #0 - pha - lda magic - pha - tya ; retrieve the result - rts -.endp */ + icl 'interrupts.asm' ;---------------------------------------------- icl 'constants.asm' ;---------------------------------------------- diff --git a/scorch.bin b/scorch.bin index 9aac8ae191b9ebaf93297a1e9b94586a93e37914..cbaf2e1fcd9f59dfb8cce554154aad35d1a3221f 100644 GIT binary patch delta 3349 zcmZ`*4OG-s7H8hTpg1t2Olr!&Q&B{qnF$4y0$s$9;SVt%6p7gYVZaCsj0ooNVfmEY zrjTd09}!6X(MOGew1{_*f#Ez0qW$a@2SYNR(pwl^tFOhImE zfzGHitiu_CnAtfC)w2L+*g0p|71ykD-XGZq&OpRW&LG6rf|$VCm3)Srl5^k$7v?gA zl_pHKVzdne(IeVRIPIaSuM2p#0Vf;re{ylbHWonq3TN@B_uw}Kd{6dLQ18!`3MT~o zl>rp2LYY-|?yIrCvWWaKB6$(ibrQlTU38>VEpk#^y&EG7dD`ZsyzybMEozRIKY z;OIs?$A*7jixX`)q>e^~-X0cb!m$ll(}<7O;`27TA#?-!%t44?4Q;bQmbf-u8eRsot>r2lmys~cVAKIT#Ok2^%!m1+ldtSO%1y=TbRvcd= z+KCnBez)#0#khoSpK~lpT>~NpH)+S?HXOYJz8Jn}#8Yzdqx1Qyv9MOz&3u(`(s04| z3yL%&d?)HK(pSUR^5MtuH8PpWBIFrqswyD}%r6>gg({5(&He~wnd#@V54vAeeHPp_ z#|FDqv-PBgDT$q7vXfmWwQLdDg#mt}B#3P$GL}Yy@!Cd)Agr23<{_bAr0gu~GT|4^ zqHB}uL$h;--1UjsSs`aK;^Nu-IhBw-2om-udK@xYN?d@^K!sS~d@>m0XCAt; zmY_HjeKT^t^p!3X{XB9Z0*qXb+#8w)xKswijw3>c(S0Clxs>0qZ}A}*-0PPFOMC`7 z(Yp}%8H&z8b8zDh4hXnapV&t}#^zEwv0Rs^b&M_Yfs>_^lPr(8Su^b*zYxHbbEPydn|(tCV_Iw4k%4bW7Z# z2&Jhj2v3%IloMS+0L~MN;dQ;CJ`@2=o{5Wznk)mr479<^!KrqS@>Se#^qzz`bnt!k z<@9{q8MM8ecEs;T4_VzY2_HyMd9578%^&y=uBFv3FTPji9c<1vU8H zpFd{XLBb+QDI_BWu2cjT^hRQIdUSQC1j|eidj_8Tv!NF6h$Tg|T$U0`FB&QY%v8f| z#3C;mDjq5ts`h@%q&^XSaOJ!e5KIdMvk>Ip`{kpcI$As}zUuctJ6A?&e{nRm?u(n{ za_H1vFq;xjxqvCXwlV_25V{H@IJIWg5vSi(CC{_W)LJCO{DV{pom1NC)R0mR!!0uzSIs?R_Lk)+jh2mZG z&XiL1je4&dJRisJ*LMc=RgU~^7Pp4=Q)T&D*S@)4Tj?hi?J1r!Ad&UqN7@zf=v^Q3X-*+Oz&{4@ZhJ z?E;#prDJLL1x?gKuizHa-;e;V-12oFOXAeKnVh`r4PkTPH;_epdg-ll-E3TWuaT!>)#^~_j*mHc<67G15Q5gRu0p=87B%8SMq23;J^W5N4| zIDT~-i)KMP0UZWZXt>;S8LUOt>d*-6jOL4A1mx zd4n`bzQS+veu_6G(Bqu9ML&=$#gDc{Z&OOKrp?zMxtDEPC|RtoffCONXA%g;c7UCN zeu70?u7DPAP5?FN2e{g)UY}aPZ`Dq2E`-t`;Dc;3dx_k+L=KqYo&rc9`4fKL zNHzK>q~Akx_0i~AgL{|$s)PruM0iSm(J1`%g!rXbim%qSWiQ}y`9K>^HQ93hd3Ux) z;SXthvOlVGb5?}^kL)b*Ohwz2qXp-*Q6K4kKBrcKuGP^6x!IA|>P|#Li4c;Wg1@OJ z$<6`=a9#%$lAFXe2Xa?~rg)OmH7OKNaT+JZ(>)fnWK?CKGvjM~k%8Ry8s@6c+j!Gy zVRJ}(XTZL}uKE`Sv8v7EQC{bn`^sscvB}3{7fvWfYXKI%g%BTVd~3qBHoq3t znj%q>gXWqR@uy%nC8)V?+;4X&u0WcX4Udm47S*xoei+dKQ#vm~H%-ZWNH)jM0Mr3+ z;P_T^GixNY1fxDI=iN8rq1ex$&PE^qBBu$`j9n{;PcPS%dg@Vi(^d jJ89>Z`LuUSApPr>F4SajZ!LIA1r01`6!*7P3gv$R`xuZh delta 3372 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 diff --git a/scorch.xex b/scorch.xex index 2b8452e7ea875ea8560c1b2a70404c50e2e84804..7c11acc00b6be26bf8a9208ea0baf0e8e48d3b6d 100644 GIT binary patch delta 3202 zcmZ`*eOQy%6;Eye6(dQN3R;1Sf{Gslq#~W46+g!dk^oMJ&;Zp2!bd_3iGqrb3#d;N zxWd$yip&>z>99c1XLF+N>4+pxyC+&jS6A2SWYU!`tdB+ep*uH;w(9mra_&9%oOAE_ zcz@@d+bub_ThehM0bNkiKP5Eo8c{a=u{lK;g*W{}KxXk(d_jprlLdrFlsJA9wq^h$ ztUu}=9{r|!bqilf#t#(uOfnA16htJ`&Ax<>uEX0nJT4KW&n8Q_Tn?X5z`4fUhsY-E z&xDCtd0c!b^YCqJa%oE853gu}yJEu%?Xf zcZyZqpA&n|%HZ`zC3w<+byY4lteH9bSyJ?z5AtqB%W&Gh6B-wHWhsB&8I03*;`;_( zLw10hm71Onfjq^CU^g``@Vo-qlHPoX6l;gXc* z6#8z)To~X3k&9I0ULvHdig*|4@Pw+P< z`hifhTzG6gE^lgTPQj~EA)mq`a}*N%%+W{)HAf=hm9RTzhJ?8 zOpehC%~VMqghSB8pc`s>OH++5sHr+Xbjpab*&C1K+U4IidqW+blG$GG80RV?s1iPZ zM#xAm)Jsntd?q+nZ00NZ09t{H%q^Yxvva zLger*beZUO-J;3XLRbxyJJ7&xes^z`!;3HPt#nGb%LUY-OF#uhG^jWrXnm1&ZyZks zM-#$V$KBmC=oPq`kZLZZ2!n*8I6AV+6vubp-Al6h(}NJ4c0Y@@eqR< z0W5iT)@sK!RUEGxln_-1vStaRhz^|LvmMBqW6iee9K(Xd#iCk6z$}QR3SyZB{I5Oy z0T3O?dCDI0SfHJTkfC$IB>gjY?Fx3uH8|q<1$NV{5Eyah{+KImRqsi)FkTEk?c+#JhxU?!8o*UTO@+E z^l;l6^q!W+Z;wU4HPX`U3(yQB?cT0JohF)I7DQu8Baq%?$t?XFqH^_F6jMe&RL?+# zrS!f!0>y5pI5*^1t6Y!-0403m#s_=>5CF%nU4VL1LQ2(ISD~G*|^ir(jUI- z@94gP`jr3D`@R8Mz9qZ-ycmkbGIh^&M(KCI4j%hup{Jt0ETmx--?I!%CE2JupH`B! zj9exQCW27gKpWrI`+m*W&7#WIdzEb%C!5RvEulUZOs*G-_R15&muJYbi30^PX49c#M! z;H(Kh;awtjR}N^!!6>j!-`^i>xq8qbMqe0dLTw@=M{6fDa;7$xk*{iB3;x2$cQK?T zS$sD`V3PB6euBY?uB@YDrWd=S0H5jSbrXZGYu$+*Pa2y<6}`=-6TLX9&Tf}KWLfg3 zKSK`;bOnv^o?Z-}1TCZUyj=qxwa{06)Cv{8Xrx1Q&f3Vb7B;9E09$&G*Ti_P;0-qK z8a8dT;v^Rc-8v;3FhB{o4t!k|;yUA`)FVZIps&mnL^v7@#sT6$ufN>WDjO7$D}k`h z^(7y}HdjQhGKcs>bA#E{__V%Vb_Fs%!#3ia2GeH5Qcp=y=b_hGgNdnMz({`moY7E$ zP(b(r D0at-L delta 3231 zcmZ`5dsNfcIk}OD2qdjk!3tauMSOx*#i>}QtvY@n5^#2i4NxHvN*)k-R8TAz@ezew zVU~`G)F1NW3=71mb>iGP15J+I36_V`sZ%GyIojcRjIef(LY7k?ea{hk89W@jK^F5At1A~2luFOP@I6UX98Zc6?Y{ABBU>T z5W9ci{JM=FZo*zFd?pSDZWAPAn-hH**KWjx9QKL<>hp0jE|bGw#KXPTdLSvuXaQ8(>b`tLUT07Y(@7R&SaT%v`uON90Q#&4zc-GuAN zzKP<*<@DyJlS@W&;Z^_>>TtIa|L`Gv3HXi*JMnz)tt~#o-j(v_TYR{R_}k(?5Ylt; zdFY^u&R1<_pj@?HjuO<|92MlZg{!tW+PJcSkJa3pw}BajeeUVwx*L+&e);Ljr8`+k|%97sClc(AyS zJE*dzt7pmB^DEP;09dDg;31WPBpSZG0D;ct?dgdAYUg=0ltCvKhoX=Sx~ez~P2Nef ziUW7e%;MX8GslrO;VEes5{MO>G<+NB$CI+)!L~ULxv-n`ImR(%EYLDiDKKit8G!9V zqR7!z>3FOL!s|fxSCRd0hD)wm@F5i~fsQaK2$7Ns#w}8an%9b|2VYh_rsf3|Pr51` zXViFej;MX@m>e3ciFp5R#&D2WM8XZHw3nVENX?!K*PBHB%S6i&*mCuMGQ3Dj+cmkn z#*A_a_{%Pza1XvMatNewmQ02fT3-~#-OUghUPWDe1qD?P{&f}d{A?VY&9Y<-%Y$FA zJQyX%=!wi=*(fBQEprh%mqnjvR-j{9v?42LnrA|T8}8TImESkGK}nrb*jBfCiA4Ze z-kB8|*sq0r@326{!m} zs@hUSYjrE8HtOMPV7CJel=7vWdmZEW-JRvbGOkTWhjq~?#z0rt55@Yz$t@)>S<9hVf%7yg+DZE=f_EvXePqWM?J_u?KuItZt<0S=8=R>IXQlxD8y9{6 zNC(o!(2rdbXm@U4_)mhI_oCm_Ltai@aB`xZBA5=GHw^)Z%EJg=tPUZzL za5*nv&X0_OoEUgvgLIz9wJ;bWV*=rMgJ35^P^IZ-v$~D^$uKFT#bgsRzvX*{V=nk0 zwitZmn<*u!f;-sQUqp?jV6;4+)|jG@M?UQ{WrZ_Vo6I2xR%ptMQ^rYlbTlYH-Xvjn zy>#w(if~yIWc-n`YPg~L9sU!XYFMAI+3|DKTtsi|hbszbqe}b`%$N5{ z?987tcHKd}`Bc99mu|iJun$;McVCo(_pQNu`Wd9pJ`R|8Rqu+?RXq(U`+=DhOj6O2 z99m8`FwjkwP6ndpfo8tB^YhAY8YJaSgXPT_=mW}^Gm510*syMJL7hbb6SCXbsMQdy zJzU256SiQeh1W(X-V4e*suP_pEa1cA%eq*E z*HxrWgf#&+2bjQM*y)O8n}RejsICZalRhNgM02JuJc1u)gP+SH=B1`!XnjSNqRRWxjsE2Zf0k=3kaFREV3Kz8+9 zcgR3UA~3JMIwXMUsh5CAo5bM;3T#I!r4?ljq5;(=dars7V+*aB{YJNu`|^lgSp$Z8 zyHW{m(reyc3<90q(JgF)?iyTyxn@UrbmkW;%VE_ zDJUqO+K=vZ3yQ~y@ih9A?F`ZWNgo6IYdHq4*FI*~kO=lqyHH}h)$*H#KCqCoZeg{z H{!8&6rqquh diff --git a/textproc.asm b/textproc.asm index 52622fa..6ee2faa 100644 --- a/textproc.asm +++ b/textproc.asm @@ -1603,309 +1603,6 @@ displayloop1 rts .endp -;-------------------------------------------------------- -.proc DisplayOffensiveTextNr ; - ldx TextNumberOff - lda talk.OffensiveTextTableL,x - sta LineAddress4x4 - lda talk.OffensiveTextTableH,x - sta LineAddress4x4+1 - inx ; the next text - lda talk.OffensiveTextTableH,x - sta temp+1 - lda talk.OffensiveTextTableL,x - sta temp ; opty possible - ; substract address of the next text from previous to get text length - sbw temp LineAddress4x4 temp2 - mva temp2 fx - - ;jsr Display4x4AboveTank - ;rts - ; POZOR !!! -.endp - -;-------------------------------------------------------- -.proc Display4x4AboveTank ; - ; Displays texts using PutChar4x4 above tank and mountains. - ; Pretty cool, eh! - ;parameters are: - ;Y - number of tank above which text is displayed - ;fx - length of text - ;LineAddress4x4 - address of the text - - ;lets calculate position of the text first! - ;that's easy because we have number of tank - ;and xtankstableL and H keep X position of a given tank - - lda xtankstableL,y - sta temp - lda xtankstableH,y - sta temp+1 - ;now we should substract length of the text-1 - ;temp2 = (fx-1)*2 - ldy fx - dey - tya - asl - sta temp2 - mva #0 temp2+1 - ;now we have HALF length in pixels - ;stored in temp2 - - ;here we assume max length of text - ;to display is 127 chars, but later it turns out it must be max 63! - - sbw temp temp2 ; here begin of the text is in TEMP !!!! - ;now we should check overflows - ;lda temp+1 ; opty - bpl DOTNnotLessThanZero - ;less than zero, so should be zero - mwa #0 temp - beq DOTNnoOverflow - -DOTNnotLessThanZero - ;so check if end larger than screenwidth - - - lda fx - asl - asl - ;length in pixels - - ;text length max 63 chars !!!!!!!! - - - clc - adc temp - sta temp2 - lda #0 - adc temp+1 - sta temp2+1 - ;now in temp2 is end of the text in pixels - ;so check if not greater than screenwitdth - cpw temp2 #screenwidth - bcc DOTNnoOverflow - - ;if end is greater than screenwidth - ;then screenwidth - length is fine - lda fx - asl - asl - sta temp - mva #0 temp+1 - - sec - lda #<(screenwidth-1) - sbc temp - sta temp - lda #>(screenwidth-1) - sbc temp+1 - sta temp+1 -DOTNnoOverflow - ;here in temp we have really good x position of text - - mwa temp LineXdraw - - ;now let's get y position - ;we will try to put text as low as possible - ;just above mountains (so mountaintable will be checked) - lda fx - asl - asl - tay - ;in temp there still is X position of text - ;if we add temp and Y we will get end of the text - ;so, lets go through mountaintable and look for - ;the lowest value within - ;Mountaitable+temp and Mountaitable+temp+Y - - adw temp #MountainTable - - mva #screenheight temp2 ;initialisation of the lowest value - -DOTLowestMountainValueLoop - lda (temp),y - cmp temp2 - bcs DOTOldLowestValue ;old lowest value - ;new lowest value - sta temp2 -DOTOldLowestValue - dey - cpy #$ff - bne DOTLowestMountainValueLoop - - sec - lda temp2 - sbc #(4+9) ;9 pixels above ground (and tanks...) - sta LineYdraw - - jmp TypeLine4x4.noLengthNoColor ; rts - -.endp - -;-------------------------------------------------------- -.proc DisplayTankNameAbove ; - lda tankNr - :3 asl ; *8 - clc - adc #Tanksnames - sta temp+1 ; TextAddress+1 - mwa temp LineAddress4x4 - - ;find length of the tank's name - ldy #7 -@ - lda (temp),y - bne end_found - dey - bne @- - -end_found - iny - sty fx - ldy tankNr - jsr Display4x4AboveTank - rts -.endp - -;------------------------------- -.proc TypeLine4x4 ; -;------------------------------- - ;this routine prints line of length `fx` - ;address in LineAddress4x4 - ;starting from LineXdraw, LineYdraw - - lda #14 ; default length of 4x4 texts - sta fx - -variableLength - lda #$ff ; $ff - visible characters, $00 - clearing - -staplot4x4color - sta plot4x4color -noLengthNoColor - - ldy #0 - sty LineCharNr - -TypeLine4x4Loop - ldy LineCharNr - - lda (LineAddress4x4),y - and #$3f ;always CAPITAL letters - sta CharCode4x4 - mwa LineXdraw dx - mva LineYdraw dy - mva #0 dy+1 ; dy is 2 bytes value - jsr PutChar4x4 ;type empty pixels as well! - adw LineXdraw #4 - inc:lda LineCharNr - cmp fx - bne TypeLine4x4Loop - -EndOfTypeLine4x4 - rts -.endp - - -;-------------------------------- -.proc AreYouSure -;using 4x4 font - - mva #4 ResultY ; where seppuku text starts Y-wise on the screen - - ;top frame - mva ResultY LineYdraw - jsr TL4x4_top - adb ResultY #4 ;next line - - ;sure? - mwa #areYouSureText LineAddress4x4 - jsr _sep_opty - ;bottom frame - mva ResultY LineYdraw - jsr TL4x4_bottom - - - jsr GetKey - cmp #@kbcode._Y ; $2b ; "Y" - bne @+ - mva #$80 escFlag - bne skip01 -@ mva #0 escFlag -skip01 - jsr WaitForKeyRelease - - ;clean - mva #3 di - mva #4 ResultY -@ - mva #$ff plot4x4color - mwa #lineClear LineAddress4x4 - jsr _sep_opty - dec di - bne @- - -quit_areyousure - rts -.endp - -.proc _sep_opty - mwa #((ScreenWidth/2)-(8*4)) LineXdraw ; centering - mva ResultY LineYdraw - jsr TypeLine4x4 - adb ResultY #4 ;next line - rts -.endp - -;-------------------------------- -.proc DisplaySeppuku -;using 4x4 font - - - mva #20 fs ; temp, how many times blink the billboard -seppuku_loop - lda CONSOL ; turbo mode - and #%00000001 ; START KEY - sne:mva #1 fs ; finish it - - mva #4 ResultY ; where seppuku text starts Y-wise on the screen - - ;top frame - mva ResultY LineYdraw - jsr TL4x4_top - adb ResultY #4 ;next line - - ;seppuku - mwa #seppukuText LineAddress4x4 - jsr _sep_opty - - ;bottom frame - mva ResultY LineYdraw - jsr TL4x4_bottom ; just go - - ;clean seppuku - - mva #3 di - ;mva #4 ResultY - lda #4 - sta ResultY -loplop ;@ - mwa #lineClear LineAddress4x4 - jsr _sep_opty - - dec di - bne loplop ;@- - - dec fs - jne seppuku_loop - -quit_seppuku - rts - -.endp ;-------------------------------- .proc DisplayResults ; ;displays results of the round From fcbd0bc34a6d6155728f2311581396301e293337 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 30 Jan 2023 22:33:36 +0100 Subject: [PATCH 10/17] The G key works properly even if the wind options were last selected. --- scorch.xex | Bin 49340 -> 49340 bytes weapons.asm | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/scorch.xex b/scorch.xex index 7c11acc00b6be26bf8a9208ea0baf0e8e48d3b6d..643bfd7c0eecbccb95df441415a0db166c63939f 100644 GIT binary patch delta 16 Xcmdnf$h@bKdBfsPM%T?tIwi~jJ=+G- delta 16 Xcmdnf$h@bKdBfsPM)S=}Iwi~jJ% Date: Tue, 31 Jan 2023 10:57:58 +0100 Subject: [PATCH 11/17] Deactivation of "Lazy..." is now working properly. --- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49340 -> 49340 bytes weapons.asm | 1 + 3 files changed, 1 insertion(+) diff --git a/scorch.bin b/scorch.bin index cbaf2e1fcd9f59dfb8cce554154aad35d1a3221f..5d22aed7af1d95a5443fc683d708f83a41e3361b 100644 GIT binary patch delta 1262 zcmZuv4NOy46z=VhAPA2Vw6+7e{7hD;{7pmg>Ok#!;(#&*BU0}D&X|nCT4VABH=g1{cm0&sBea^} z3fiGA+a7NmZHTT+^n>AMXv40#ec?}i-jj|rFdVW{+vOnOn}|_IfhP2=y3GFpCXqH+ z*ur>oG0H2H2G1Hs8}J`d_Ef?d;)=M(oI~w}`@>rGN*kiZQo>2NeQZ-XWl9I4B`%(F zy>P#92Z%zFgPEaKdWMHB8Kz1?;7Svmt%nP0IM%B?fpDXigBQUi1dD3Z>UtSKGH_1| z7Qn#w)%1`v*v*5p2F!(zT1OkSqYYc_!$cjQ)Y@%C9fz!9`0HbsDeAy(?AIXQyN2!o zLJK`;K_eGvjJZ=q=!Ifwbeqv)l$n-HTl#AHCi`lPV}8Fn`R5-x11CJvRom3x#Ma_S zphBkNRImlPii`d7DX2HW&rL8KC6&a3Ge}z!wmF~D);AwN-PvOv4wgj5C8uXApcVC$ zl=@=sib?sR30*0P2wqPZ4)%K8Uo*@{+e;Ikucn+ECIonQyRgXra;V+($YL^*l}a*` zyW2u&YaOTiL`&J@U-yh+DUT5j^n29^$dL)I!|Iqsjxpsd`u2y2vTRyWa;8#S6s0EAGMm8%H3i60aidR9Pu^vfV*0|qL=Ap!jw=+^K zcv8o_t^@2kG2wwJ7RNEyGM=axjKE;*6Oh^PjJVBd3m!EolmGw# delta 1278 zcmZuw3rtg280PdLPzRSsRaylO$cE(&%6N|fPN38=i@YUNBSEOLffxpu*$}VW7$l4X zI){2E%h3ZbFFVm!B)9eVWP1wZGv)SN^2&P(DXU7uBS&!2q*Xud(tfSr%hIu z&0UH^$)#oV0r%-{!wtJ|;5e+zRT1pLeiJRqy3qRnM5{H;bU-PmBBbn(W!=K8Szss9|INPZU^WUVj(oM8wQLy|lKb37 z!v9yp#v6v0V^CDF6fwnA#Q&&||Km6yfH|yTn6048)4Wr8Yd-qou{={mVwPS-Lraxa7hBee-D1@>c#OtkOF zyUEddGPVZC2ml!YHNFO;^)n6D6*6827(l>~zd^j^rO?lTp`VXP_c`PqD`q!J^e=W3 zCpLtVKc`-p`JnJJ3Gm@E%Tis>HMU&n8XTQ_xbcdQ|7-EtDa)wjabbI~l9T%SLT zM&Qz4`d&aN^umzNH#W(rW*RERKq?a#GDmcCWJ1EqCW{*4b_?4~7T-<2cklVmJNLYE z?@%3osE%*Fzngchhx=*wO)rp&diL%Qm}_2L4<2BR|MP-me;rgtV3+$O`?+DH05q2qhN1^4i4*K2s(`3 zeX#w z*+>p2Lz5U**Mj*pgD*1KBDhcjZxq7OOgN^I84!`OXg&wG(E)A2n)4bAXbj&vK`dZc zmT7Kx1iJWeP7BA-_u6oh<)Zc+`R`A3$j3{kW+^!gLZSL(L76UX@MCmXA027Z*>rpK zeg>(5HhgEGb$!AKhiBtcho5yZ`nhFrh1jcK3rf(qUJ9hh%aA2hGH^f-@9SYQDlo)t zG3)6`9IGxDVW6%M;URUU2=mlcqAmq|V>WL~Nr%H|#Bj)m zXoMJK`}NI6N#ODvdyue~12&SI@qsZuLd7_|tO9aV8;JLpaC(gKaWCN<`%kCM6P7UM z4n|3tJDHOdR3Y!yB~Mi=e1^PDvD9N@f_d_hfcO{C9}z6Y6b0f@p()z)D3b@vqVD2EFby#`!PWz;+0126x;Ekp64sV{vq`gqANc6(ZO z+1V!Z$nagNWevu5est8 zACLiWe_rn@tQ0wZNa0)-GK#5jCFjI7WHq`?$5=Ktou>N%(Tushg+%|Dcgb__eV@$%Gq`quK`&63+4Dj`T?I0>9;* zK{1f=e;$|*!;e5YF9FkhS5+qg#`tZ=wg9jRovHg;=IEw|-HP)R|4T4dyB&Phhx1}E zgDQ@Xfl`#BPsQ;K{b8U(6M7Z6iSFqy0v+GcpakJMlg34HDrykw&=-w$7h2ZaU!Y*7S?br zsLZfAYR1%E&c))9GD#uY7k8KIL!*X**fxX4g9d8FYEmErp*QS39I#e)fj0o5E8~ecoDmIk@3VBQ`q%$Tcpl?ko?9n6BDf~Z;X0%jn zZn2YEC_^esZb*$ef210fSkws?^N4x7g|Mbu8?0Yh8_Wa5q#$j5Bt*Do)sK5d7QsPF zJg7jEmQ0Y22B(N@h)luE}(Evz{aHfzBo8t<%@ULC7vg(a>KeA1fnjL%>$(5us)!5nzoc;=5UF#}O$M-l&A>N6JK2?> z4C&aaq+JXrrH%x>1lUW`H4Aq!-Xp#T+V1k87>C8=pooC|`Isju_cF3zvFa(X#x7qQ z1R{gA{|B-bQdlPlVzE?&dqdnii?6rmgdL|H=RdtH{1zFrDl0dySf@YT`wr)6y1UikW+w` Date: Tue, 31 Jan 2023 20:22:47 +0100 Subject: [PATCH 12/17] Optimizations - full colortable for PAL mode --- constants.asm | 6 +++++- scorch.asm | 18 ++++++++++-------- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49340 -> 49343 bytes weapons.asm | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/constants.asm b/constants.asm index 1c51797..7f2d9d2 100644 --- a/constants.asm +++ b/constants.asm @@ -67,10 +67,14 @@ GradientAddrL .by dliColorsFore, >dliColorsFore, >dliColorsFore2 -dliColorsFore2 +dliColorsFore2 ; colors for NTSC .by $0a ; one mountains color .by $7e,$7a,$7c,$6a,$6c,$58,$5a,$48,$4a,$38 .by $3a,$16,$18,$e6,$e8,$d4,$d6,$b4,$b6,$b6 +dliColorsFore2PAL ; colors for PAL + .by $0a ; one mountains color + .by $7e,$7a,$7c,$6a,$6c,$58,$5a,$48,$4a,$38 + .by $3a,$16,$18,$e6,$e8,$c4,$c6,$a4,$a6,$a6 ;----------- pmtableL ; addressess of the P/M memory for 6 tanks diff --git a/scorch.asm b/scorch.asm index 72a1f95..47a5a9f 100644 --- a/scorch.asm +++ b/scorch.asm @@ -349,12 +349,15 @@ no5200splash mva #$10 MODUL-6+$a69 ; $12 > $10 mva #$04 MODUL-6+$bf8 ; $05 > $04 mva #$08 MODUL-6+$e3d ; $0a > $08 - ; and mountains colors - mva #$c4 dliColorsFore2+16 - mva #$c6 dliColorsFore2+17 - mva #$a4 dliColorsFore2+18 - mva #$a6 dliColorsFore2+19 - sta dliColorsFore2+20 + + ; and mountains colors table address + mva #dliColorsFore2PAL GradientAddrH+2 +; mva #$c4 dliColorsFore2+16 +; mva #$c6 dliColorsFore2+17 +; mva #$a4 dliColorsFore2+18 +; mva #$a6 dliColorsFore2+19 +; sta dliColorsFore2+20 NoRMT_PALchange .ELSE mva #$7f SkStatSimulator @@ -410,7 +413,6 @@ MainGameLoop jsr SetStandardBarrels jsr CallPurchaseForEveryTank - mva #0 SpyHardFlag jsr MakeDarkScreen bit escFlag bmi START @@ -1667,7 +1669,7 @@ peopleAreHere MakeDarkScreen jsr PMoutofScreen mva #0 dmactls ; dark screen - sta dmactl + ; sta dmactl ; probably not necessary (3 bytes!!! :) ) ; and wait one frame :) .proc WaitOneFrame lda CONSOL diff --git a/scorch.bin b/scorch.bin index 5d22aed7af1d95a5443fc683d708f83a41e3361b..b4696ae78b3839958cd004eec7dd5be1e1e45f37 100644 GIT binary patch delta 7979 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 delta 7929 zcmaJm2|yG_w$n4iJxsTVI-o#tcp#{#Q7|In8G?-*0xGC!4iy{^21SetgJ>%l$AE=^ z#*qOqXj{!e0e)vH(URlR=q zl$6LzO609yx=svPByyD-5$$gp+^$=8s4B9IdE70x{)}!Vi852vp#W7G^P_3;A(`xw z^+(h2_II&|TY@{YNThi$QEBk&5bN*;w_*BE3`)7U$lxFsqYdg$d6_}|^%7BTpgsjc zC?i3XBW4lemm&EI00i9(dw`;{?V~$rP$CLXLXQ$q`U+9T_al6SZpEYbSri`!*yj=y z>?s!APlRL3>9QJiCZSuHQYBIxUZk2GdYlzy#vIz1Nq2=QSQoZMMcW+F z)*QBO!8al!4&jaLhYLhUvN;-mpqevuPNH#%XBX3jf{Kwx9(tnyP0mBE*xTLPJ!BCI zEX`8dTmbNL-$OB!B4c*RbTx)iud2KT+SrzQg zg<>Cn3ps8VDZZ&uYc5LR)hKr@`gn~wU1b}A0%{tyFhM601s{v6Re|!h3pZ^P$0`?^ z&(UzhI`{y5HOku~fniLD>4DM#+7e*%v>=WSmK_ahX>nQh*7w8}uhiP=@KanF)4@ zE*AX_!#hwA{(`wY)h8b)iy%=WdYp%X*1||c-ATv}7jE2M;%QS?I6htC$(~8PBRv5T z-x;)ts>6#s0;xH;(8CAD2R)`Uj*B=pB?-Pd&~!4$KE<~^0+m3l`>b-XCq*qd>*cwU zqRO#;i016cArBn&9(jPN6X){zBExSK5x+@%!WW4C{AL7Z)WbW7ukwy!6z_!K)N=UT z6N<$y-W@hErri2P=N<@032I+f_iw-BxCSGht^GmsMMSIEbpQ#pK# zC^IN&A>FWl9YQtBQ3_ZOLva>otH(D=xXEv>Y$@L;AT{yDlIH4i#tF1>^+mZ?bhsbzeX_W zo(sZ-D<;OOG0Apaz(4zWC>=O9Q2-ClaDlu^4Xj$!7~<5zeGt*ytmjL+ zb>{a{f&W{06Y|$DNwqq*52kOIrM3bn!=w@E%50Ob$W&%)gzVg*e1WhsSH^FKJ^b6~ z`l?190ecOA%K&U%lFFY%2UeNDJ6C42Oolkmuvsm}7z)+m2ZksznyGHowSSw;*R(%M z=4%^tZ8hWs8K%e~qO3CeQU|g=5p?KLHUBmtPdy_qF*N@()dY0mX89(Cqi$4w8S_LV z=yH8=g8z7`5bOOTspa^*e>C+u{>48cWKbp-bU#cNTF-XYwX(*NU7-}SDr+QJ2E0ZHxl4o^wcwuE zI{bcsSGZ3?P7@oJWf^Z(i6OjEJZ7w=$vo8RBu4Yg$#5JDJM6;=Fzn-3uwhso7@|?8 z8N+Gw0N=Knh+e9)hOIlB80bt*va2I7hp5wR_u;y1yH1y%?$HX`i!Ii_abUxe0r1`C zD*Q%JNN~<7n4hDY+N;tGJN?Za_R$`Hbamx`0sjP2--Q1sC|rLcyHWe}91RgcV6$sUqy)FxCbaRNq2wH) zO_QtS+ge2C${Lkz6#uqZ2yQ|JZua^raXo(qhG)eR{&Tp?U!*Nz+im_*Iv~!3)sz=j zXMcvmAO;&$bU#^X$7+d*oNp5+{%!}^@B%J=Z*&xO06!i*MgNu#DKuTk1yb`F(WzKT{1xwRs;cc_XpT z9xTvx{B*1rXsjkAa%i>|sQ=a*1>rRzh`Ns72nm7byCF$quCD@Z0!8}r83|&b>uK

jxVQ&|Q*v>)O~HPKzZuU?*|?!+gGMOL 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 YYh2tp&t+DWVHR{>taWAgxlRlHe=MhS_W%F@ delta 7819 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 U^UY Date: Tue, 31 Jan 2023 16:35:02 -0500 Subject: [PATCH 13/17] vdl macro --- lib/MACRO.ASM | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/MACRO.ASM b/lib/MACRO.ASM index 34aa3ba..477e2f5 100644 --- a/lib/MACRO.ASM +++ b/lib/MACRO.ASM @@ -51,6 +51,28 @@ STX $0201 STA NMIEN .ENDM +;------------------------------------- + .MACRO VDL +; VDL #WORD +; Changes Display List addres +; and sets width of the screen +; vdl dl,$01 - narrow screen (32 bytes) +; vdl dl,$02 - normal screen (40 bytes) +; vdl dl,$03 - wide screen (48 bytes) +; (works only with system interrupts ON) + + .if %0=2 + lda dmactls + and #$fc + ora #%2 + sta dmactls + .endif + + LDA # <%1 + STA DLPTRS + LDA # >%1 + STA DLPTRS+1 + .ENDM ;------------------------------------- .MACRO halt ?stop From c1ee40fa595837b4dfd5c6cdf302006a2ee95eab Mon Sep 17 00:00:00 2001 From: Pecusx Date: Thu, 2 Feb 2023 18:29:34 +0100 Subject: [PATCH 14/17] No X-tank position correction (PM graphics). --- grafproc.asm | 12 +++++++++++- scorch.asm | 3 +++ scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49343 -> 49304 bytes textproc.asm | 7 ++++++- weapons.asm | 12 ++++++++---- 6 files changed, 28 insertions(+), 6 deletions(-) diff --git a/grafproc.asm b/grafproc.asm index 6fbd46e..35ca3db 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -554,7 +554,12 @@ NotHigherByte02 ; and clear lowest bit to be sure that the X coordinate is even ; (this is to have P/M background look nice) ; "AND" does not change "Carry" bit. + ; x correction for P/M + ; -- + .IF XCORRECTION_FOR_PM = 1 and #$fe + .ENDIF + ; -- sta xtankstableL,x bcs NotHigherByte01 dec xtankstableH,x @@ -1207,7 +1212,10 @@ DoNotDrawParachute ; If it is odd then it must be corrected because otherwise ; P/M graphics background would not look OK ; ldx TankNr - lda XtanksTableL,x + ; x correction for P/M + ; -- + .IF XCORRECTION_FOR_PM = 1 + lda XtanksTableL,x and #$01 beq EndOfFall ; if it is even then it is the end ; and if not, we push it one pixel the way it was falling before @@ -1221,6 +1229,8 @@ ForceFallLeft sta UnderTank1 sty UnderTank2 jmp TankFallsX + .ENDIF + ; -- EndOfFall mva #1 Erase ; ldx TankNr diff --git a/scorch.asm b/scorch.asm index 47a5a9f..13922cc 100644 --- a/scorch.asm +++ b/scorch.asm @@ -9,6 +9,9 @@ .def TARGET = 800 ;5200 ; or 800 ;atari800 -5200 -cart ${outputFilePath} -cart-type 4 ;atari800 -run ${outputFilePath} +;--------------------------------------------------- +.def XCORRECTION_FOR_PM = 0 +; if 1 - active x position of tanks correction fo PMG ;--------------------------------------------------- ;OPT r+ ; saves 12 bytes :O diff --git a/scorch.bin b/scorch.bin index b4696ae78b3839958cd004eec7dd5be1e1e45f37..f9855b94d6ec3acc27611beae9ccd7815d0549eb 100644 GIT binary patch delta 4936 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 CqDjO6 delta 4950 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 Y4w2cbG=sk2O?yWiyU?jywafMY0B*}x{Qv*} diff --git a/scorch.xex b/scorch.xex index 3a35c5efc2b6e289c8dcd56f4358811fa32b134e..d6fffc7060efc3f74ec02116aeca5bbb74749e13 100644 GIT binary patch delta 4932 zcmZ`c3sh5AwwxsV!skXr<0dw4fJ3qYG{8yxNXhpRA6o)YfWW9ew*I_?c;ku?wCC&P=(E1RFCUem5pt3qL6M|lrY!MAsiuU7`i-Ab^J z7MJGZQR1>HskFbC&Pnbv4_W3=HaAN%Ws~B_#vz3bk7~NMTU;ns-3?n-DV?y2f6QLR zH;Z`0n!3~$**g881T)+5U$_>lekQ6ukUY@{NuC_ZM! zr4+to02$ZjP*_=eL~UmgUBsQTgm6!Xx}jU+ZcKa*x#VVfriyb|u`JVSnEo zK<2@CBOce_!0j;O@yQhIOKMXB(Rg21N(e%(eFJYaxg!su!YdrEMN4A#3cY4O$-+CAGb^nS; z1E~8KAbd0hPG=%kR&K*fwqf-qeyKiQ!mrTJk-*8n$1l>)mhh3HLn5`G5;%DZ*tX_zz?P>{gjoa!beQ2CA$wu56&vCZ(;!mPMoO74%U07NS$I3i)+EeoDpYbOzNukV+#klA*mU5iKnGFJmXwBfVy#Zr?Op|A(B;o=&-H#c1NxNu5rW zYCKMU%zh~{JjZgH>i*ca4)WtIUtvR! z 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 Date: Sat, 4 Feb 2023 21:15:59 +0100 Subject: [PATCH 15/17] Improved tank shapes. Better appearance with disabled tank X-coordinate correction.. --- artwork/tanksv4.fnt | Bin 1024 -> 1024 bytes scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49304 -> 49304 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/artwork/tanksv4.fnt b/artwork/tanksv4.fnt index 2efa6898ef880a91ac55a4eeb7880e8700c2a632..9ed008b27f66402a515f33451794014064170601 100644 GIT binary patch delta 55 zcmZqRXyDku&L|l2|NqB^1_m%F@Tj}0HCcjDN5sCaIqd)c9}r;%h6jJ@4rXnRU|hij E00!X`1poj5 delta 55 zcmZqRXyDku&L|lA|NqB^1_m%F@Tj}GYO(~Qj!6CgMxewGh%f`ggMa@US8a}9T)_kY DEPfQn diff --git a/scorch.bin b/scorch.bin index f9855b94d6ec3acc27611beae9ccd7815d0549eb..2d196ceec9d9abfd515a891d6306d7c62e1982e2 100644 GIT binary patch delta 57 zcmZo@U}|V!+R&RJ81n!B$A$(5Fevb-yQ(#LUWSf{eO+_d|NlQA!VC-#{?r}J+I%lV GNgM!&6c$ea delta 57 zcmZo@U}|V!+R&RJ82bPJ$A$(5Fevb-ySi%fybK+Y`u~kUi60PQ28IX!{x`1Ld@n;u F9007b7!d#f diff --git a/scorch.xex b/scorch.xex index d6fffc7060efc3f74ec02116aeca5bbb74749e13..a756871be3c28e89028ec7be8b983f32d64de468 100644 GIT binary patch delta 57 zcmbQy$ULKwdBe7qf+7F^e{5)A0D}ULx~p1~kFV4bv9D_m`~Uw3M3{l$!JoQ=S)18c HO%wwFu+JAT delta 57 zcmbQy$ULKwdBe7qf}#Kae{5)A0D}ULx~r=uA77~>QvbgZDDeX#%)s#A-~Yx{o7q=Q G6axU(Y#8zY From 746026ae4f6c2c350be929f1ec78c8e49fa89ec3 Mon Sep 17 00:00:00 2001 From: pkali Date: Tue, 7 Feb 2023 01:59:12 -0500 Subject: [PATCH 16/17] rainbow colors on start --- scorch.asm | 13 ++++++++----- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49304 -> 49303 bytes 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/scorch.asm b/scorch.asm index 13922cc..8bb8500 100644 --- a/scorch.asm +++ b/scorch.asm @@ -3,7 +3,7 @@ ;--------------------------------------------------- ;by Tomasz 'pecus' Pecko and Pawel 'pirx' Kalinowski ;Warsaw 2000, 2001, 2002, 2003, 2009, 2012, 2013 -;Miami & Warsaw 2022 +;Miami & Warsaw 2022, 2023 ;--------------------------------------------------- .def TARGET = 800 ;5200 ; or 800 @@ -315,10 +315,13 @@ no5200splash bpl @- ; initialize one Variable in zero page :) - lda #dliColorsFore - sta GradientColors+1 + ;lda #dliColorsFore + ;sta GradientColors+1 + ; set gradient to the full LGBTIQQAAPP+ flag on start + mva #1 GradientNr + jsr SelectNextGradient ; generate linetables mwa #display temp diff --git a/scorch.bin b/scorch.bin index 2d196ceec9d9abfd515a891d6306d7c62e1982e2..e57d3695b8f3cdf87ba8e646d088c32d15d8bbc4 100644 GIT binary patch delta 7730 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 delta 7636 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 diff --git a/scorch.xex b/scorch.xex index a756871be3c28e89028ec7be8b983f32d64de468..751d6ba41c65c3a8d9e612bd51ee83edc80d89d3 100644 GIT binary patch delta 7631 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 CcNO;l delta 7821 zcmZ`e3s_Xu)^lctr@)zXv;hJ(3JOAslu2EmX@q)=hhX_WJVbEtF(85u7(fpKG6-%3 zM5adMAcq_TF~9ION;e^gP*448*Sgxx2Uq^C{!`hnX6e878GP0Kvv1DcYp>T{d+oK> zUepvSY6}%@|9qSJy5sw|uPCTi+%+nD4gUL;Tv<`)dw2f5`+W; zogmn_N5Uh{D9F&YIMcy~`GON#a$S%csPm{b4yj@UIV_-AOVH;_0T6I8>?U$av5&5x zPh-%(Vi6yM&@wyd3sf47(irp`1DGdb6wG@J!m)yk(;808xh3e#I$;R#b4I_VqPjTL zia%pwDOWsv-kYKG7(r%Cqm4;)ZUZH{Pl8pF)JEvSUyoRQJZ6+0eI`Y zw?_ONV|-8DtLjBg`Dn;Gl%9=3*P)yE$~-UkhjGX`4-L&n`fPL_JG>L6@7%&R$2aKuW`W|Go3s{Xf}ux_*bMZy zRhGqWHXr0&)1-w7dN`RUi%Rmwu1$g5B?;11_pQVQ(vF^i?&;xH5r85oL{9iAB(6 z{)EjJMdYKuXY*Pv4>nV*wM->Dd4R`8d$|Q|Zg7A-7^l*x5646YD@&u9-*8@Zgm=*9 zLkrYEleJBYMrHC@oEGMGrdW)AO(`x!)3IxeFQvf2F{@mH@&pP^&u0|4KITg$obG>P zUF=wwfPBHRE6oWF4SJ+;lF((&PYY9=Z6 ziu8+aV?HjMO2yvu$5P+n$oZi#&YC~l`BEIqIK%5YMFWrfStr)txEb~qMIer&FUZ? zxRU5bu-!!96e=oE#8SYWyUg3sHGx~$>5em&d3$}dw97@jqv3VwuAHt?-k)ib@#`-q zx}lHo{$<<4rEPRd+hD=)TJ9S76ZoSey1S2ImPw8W@N1}enWQmFz>AiTqH1yea<3V1 z9kk1YA_LQS#RsYilL`glaV*l)$=gmMaXFfuY`2;dsB@7?jUzi|zF%&2 zw0|Tcc)%^7ZEslp0rpEG*o%C`Q|1Ph%Dv~L%J+~-RkH0Q)4LodE{8rCobV^R``hGP zKQm)F!KC|7@+Z%jRHDWt+jbJ4VTUTk<;)CxjUE3=Xfmh*c%Z{c@{#tgfxYwBz+`mt z)1_jaC4K?OPsMK~`s?o`h>o4Z=*s~M+5nVj(g<`_ipf_{Ri$Y7l=Kl?HoqcW#%%x^ z?nBg*+N2|3&nMsj09)=PaEB0=YVs76RVmE3tnij$gNG1h$ng+9HB2R=X&z0w&JFQg zP3M+)uC`IvUPClUG)*2Z$f{CKcOmgUuS2)0xep0@>M?ssprvww3HZX!GEE9c-RR5` z)qUbN$FYCXIOj)B$`pDI(+_iEO~NFkNVaD$Kd@WanBHGb9PVJ5^2E z<_OC$`hLIy<1pIdPT#+SCnUc-fv9C6YH8YQHpVZgs z5RGY}aT0BLBDcLJVt}fuVNyFrrVOE8wYw+?Cn=<5FdolHv3q&x;eIWz?KX@3EI6@r zCAjOBFr2s|WX|GLm>;K`JHr+kw)$JT?4#}e=){W0_qt*9<^Ne|bLdsw3ma}3zNqzp z%DB`2=0BZ9s<+~RipfcVJF8%l@x>LB^f@U_+K0z!;25kh9;ack|2lsi!hsTWyAIPH zn5vY5voztaYtj`QELS@5*CPg827wU+08{};lWqqA&n_BtvnoUf$N*i0FYv1~ZKjxS{ya5Ab7IAz1FDA6ojd)5^;T5rXl2{vF4Hd$$F3_EsfRDx zyVJiMl)tp1!P$}$&*?0yaqi03J;yKF+o&p0T{X!XWSxzwf67GnE~U-o%y`_pa`c43 z)$8U))tT{&h%Sakm5Bnxs_YWgJr-qWki00&;@bIk?rZcm_D}QH_oNDIxFdoa*C7;e ze+RuUNsAs^Z2nT77kXed{!gm{WpJbUc1^l+klUg(GLv)d!pHxS;E%Ww1AyCP#(zzF zmEy21ZKB>|%kwyA_3AKJzFk6OI#v?3g!<=sGag%nia&!|{sbb0P-@&@jWKT(nz4$6 z)0re-&LIKw5%8$j(rAK+<_7t5?;D3~}NSIHwQD zo@QWIZHQA*ys?3{l;FwQ(cUvSov?_@grYD@2;AXSv?rH8Ax`3x!(KrraKqYg&+at<>n{-H{e^sC_jcHIL3goD!HD?QT4rL# z+Wxf~z9`+9E8HkOKqgzb1 z8uB=lVZ1h~K~}7Va_dLkQ)cG;Kn4LPDh=rWw2x6hC zCsGxR502g7>ulEpoGWL;OhQ&h=1P@_ToP`01yD^ zn_Sxv2q#HZc~v^7(PrhOzw}M6=mSpDjLf+vS-Xx)YS+Prs&wE_W^By~qt4@Bb7oV` zcvkKtsu*v{jewWpN4bge-MM(_CLcU;V}Qs01gNkUfD(r3D$rx)#!c=7#1gH@7k|3Z z)3H5e_M<8LvHK=3s;(nw(@cu;!Wo;-zo2j8j#%zAaUD0wZ>B|$W4G|s2z+--5EYA2 z-dM^L&&@*%-LKv()NU+ zr&7GdKA$G>sXTxEQ|{-V;0|(s!s$6KKlYS}$5@k(lurcr=UzkR{WK&UI58GZ^^ZQu zN|)YJOmn3W3AiQ{oyRudl>BK!BNMpee3Nx?rGs!Z;zm=8B@%y>KZd%DFXsorU2xQo z(m#yf+a-rKf?1wm_*~9H^T166k98IeE~3FzGz<}0^jS5;m~z^+#lqxAS?1=-bxQCK|w(uk!oh8Xc`>iDaS!daWRWX9q^wgUcX< zgo;`AP+^DQ-wT2!y;h*%lK`FsAtaekw#p#KBw0_lISo>g9tX>_Tn?YeK_rB#KN(VJ zA6`-zNJZkJ!UF06RulzLn{iN4O!$cCUe#fVglNc^IT%YHP>jroO(Lrq%n3e&BivHN zPBa%0<&<{i%x58n$X#6}gw`{38AJ|sgykGPpfsMNEnm|EGUL}YGX+oEI*HndbGE+n zg1IQIrB`+J>{%L!p%_u&zive<9^`_x4~wqC2>4YBeiB2$6|6^bEpWwuSTh(he^~P* z#JBJ*-G{~N_AN}Y>v*#m^fnTD(ODYV;b8b?#)hYF3!oD5ifzUh&AH|uAtassi9Y)y z4MX>zpbx^lg*~}>R0m$k&2j3;=qVMu1zgCzh|h5jAt(00fjXE{AOx~tm#2EQ^h=6V z{tP*@`DSqo`T;-Uyr~lGU5tR&OLV_NP5{tnVjpQ)?i=24+3mgf9Ifg!(v{8=5Jzc^7F7|UK z`imjx3p{Lll;(>Z{s^fCxJ3RasS>zk$)Edh*7hd)SX^VbnPeK9)3zRn!$Bp}|29!glo+}dt+7sE)C?~&ArAVnrfcFxm7ZzW)9 zi~<$x3Rni>$L*3Dd2p;38NV`X1xUJBV%-U!7fP*%;B&LoS|z&h%V$60mIFrcG^>X# z5xOu6=3gaJCt*{m)HMhxm3jz)Wm1>HT51gh6sI!lRQSADW}N~FEOII1H@b`|-EPj6 z2h-4Y7}5-K=XHL!kO?Xw&nyKKSOyB$F{Su$=~(~x?Un-CxSqCbqK#{42BvG^lDNXS z^4!DqG}DHEEe-aL-wsTS5wJEOEhzx;%6dBN3KNf~mW_B_oe4cJQg1!7ktN}%5n5pI zg?<_F9B7llVgy_>Kv7mcgEB}BeKSIRv`t!){U>U8J`w7+XHoD!%Dkvs_->i+yj#__ zYobPYG;gGvVI=gv;H?0bg!w2p!zee%Q$!sw1XqVv#Yrzs1#@jXX)aZR_gG(RyKhKP zL+_DvLxXVAjzEgRB|9cVeC*z_&g11BfOsQ9SY*!@hswS2vhsNlrVf>7QfBODc-N&P zBNVB^6i9>hh7js^{Gnk2<&7^J#*R4_$NW~#UlkSTiyY?M4!#R~`BN^@e23J*zd#)v zP`wV;@VE*@eSxDZyfyj?5Oi19xNBz-^%nVsTwuBJs&Xsv~sR$gnZ&oJifx$AC}RXKi&N&4Px|nJbKse z$WfV+ixC@;qT49-gpIRk2vVf|d48QeG!5m9&^YUE$ZhOK!*=!ds_sK{ATuF>>j4P% z_d8mRzRhMWWp2<#nD5SIw(Dj;s?xD&W(_jdA_&M>18~LoM!0#0O4MhQ|X&@gNp>DRS zMI>y;`*wTji9B>9ONy4ZG1j}bQ6x@Idm0z7vQ|f1lGVu;CC2*4#)?mLY)rR+J7TO3l7kIKbNWDOo{3XWT zAjCszgB_x4qB`Hfuh;s;0#HY~m6`1Nnmsjvwf(j9-lcm#+`F`f1TkgheXB>?FToF+ zJ0+5uC>GlN+yx=Vuo3kYTf0P#CtT(SsP19}|Uz+DR0RzptI{{~!j9kL52I z6V(vrjVsmAjxc7anMflt)S{1TA+WugNcbCX z&Ot_eVDD%MnZ0{MXsOM~5?Wg=6IzSE-RtG~EDZhxcWJNvE`UKM)rAHD(2%$|d{ISNQ6_P`a-!g1-RO^aZFjvH|8(KZbI`Z`F@>8XwD4)Bz;3 zK9pXvPs3kGe~M+UAM--ZKBA@rcL3_}#-0nzG<>7pe{mngRMxenx7XrOA7xS2N3p}| z4fRLsFT+2TQDwYb&o*RvBfU`t|V)&F^6+XCC{#>`G=!0S5i z;6!6^(i7L{j9;M9>8#0>a%f}gzy*nG_=9T%w*7*})q@A-5C{bjT7vZCh_|0X8#@Su zXZ#aHUjoDbHhOuEtMAEC-G=_T>mOJB-uD_i{K+a**%Gx3#2}!yudpUx;@IHB9m(&9 zx#&0Ow^qH+pZ@nfm*Fpsni#ocMKNyZJKwJyhQgwkr{|fDeg5se7sKbQDQ)`X%iH&Y zUZ1gYLuK=ctB$TJ&%m)SheyP3E-W#;-}$NayPxjMyxw^0-Q4X$`$wIYzxAsEqE>9# zX*y&T?|9Ej+E{qt%#ELiju<~RL8mu9{_lM}wE0cyKu1EeyCc$Qn->dVp4!^?@l%rj3ytHkKdw9Gl9GX1#H)+SgHXHqa&w+fI From f15e815c1ac83cf81043ed1e09157c1b237c7d31 Mon Sep 17 00:00:00 2001 From: pkali Date: Tue, 7 Feb 2023 02:26:03 -0500 Subject: [PATCH 17/17] readme updt --- README.md | 15 +++++++++++++++ artwork/Scorch50.asm | 2 +- scorch.asm | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 402a764..d3d77bf 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,21 @@ With the advent of [fujinet](https://fujinet.online/) we are thinking about maki ## Changelog: +###### Version 1.27 +2023-02-07 + +Late evening edition. It is 2:11 am and I am writing this instead of dreaming of electric sheep. +Our Senior Executive Art Director @+Adam+ ordered us to stop procrastinating and finally release the version with colorized mountains. So here it is. Enjoy :) +Please note you can still press [Tab] or [5] in the main menu and revert to the classic or classy look of the "Polish rainbow" (it's a reference to a strangely accurate Wulffmorgenthaler comic strip: https://i.imgur.com/HMctP.jpg) +Other changes: +- nicer Lazy targeting and "visual Debug" for Lazy Boys +- extreme memory optimizations to fit 2 new texts from @RB5200 based on "Sandford and Son" +- fix for [G] key bug when turn wind changes were selected +- fix for Lazy Boys deactivation bug +- PAL mode now has got the full-color table, so it is possible to adjust colors better +- the x-position of tanks was always adjusted to even X values, this is no more, which saves some hassle and unnecessary tank shakes left and right. As tanks are painted with sprites of a lower resolution, a rare artifact might appear here and there. +- improved tank shapes + ###### Version 1.26 2023-01-23 diff --git a/artwork/Scorch50.asm b/artwork/Scorch50.asm index fd231d5..216e32b 100644 --- a/artwork/Scorch50.asm +++ b/artwork/Scorch50.asm @@ -760,7 +760,7 @@ quit ini main ; --- - opt l- + ;opt l- ; this stops the listing .MACRO SPRITES missiles diff --git a/scorch.asm b/scorch.asm index 8bb8500..d10cdf4 100644 --- a/scorch.asm +++ b/scorch.asm @@ -187,7 +187,7 @@ FirstZpageVariable = $57 _atari = $fd ; not used in 5200 _none = $0f - .ende */ + .ende .ELSE icl 'lib/ATARISYS.ASM' icl 'lib/MACRO.ASM'