From 38b6af6720deeb5aafa1079af0014e4887954b26 Mon Sep 17 00:00:00 2001 From: pkali Date: Sun, 20 Nov 2022 12:29:59 -0500 Subject: [PATCH] text4x4 optimised --- artwork/talk.asm | 24 +++++++-------- constants.asm | 38 ++++++------------------ scorch.asm | 8 +++-- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 49047 -> 49245 bytes textproc.asm | 75 ++++++++++++++--------------------------------- variables.asm | 19 ++---------- weapons.asm | 12 +++++--- 8 files changed, 59 insertions(+), 117 deletions(-) diff --git a/artwork/talk.asm b/artwork/talk.asm index 3da7019..b1b533a 100644 --- a/artwork/talk.asm +++ b/artwork/talk.asm @@ -78,7 +78,7 @@ 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"IT'S ALL OVER." +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." @@ -89,7 +89,7 @@ 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"NO... A BUD LIGHT!" +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..." @@ -105,16 +105,16 @@ 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." +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." LEND OffensiveTextTableL dta 200,>800,>1200,>2000 -GravityTable .by 10,20,25,30,40 -MaxWindTable .by 5,20,40,70,99 -RoundsTable .by 10,20,30,40,50 -AIForceTable .wo 375,470,630,720,820 ; starting shoot forces for different gravity -flyDelayTable .by 255,150,75,35,1 -seppukuTable .by 255, 45,25,15,9 + mountainsDeltaTableH .by 0,1,3,5,7 mountainsDeltaTableL .by $1f, $7f, $ff, $7f, $ff ;------------------------------------------------ @@ -62,22 +42,22 @@ XtankOffsetGO_H .by 0,0,0,0,0,1 ;-----4x4 texts----- LineTop - dta d"(%%%%%%%%%%%%)", $ff + dta d"(%%%%%%%%%%%%)" ;# - vertical, () * +, % - horizontal LineBottom - dta d"*%%%%%%%%%%%%+", $ff + dta d"*%%%%%%%%%%%%+" LineEmpty - dta d"# #", $ff + dta d"# #" LineHeader2 - dta d"# RESULTS #", $ff + dta d"# RESULTS #" LineGameOver - dta d"# GAME OVER #", $ff + dta d"# GAME OVER #" seppukuText - dta d"# SEPPUKU! #", $ff + dta d"# SEPPUKU! #" areYouSureText - dta d"# SURE? Y/N #", $ff + dta d"# SURE? Y/N #" lineClear - dta d" ", $ff + dta d" " ;----------- pmtableL ; addressess of the P/M memory for 6 tanks diff --git a/scorch.asm b/scorch.asm index adcb1f2..b8ef91c 100644 --- a/scorch.asm +++ b/scorch.asm @@ -129,7 +129,7 @@ FirstZpageVariable = $60 ;* RMT ZeroPage addresses in artwork/sfx/rmtplayr.a65 displayposition = modify - LineAddress4x4 = temp + LineAddress4x4 = xcircle ;----------------------------------------------- ; libraries @@ -1961,7 +1961,7 @@ TankFont font4x4 ins 'artwork/font4x4s.bmp',+62 ;---------------------------------------------- -;RMT PLAYER and song loading shenaningans +;RMT PLAYER loading shenaningans icl 'artwork/sfx/rmtplayr_modified.asm' ;------------------------------------------------- .proc CheckTankCheat @@ -2038,6 +2038,10 @@ MODUL ins "artwork/sfx/scorch_str9-NTSC.rmt",+6 ;include music RMT module MODULEND ;---------------------------------------------- + icl 'constants_top.asm' +;---------------------------------------------- + + .ECHO "Bytes on top left: ",$bfe8-* ;ROM_SETTINGS-* .IF target = 5200 .IF * > ROM_SETTINGS-1 .ERROR 'Code and RMT song too long to fit in 5200' diff --git a/scorch.bin b/scorch.bin index 62e553ce5d89f09346a5f091cd29148b7a6d4cad..8ab1c201abf28c0a5f2f64c7eec397769821b77f 100644 GIT binary patch delta 15784 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 UM|VPWx)t3_-HEPOv@-Vp0in}7!vFvP delta 15472 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 diff --git a/scorch.xex b/scorch.xex index 5f430693195866535b454910b17e78bac772e81f..16d46653571b63767d2db13c926355bab7994719 100644 GIT binary patch delta 15420 zcma)D31AdO)}A9b!&E^A7>AV@$_gdrChFyWYR1PQ~D#&C29 zv>Xw}3?UuTkbw!f|8CSVpawJH*cL@)cX2@=OIC&PKwx);|Er!PfV%(w!_i%@UcGwn zRn@EaURCe7t2@6+@9F-Gwx`(RnTNHb#3|1R+Bc6}eCA1Am|)cDN}i>h_|Uj##L?q| zk1QMaJMEB_MsCp*S>t-FG|o^&|LL-pYBUYXKV98xZ%ir80O+PndArQv>nJmSq%Nn{cS-dbtQYo#$yrJ-Um8kxj0 z%mNzo*lT05-r^kZCd3~Ou{g*s?)E(IOoKm)OW0A#3S6J(+~H?@jvk7hTRunn%&)at$|rcegrCjzpTd>Brh>pe zqXjzKh_9F5BpMF|CF0W%7iCT$QOUJ-9(tpZYL8cfErxmae=X%U) z=Pp$IU>)OrtL`7{CzutUeAR=rNe~T@=&-jMC0A(k>+wbh|5xcy@9}ZJc;@ z@+@s1am;i5GgldH{e)G<68*K+M&Bx>gBy=wN`&kOP)-(B8!Kmfm+6FMI&Yy)DAZZf zE|+UIIK#=+3n9u)YqP8uz~xg~;L_RiFPQwsl8`$um@E%H_oezj5FKE)jq!4g7lvXAxq8{H++d3- zuUxZkv3CkNpGy2OB|Uk&Hg7D;jI>y3#QYH|i2D_T zFUTK0F1LcPe^#c4qkvms2;Ah1@2a8Xn78|;3HTXASTC;gK+J_SE z=Na6m&%wZHtv;f3ycSB_p~M%i{9O)1t>w`fKBLn9bSR;p$qt6kAR$VJgQ4Wh41+hr zKzChK7bhcXg(rTvPk|I&7P@Z`WbxWCMM@ zI?GU7SI7UYdXAy?!#bgyRA(D%eRV>Pq1tAs{i03?Bh_=q7;4Yg3Au*qd4^h5)>>6o zYnz*(ft#S=msC|Q{sw|gd--U%@}pU@+ah>-iLNQnrID7L&oFS)L}})e4(u2qT*uv( z*I!n51~k0HoqkzW1m_Gqn{uQa7~nHjd5!R_5w>8G5f=55yhf@mszk+9(g&?#>CoafX~bfbv3Jlg^`gRql9FgY!n{SVfiQNKMB;n;LXdPDDh+es7|ow6F1M!_hG1N4X0Oa}GQb{s24`zFHn0=$bp1DX-zP zWD`H9TvJ>|i(QnJIsc-Emen&ECTXg3NOh-NR58PMsPkWJszb4iDj{m|4446?)MU1i`Z`Z& zid5H3_$Ia`G@9(Hl&b8xI?0+XSq(=y<+fz!?ri4|F!I_~@@j|P&}lBvg=~2)eTcnJUJ<>` zCjCQvsg!4%#=qeTsVQYdIx9C5_D~wawBYZO^vxcsbWA9x$zkp?3YD#~x?Ol~xWIYZ zVcbgR(`y)zaExc^W_ryfc1VjhWY20HNOzg|NZQb#OK60bZenp-_lJ7SwnCc=Rhkub zwezWE{A@fo)5@GG<~`ruH5IEK^Y!+;saW`%_K1H@>+4`rdzsYcn$r9eQ@51*GD?Ev z^ev_8Xbqgn$hB9=!5i32FfCP@Z~!p}Bjp}^+0HSlqYFnWyUH>x&6lVc4wo2(NylyL&;x^(p zxDqtyHdB9S!%@N(<4G6w+%BwRwVPS3x>QlAuGEud;(&};ZMirpqff+m<0gx-c%gCA zB5_s5$U)B0uM6{{AKUH>4GDMJCqr)LU7t(hlH4b9jX;#;<1v7=ubyO;rnme zi?N0|-Om~o#&8`oTlbdoKIgNh`-2e-BzN*|ntpIEb%I963t@`3v3M`Fe4VcD6z^q- zdosH^_ENv$LZ}kzRmrOuP__^Qw91@2UV<*-^-eEAx#_ZW8QT?ek}rcvK#l`KgXFN* zvUJ&O)AK+o36(CVG>6}Vr!)gj0X5s&prEt6i@Q*#7^L04t|d3PfsAHlj&#{MQ=F95 z+n8ujMgQLFePpULQCywXx&L0O=)zY)DMj?ERW`%>>6lr)mzMWY)#KwzLVQ+_E`0R) zP2#bv7fqX{0~M;W49qMK^L9^#3ll3Q%^BXUa(Zb6Euvq!G}t05=mm|^{wTbcQEl-(JC@ieVVVKzX3R$>;4Qr*TdZnr6aQrA?wMqJd-z1&m z1?h9X_;KiVGdJN?v-AZ5jxVq!pS!lw{nw{tFO3r=pAyx7lJG_b6;^!)>7;>-nv$C;0&? z-yPqe{EwAGYz7JB-~Eyiw@gpv82o+s1M+h0vj&91-Lm9`pl#rfJlOvne~j#42?x0# z(Dg5>5itP4StE6(hOYqa>WjloXF>cgXISuCgup|w5rXa7aWF) zoZ1QS4xpK8`L!0N;T&`mir{~#!&+67A3y4<6OI5@;SUIMHW_5cZ_4x_52qcbY;ERw`?Bso1SEj(KzN9-R1Yl zk1^*cmIYqh3Yg=I69H$~bwqWk0vd5?m@Xp1$^LaLJy6Z9+gclCBxPIqjvXIC{at?4Z{Y)3=fXqETKrhJQfv!kcIOv<%`o1s`ZakjQe!Wz zFv9X7X$0SSrtrNHLCX(DIa~;0`hj<#K@kNx6NJX_c@E2lSNA61e=*p%?LaRW+q zM&YPYIA#>yH-a~)zlRrle;1&Ip-w(}4>uer(kbwH8WvMY#h){D}7jlkY`;tj7p+ zhj5zFI$`ujr^s*p{DKLvl_&ys+USo!iM=qu$@>T+d)KlgI$~pgy(Pe~R=A654^J1f z=kL&_Ze1`)w>DQCvY?mlkGbLt3*xm}am|8fwY|hM3*xln#aj#Fbh-1zo(p3}ZkeAV zy$bo#q!o}aJt3IT@TLojuIZxXoB5N*NME&&rieIv`O5SLF2X3+WPgFMr-Pe{Cdm3a>crZ;~y3mG%Yksg|;xhP}<-( zBuAuNDQphnH&|9IIKDAOdaXH(e@)t;0?nDP0shniPFx_4UKIDpk3{;t4f!SE20<4o z(py(H@)^?an*mbGhp#Mz1V>O#N7?-&;WOMfh*~MS7MXsd{lZ_g-}oQfUtiSMArUMl ztUQ+Z(+KmZ@CwpSLJqBTvjjzG)rW4+kJ!zX>$L}n@(;6n9xX_i3cOMYY3pmRQ1>ge z^Z>b*Ll5RqgwG9uWKU0X0SGgcI|oP#(t6FTve`=isYY9kwn$iVX zzxs5AN*Ulr4i#+RgMXj@pppKKxq!^3VduVWeHoMo2psRZuxu$9$qW#3X+cU`R9MB8tfw45}BF~~|{(&Fx&FxxT|-SN!h8OQC)cW?ph7*%oB;x7F$ztS+j z(gDW~sKT3o+LYM_{#FhRpt~0LOuk1bP_IswwC47Fnn!n>O_cyRK!WvgeQ}SmXoNnF zryoyay<26SDwL0wM5uD{Oh*vM3`uP|J_DR*sySI*TTYfGEg7}cC7ceAB}<|mzWmlE z+CUSGr;5*~gFsaqD@X*{C3&oNAm$aa=527WasEMad#%Nu40h~&~hW5J<75X0F5BXifZ_M&TT~6 z7p~*?1?V|zh-K0eS7`0vsrB3aL+W?Jg#a`iy05F zx^+2_wYdrQfSVi(Ac6~E>PyV(LTSNlW}BQmnjz}1-6E=dKD`nG`MBj%n0R{2(~Hp% zLPyH0Tv|p=UjAGLp#hLN<8psH*!7Gpa6T-Hmx{gfA2mMMK+MUHjxsJ+qQG+%m~d%o?0iOz z9mBT8jwN<6U#!Yca_ASatP6NZVSYhB&n>fU5}zStGkZ0M%DeCe+Zb_X-~t2xK6}nL z@E_nAuNCG}_9XkSUcFjuqul2(*0AyLj?%&PGAYBQ*|O9<7w0@F?m6_z`yl7erdK`y zMLf|}95Pss&!v{PmzjZ(*@BSSir^{%MfZV4C#7TfgQPUyXn)vg8&x)29$RLW zKM{8|CR2XCcL3!Vct_AG?@;l~@?MSxtWZ8nO6TWDS@EGlCVhHN zR#sNazlyAb{pn7e2~=iy1p}Xj=F{5qbNB@ZGpSUiw6Dn$M$xDq7(mMg3?&NcXrhsO z6vZimG~by_r3E-yC=aUcPrvC;{n6m!TryQUgOPIsDAEaF=G+LRzq~_f=}>XatNlj_ z2DKY0Ek1NVx(TbvQv0yBOctw@K2A!TJ8m4GRhjYb{m3<0WABdaA%6X8H^*vzp7e@s zAO8x%wRvOjmQF<$vh-y{nBSSDdA2Zq9_CtW-BTFR(h02Y|I~$)k-yGiO^fC)0`JXzp`#;&_@ng-*24+*F#9JC)|X zOmnBv+?h1@d73+m=Dt94tu%K!&7DniU!=KdH1{Q%n@)3Q(A*5#sO*OAhg(n{>YPfQ zFXL?HX1NABd5Vsliey{^UMJ9zFXOd{rO4EEBZ4wUo4-)=oK^m2lE&Rp)ndnYWwp8hRsU%o_E9FY%e($kV@vW78 zv=51YS=rCz%RjzRsg=@%nID(LYg!gssjdj8Y zI`^hJ@mWV#$EVw2@;4LYn7svKyzdr_v36b=voc}ju$51&JhbxQ%6X1Ht5R0|tKeS+ zV^>dF{rqaf+HPxSuFhV)Xm!!*H&>Uh`Qw_?Yc8+3w&vEFert7W|6MSAtreEPjJtRU zo`$Tsoa5Ky9I%o8RGdq#*v-o1cKjjB-L>j#2i~E+2LaqQ0A{bz_hTI5?ykiF>(dok zd)@mfUx~1{EJZre9L%4<&U=!J+=x@y$7I4E;wElqR5@MYf5kV-?F0Bvpn*kKXjNI0 z8idEGBL&P!kShIB4){*(LHu%EWHsLH{ixp3;=^oZr z@UMw-wBwn2EO@YS!=r;r-|}4{GNr61_GUuAh;@kEUO0&>2*L?s`Tgo&K=r=~4GlmK zo*+`1^AwTNoo5Mr*7HQlbY8*4ax`BfuMJ(rXER# zAm5eq9pUG;ZDJ!lUs;lt!^JH_boon-JqTqQb1+3d2o7#hq#>aGuk*Y#BypKti=naD)&qipXHu~vnIF0YT~moy=<^O z2PkY$H9`u(O{GlXAeFL&Llo(050$co8YVA!FybsFrfLDB{Z&r(e(9nzUAjfZ;ldrR!qSm|#o@MHRxz)$v&QWdTntU-iV6!}H4*8VNQc{QXr8pHZ0U zfAUl#@#{(+O#xmr-1@?R9+d&y-DP5r*Pe;KyG%OFtOTDfy~QG7K9kuwSa@U?;DfDx zt$$o2k(T>9z(dRTed6yVAEXtHhlOw-s+f_TffuRbMf#(ffY-E~VTre2 zi`CiIi9L%3upr1%^u$x&!Vn18i2GZtH}^HHH;DHu0l@OFV0=bEpg|Bw{G@2I;}gC` z88!KQhF^C)1FmyESYm##`#RkI(|&ULI&u4nPlKBh*YWV{EuXJrG4L;MMX2{70(T=Y z<79Rr33rrm9|93XPo*k8*q^vFKFI&r&UhVWQqTt6LvZ-+;W+v*#ogkuN7IkhFJ$k$#;X4?@?rg4DHGJNO}_p~sc`b7!# zgzCBUt?Ioou=5!bu9mXbe8uQUzuvbQk0;jq9MyQnZ-^g-Z^ZSchbW#R_kV|dKoU^(@gdzmht;9R&Jc0_(c?X>BZSBlsnirzAR z0~p&46lpgOWpKFS>*`5H26G{Lxw8}(X81DiTF3ntOG@-$FmS6RphXm+=7m^i5jaCD zIfZ7H^F{a3;~167oG)=1Wg&qo+kd%~&@il*rR;(Vng{ArP}{7MU_AgQ`L8NzX}4(K z82RW(J8q<~{KZ{AtC!z$;(`k68uK6!?vAvhIt5z@kb+b;Tam>18@o70+HtXk5qQg^ z643lM0oZy*!1Dl7%Ypu8;_JymUnfrg^mjIsKwi{;F)(WPkTgK*2_!}TWgC*C73=PV zID-&}J0R?;pgP?0-3fgRLLWm*2}8v1<`Sn!?1W2ii7QeQ!Vi0HHrP0Fn2Fsfs@gm6cG#Zk$YJ_vI0(98KmahSF#PEfo%vrw^iJ-$<%>`oIVz# zN+&+Hd&1xd{m&-O0gCMu92Q1X>4eY+?v>D&!t3hIyslV^@H?1Ii?{iA_;>mDSnSC{ z+K|0{Dk>|B_tOh6l^DRum6Q$5FYdQ2*a*}sDe{W}Us&izrM>)LqzeA8fS)f9%k4)? zBF)lYGT(;Z{MXEP_;)06s_)y)QsM2hl*u8R3ElO^~DY)H6WhwA)YwFXGC66MLxdl{r^0 zzvmBcyfcd}&*@};BhHa9UJ=-<+WC!a>xu_!)<{jW1o20)3)(dNF_yMXh&V%| zQpA0myJ_Ra_ctdwT6Qj+j^Eq7T6t#b*+}j1>HOgJ?k{1l+Q%b`@~lK#5dB6F8b|po8(CiI^CdOQ0t# zMERpYoXV=91-35H7|w1Gra!06x4g3XUKx|$k%8Ht2}I^E9E_rvYQxOHV96`AVU__| zDrOtF2imF4Ko3nI=PR4>_dx~%buJAf#75!VyhD%upAK7%aCRB(f(Gq!^SSKY)J~hYG0Cn}cc3ZTI zeV(@1F=<#P6#XFMj4&5hLvd9Xz8brLr(YEC(BPZnYEymrvWj|c%+|(6dK>#QE8(*B zac+$GH!=EAw5Z?CMK86o^opG&A0W)wyIbs5?u8xPp`Dzr6#ho>2ZZJ0zxjapdwGWt zTzfvSm9vP$U+?YsfWT2auoZ(|PptP}kG683FY`s01T`BJo!pUytccF#i8zhjhXd@i zzyUfUx55;JqRj>z!ap_#`yNg|;nkkHO-cs02q`V~1(&eYY!#QMrhLDwAx%qJo)i_1 zk_a{Pr&e0N10Mmj|DzvS!;MByY7SP%e+)Cytl`h7RwaV}Bw$rO#Yljep4eqZ5T8lu z^$$6xh4W=CoSRh65rnm}&iy4XaJ{py@20;u^QT7L^Pj%5`a=BkeWCEd*)6tJuUjg` zRtF}uia9U!V!(M(t5`OgVW}DF`vx1_sjCNRfPYKzyT0BIHr1L0Ii0DN@>%L&9;OUGWGX5%))`3kv`W(wS2q zk$y_B^zo_V1gq>g;Xeife@6QB6x{V->623p#1jFU{3mXoIDcmxoGkA8c3}^0I^Wsu z568huuzDZO%08U9?~EL|>i<`xa>E)?Ra8`)v13ea z`VMw`&gu$oxnxB6yr=WB?ChUpFZ}~4qD_pfo!#Wiv##IasN6AZ=dGPFrSnU@rHgjJ zF2G~H?K84V1y!vSt+0|SZ*|2@g!^=IUQ`w3j~;$TwBw zouCo8f2c~JE44hfvlY?te`CU6d|ev2p$JA(q`h!m@=a1jGaC;Y0f}1lXO{ND*Lf9H zHceoFxTQ{C2qa*^N=v`LrZ&j&pUDmSujDe?m~#bj>CSt1C|TcOt$nlotPwX(G`s`1 z7Cy}J_pOCZ>s5;z-g2t zE{0UKf2xD}S`~FKRKlf@#kdr*{iCzEAZB1a|=Hk11^7)gSeAGD~MM`CXm~{8`K2-$;?p!tXtcWXsY()1ec<<4gV2(rXtR=3ss=GUpXdjFb}sHBt1 zg0EAF7Yr@krLy<`W5^TU1cn^o=+_rEU&Vz4epQS)7JM z!nwCb>~C!Ja=XWPd+r`%P263z`%k-X;m-i)0OzgU)+#;^E10+M#C?j|9#bpq!?n}= zX_i^LAFSxkYW_9VKei&T7PqzSwezOpLL@HMFZNQAd$UvL&iMG{N*?Yj-?MMEC#H(y z-|XfXyBo>(d}a>V3MHN!+}Pd6^ObAx(ikuXK-{8IfjEb6LyW#35!a!|1*+~xr`G_F z_;nM?Xty?*ey@vU^c!e{oVVH$Gf*5l3e;F#+&%V-U^xE8zD2WQinL7su$Jj>Rj2%s zk!9t<5%@-BxTeq0#Khs^Hx=dm<2A!#5(a37^c$2kv~NE=<1`P)BqYQQ*Ch2(ON0Bx z#3l_h8jVL>(n75x9>DlS)*ybcrti?Lf}dE?FM+M}03BV&_?JvPZPd+Dk@2fcs4uI-ul$oRR-3wOTr@mD`Z z4w{g;zT(*D--Jg#nL1<5mIEK0`&k=Gd&I=XCyigU%u%?_^T(r~HT!RNc<9lI^H;j6 zsy%Pjo)7IlYKDE?j=e`e`nuyI(-$mzW(zcTzH*?;QK)%x2b z9@y7)V7dC+d;hQE-cM@%RjR)uH}`!MtX(M9xnB>TE%V~+Lavf}ZSjqAO^*~x#{Ze+L|Fr4|aN(*{1%#=gxpw?PvevDK zUgzAi#oF@g8u#F->VCqIsduO+2=k`$>IrXrKJ_6@Sg~HCvCk%~aNG2$!j$R3Z>*pG zuzJ#JJ-cR}q;lS0(N|YSesNkVRH_#F7w6!HOYa``OFC|?G)?f$ zST=mf6KFW%RALwV&vgG=JNwcc_U*ZBQ8L^5q@?2C6`nQ^vx#f?77e#Viez7#$DUrs zE}B>EYW0j}HVj}K0~ovZ8pFg6VD4uaqbFPehBF>5vw>k8TKaN!Fk@%sFw~umW9$P> zc)1$KI25F-gDH~v#~G3e0K6JKixd)z7|&x0iN_cl-nwZl>ZY+sp`l<=8jmsNJI$c6 zh`zQaYR!%rE)C-g$FSI0%guMs=-NxDlm>A7*`Olxf*Dc>9nAej7~~SdH*5GNO|2u@ zaPiz2`RB@DP{P{IL5x;2uD%atO) zfW@gQok>MIiSemhTFK=j8uy@TmyH7CpjPs;#g%L@ZkWP2rZ5)Q6@A-6ot?n|uIQy` zjO)2&=7qEUGvf>MY-fC0RwJ|$AG)Z{_57;ma%wSYveq0oOS;beoqczyq~>a>b3B7m zAOO~s%T})NOxO8h*rxL892D45b6w#lytW~-mW^E|p7N?8>wak2kt^mlx#S=!X!F0#n8oe04OD6&+t-9kT7GE`d&w&1b2%snct1GXVD#)^vV*uZ z&psww#ig4(Rl;9pvo>h~yRe9^JId8`omV4ALKKf197_z294wlz&EL=5Hj(kfF~*#U zbisKBqrGD=gHg3jWbDD;PGpD%O-5tL#)bh5uqp;H4Ggd<7{-FOPL*fe4crKmYa(-X z98-ff=t;s3(tYyS6v8XMTlO@$TR@Pv(R};r6 z;t1*MxTCKltFL2s-&UWNd~T7_<#v!e#Vx6ke#Y9?3(<3;Bl8VX5Wf~O;$ILZ&lzMJ zP9)Y5OKA5*y6zZ5T1ls5D|w0w+A_goymQiHvMeU^@iYbC!(YJM-lbT}-4g*cwU zs&;Hg#SfMw*L^8p(I0P=MGHSjo~Gd}%cdk@*$@9QcfKVL+J@VB|FEzi)jRt|Pq z4Ndtzjl12o)?dy?*?vmQhrSTkLSJ~+GG~`#A$wLaXEPYL4o_48iaHDSq{MbuA!Z4$ z``P9-><>8#uy9@gE}lF)$Kcc3L$1v+m~Wf=nesmnZD6*C@k*5kisBLGV!KPeL^o4j zrD{{Y=Mm=YRK^!)AIe!hQ)#_ubxdWbcCdP`>M;AB?${b!+aI0Co@ionI3@Lu-~@?I7$&12Q?3IkJ?sHY3-Q|4e6T2r17t~M?l zrc!HzLx+trp3{5<3_4fVf(CUzPw^6tZ^}CF7q5Usq3_c{KHo}7|w6rVyug709B2F&M|YPaX-Ee>95L z>PRoi!x?E+z27lZUL*DfLtK$8+^ z;xlQ)XVbMD87lweRKWtDPb+O?*DPj-r2A(+lRr%+ zZf_i5#=F`14=o7mVU z5ZMTKqS5zxMp_rvm3=0w+DgGuJ>aXU zn4q>)u8zGY%NZpF?Z`53utJb_!>f+#d9&B`!hemv;MYMN2G@YxWu~5AM9KA0$iX=%VX!0>n(zm) z{`yNpxcz&Q6u%dK)v_A%yJ_BAWu0^jJf@dnnrS&fHehc6jXhb;HoeFmOY`H6qi|by zMd^)-@p2fp>bpwgv2cT8LCgSSFSA}&?tiw7k@ZpxVANBDv*L@!v!P%CUOhddsjo0~ zs&`a?-ED6(Y~)Mg0cusNU^&H;aKbIvhGmRT=S)zYDIvblmLm+^h{putzEavqYfEUY zvQ1H`?9yX91#kKY^)8_+eN@E#`fZc-+cWgrGKJWT`zAc77nefKRAxGp#13CjWs`I2 zb_E3!OM#}&zKLN?9rmEg3#d_=@fmS8zejDz@Tn@A!#%wJIBzvgXZt4ub0XKC5P5?D#_dr2s z?;uyHM%IaYy;1f{?DLsQuVTAny3mz5Tpz7dhW@?9<4AQx3q!L8j@?aUO?WYcQbsOX zBqN-myv(}Yq;ixZ9xrPT@mk!P@F{1zgvD744P6U>3Q?J#&#Vmd+%mKF~749KOGSQ zKhxlvVc@JTvw_R2n`x-G#!u#-HMnLPA|i}ANd|74q{^9Q;CR<`1GgQLdY=91>8_dR zq-~}_K5jWU%i#G{ww2Yq*>KUbvYN{Sh_jkR>$f1CFXnv<;%gCkZ~_ms+GCu3oI?{>F}3F4h|n{L~}FwMr>m9=m3lQZZn; z@W!&Zm@q(76=?HL`CALD`DqOEjDpfGe77vlc7wuKzoj5)xt+8pEWKV-zH8nhzinY> z=2HHphkwh6YcFYAp!1F5UX`+7zjcVZpUIM*1OiM~lJRy z&u7!2NCyK0crY*{=Juu1{+kCyL7v}%Xac~W>KM0zjavbyOgOeYD){~)ILyLV%ZJ#W zHaJ!OQPysvDTWGz4hBU9LWx{nS)!h9o-uys(frQxWl2so)oweiPHm4%w!;dQ5Q*p| z2ce8#F0_>nHaagGo&gL$2(Cl*TM4Y+mBAQV72|!t-A9SgnrSXa z;$}jb+Nv08h{CT`G5)_4Z<;#BVf~;kOk=$rt=ggB|N8^`i!YXbBjjy~B z$U;QBFFC3hT2i6(7D{sr-KDYaOYzr?8-x_c9>!CVlC5&=Q!t?yCDjDjPQ;SR|EgMt zD)HjE@8q8?SbtV&A$EX|%g02lh2Ng%eL@Zrt==KRTPw`t?^|&rE{3^0T*5SD&*yjQ zVK)^gNqPYbljgACkinP=i8+SJ6^ag=4=0JKw^o$vp)`?xg3G;#zo18G)1jBb`OA7b z-2Tvp9eNa`OfZtf<(Vhu2)E_*x7|$RONGX0I_d77{?PPwJ^zNDe^bxDrAP0O?+_3C zgh4sGugCvRoqv2M&{*k;a zYwv%e6@<_C(1c1s`ENaCaF9Wl)p8mn91Vc)p<^~|lb67AE)H#1jr8T{|b0eTZTr9}_9 z$X@h>N7jtC?P0LDun}p3QN=GJ{9>fHcnhg^(L_jS%||Zxk8l&@e>d!7x&>75kVj3pr>Z2*F$YNu{C24IoTWuI*z?NFR36l3V-PJ_d#OYbelw z{Zq^BG|1BzZ?}U{4o{k`Ixl6$=-L&sryi4oc;+JTa-l zVe33~nLzS}OcnCk=kf+3CP4Yl1M6je{U%H!5!$YgDxk97bI>eFD5agGm^`| zYbMe<3J>VJIlVcJvSpDp%6PrR9-$2RRw};g9E%Y`$kuQf7-;4|B@wLYNd!y5ehy#F zXDNqm`LW=zyN%l429vAcbLpT^)59WVL6oMc$6=8nRo?>#FBb!dAcU3p6~lkcaIYX^ z)yXJ|(L3B1<{jY+@{YkEUlCs!*9lt$#7+jv+qOSot;AR2)!6sJ`E-I@Uo&z7X6e=q z7>qHSat4QseW%bDV#+Evxr2;Z<;GFFdqjT$9l@r3Y}cB{t`m35_fl$duv5ccn+4VE z9f1Udn!S7W5t;@8XdHtKt%`faQD$SrSHd;iEB<~QRgC${T4!j(uGFU8zDZ5xzTh(Q zePT+&SInx}SnggBg?zksxF1j?tH!nfSTT1<7kve;ftol1Fhn*$)Y^^8W(pv7QoATk zp@`b9uNm0gdEzTxtsH`JvxW2Mu(jrY=c6Tr(O)Wdswp{b4P>;tv>Y{5SV{{W9oBFf zAUMh}gkG}4W;?WQxVl;R*SaCL1%%yFSf6#@rc{3>V+@yN*K{mBzJSP`9qTY3>-{nm z(=oIlG0i(ge$T>+)OSeZ(zy&SQ<-Y<6KJs$T)I*GL{Y*gs1l}yP|hZvfR|H@20*4W z6iJoy4%-f^Id;8Jxc=U0G%Wdp25N4fQ&n&Ce(b)bbRXt;hYkDookBSVW2^z!sI+n! z^;TMC#WvnjC|qAZUR@`QFBoWhoa(%VM0$yToIu}3oEZ0nj{7rxKCa_Fq>50@KS}75 zsl9md;`S#9TfD|^Le`1Ygsc}coT?q`TufmEUtdaZFXYmtAOcCbOJP|XCf-<>irTBe`ahn?iDDlH631JB#GbC%Lmp?xUnt-U|x?f1)zfkwhHHMw}g8 zu2exVCURdAGJ`F6okH$Q7G^#(Pn|Ek{7f{VgL5Pk$>*RWaZC}8J~PDTpImgUnU4<_*F-8y@ICJe7M-toA-`50>6EU8t`03{Mpzi$VmiOTAZG9jh1{Z8Ti+D^h{n|~h5ta~>Yu{@S>rOK@E>Yi15)^p zHPk?a$$YrXN637nET!@~*}~@Fj2BKla^G1+NuJE2BuisaYthM~b46blJ!X5UPsj{#B?*@9Q4;uLK&99bP z6wbsJei9MA{Ov^PfWL!?$2wK~odoB$6xmOhs%WT5Nb?&;3g#ygl+HulaR-F(Vq?@K z!nL?=C!E)H2jPyo?j+nX$})RcxVv~n`d4tMeUaT_z|f9QBr@_opzsYnsb5rXfiv|Q z@*MlwgT-{{jm6YQ8W!-8dc&zseV9wbCQk2-FMLouCN$7i@D<1Oyc?dqE&8k7=<7A} zkHu0rWUj}s08vwju=v@ruv}Z7O;w*3&OJNgA=R_g-Nf1XH2Bil{knZ=*jIR-)D$W3bDpApj>M;I~P(ZawjmKibAaT@E+*2yMrq@sdrM@8jo zgjb`9h)}vlt1a+W3?|PJrZWi5JuM6zg%-wqq{IkVb^w-5Vbr8;PGsXljT>YJ9e7St z@8dM%kr{6bcIwA~nSU*bhaYPK?1ELnu~CAQk#ckfl5p@^7|2M5G5`fGb4wB!Tvppk z&L3}Nz#Xy=LJ35+UpZY3K|U>~o#B@ExCwW=&znyd;zVpeqTSz0>}DvHn2ieZW^iyo zkUGEkS8}*5p-cqchW5PO=YNaXj0xM{4cGchfjX21qwX4ip3d19jCt*5Xp=dH8rNe6 zF3Yt5XJoDi78j#LqjISbMHZKx5*Zbkn z{j6uV=3-6!tQTG`HQM$OF3q){aOo~5^*UZAT&Am%ppydxom3HSnM)*GHf@Y{(2q@Y zle+$(8F+bL32c4A&J1{@7XKEgh39iTt z+bpczd`&md$|ze5NdF z+Ll7sd4vPUzhI7^XIx(}UKOr$oX5kbH5YHD$49@tx}jX!@L%A-`jY6aDO{v#7CtK* zWOHp%u0~+F%zVy!S$W_-ReYm2OxEE-6%L15r77Ggi+6||<}bfz@lKY*VQ6qnZa!V+ z?IR~rtAm4aoS)OwAjsq980NHYO~Shj(Xu*0xygpUPa!31PAc zdFxO-u_b;oPM06Wr308eEy7d64TqiY~qBzzrJ832M7BP;G)? z08)^`^$n!|LK1gzD9Jb73P}}O+Wvqhlscv9zJWy<@ZUHnVZ1|Wh>X)%pY~b_<4?Kz zKKIY-4I~wih5|{}e)c=0>ofc6_`bN3f-JQy(D3@qemcINE>OZGa(mfZ=ZW+fPHR41 zrsSIMa9_b~H{7YC7Xvphh5GGBj~o@2`a;Gu8a}{P;jp0}K`4W~=K-4ctb+HpAH(LV zsp4;;ir?#k-am>aVk~!z`VvR3IJTGh6SIUuQeF88NFCG(q;G_CnfcwG+GOCw^sO?nGnh$Lg zk3iLafW9x#)MN*|2N2UjPYX-754HVX71tr58(Idjnp2;LM9z=cL$v0fx1%@uP~NL^ zF1Ek#3vazPm+n_HQ`?I3CkQ0M*Uua2quF|IJg~2B_m1?@MoRJ}h&uv~C1KZr-UUZ=pQ|W8{m<;fO1n?It@&8`3pH%^{2- zQs&=M-=8)GnHGq^Yk~}D5CAE3s^DY8+MADVRTir!x@TejZcz%KKR?iRbZcdh__5<# zMr?6>&xl^fWkx*Y_>~b4JJdw9-TX+>waDx@xA$$Zu;8l5jJ0V?!xCntPkWS(WIY@+^ z_OZ5C$~}=t#haxaM$fm*hF=-*>iM48peEqgbD7x?LcsHXU8Eq@pYR6kBN7T%%0SoJ zQN>4{f&$tj;}i^f-YIZfi-GF`N`E;tp+8B~k%kL>1lt?C+a_+`;99 z4t{_ge{W`hRubY=QEHrWD50=GDJtg>)SqFG76Ipv+Tk255~&#~TIH$)?E)JoHXit( z{98Y!=V~#+PrA%43FX35JI(#SVJykFie4pa*8&j^>-t7$-8t%!OI9pGx?<5c^4y4e zajO-#jN#YOdx5y&O`Uq`i{lDbQ|0=qCic6Xt*zt=3^^^~XuO&IPPjvey%#MOm9rnO zv(Qw9m8L2%zG>HYSS{>#5Y5R7)}aG>9g``j4K zI(W5h-!S%xfdPu^yuo&w#jRmul%(-zRZPb^j9jURa7EbsiRzeq^KS6qNBb{*NGi4i zy(p<#4fhGuN~elDp=g;1?yr6=^C@Nkj0}a58OL}Ha_m=N#45c4j@SPI$84!B-+vo* zwD+=aICZur-*B$ZTf8B@mEKU_NX6xe*=2s{g>LUAw1#>%X)pLa8>NaSthMHtT}l$W z*93zzWfvjSJjoq-4W~Zz_{RLv3pk3{ZfQ%sj-DNSt$P8SfrATN_a zgZssR;?_=$B6kG#nvc@lGxiv>4HS~C@ht_RR+J@>;g|vXO&RuwJA;}s-1pNNzYn9ok>)S#P$dJ#fJ8oHNIPq{s?0*Fa6U*iuUg2{CAhZ)yl zWm&lnG2Y4c2x&5E5LzE*Ok&!F*Z2mYU2ya7F|PL%{}%uh#1n1rF>{G^_MgQW9JnNf zN$fsB7p)bwOd08*WUcfjVxDE#9^2$S@}3=`-Iwat8H@#EDlmuy zItVo##9=xJ4F-YK@5wpIlfo^_JZNhJ;bxWI) zoA5u$W%MxT3}SzE+_>UN`wr{wo0_mz++tC2Hr$K&D91Ot0cven11_IyVaALFqZ!=B z!~OBnwKNp9d1{$6wTxTSVJjmis@94&dh@MU^YOI#*Z@|4Q$sCtwU$yCL@9LGWSr2~ zGFKE(5CxTyR)q?Jq$I>e?=Y^px`-N+)N&Q+{(NJ@qbU$VWs&wvX|Yo7fIsy#IUOO%Z|aekE(l{!G(gR4`jN%nvS>!7{!xV;!gKW z?xeZ+C6jm(j_^sOUDo-Vj_+wY`ZrDO;ms$T*ZGL~5Lz8Ts{_cPS9RDUxKM+?GKs4{8VYiP^CB%;&GfDl%5OKBIHg@8jf111C8E2ixEB~$Y z7ZP>%)cM6_FTVTnr|sJQF}I~GfBN~lqaD|V-M4TRS6TPZZ!ZlV`|uNMcE9M9-g?jT z=a%-!zQ&kar_EWgvgA2?ZR_c;BBSqpILVxxTCjEhhvzOw3?BXPjFr0^&;I!9jo-dr zzrlFl-|Oe>^%G)hqJ(>E`UsEI=#5oXRpKB0-bk7i()I}Vy`faS=7)t3a zJFG{>%U3L;M~}Yq&dIkwPQPJ`#wTrvsuMN%*3C%2Zxd#_N2oWyk>`Gn2|1_vTq8~Y EKb9@M*#H0l diff --git a/textproc.asm b/textproc.asm index b5a234e..f98a127 100644 --- a/textproc.asm +++ b/textproc.asm @@ -1507,7 +1507,7 @@ displayloop cpx #0 bne noleading0 cpy #4 - beq noleading0 ; if 00000 - last 0 must be + beq noleading0 ; if 00000 - last 0 must stay cmp zero bne noleading0 lda #space @@ -1579,7 +1579,7 @@ displayloop1 ;parameters are: ;Y - number of tank above which text is displayed ;fx - length of text - ;textAddress - address of the text + ;LineAddress4x4 - address of the text ;lets calculate position of the text first! ;that's easy because we have number of tank @@ -1651,7 +1651,7 @@ DOTNnotLessThanZero DOTNnoOverflow ;here in temp we have really good x position of text - mwa temp TextPositionX + mwa temp LineXdraw ;now let's get y position ;we will try to put text as low as possible @@ -1681,58 +1681,29 @@ DOTOldLowestValue cpy #$ff bne DOTLowestMountainValueLoop - - sec lda temp2 sbc #(4+9) ;9 pixels above ground (and tanks...) - sta TextPositionY + sta LineYdraw - mva #0 TextCounter - mwa TextAddress temp -DOTNcharloop - ldy TextCounter + jmp TypeLine4x4.noLengthNoColor ; rts - lda (temp),y - and #$3f ;always CAPITAL letters - - sta CharCode4x4 - lda TextCounter - asl - asl - clc - adc TextPositionX - sta dx - lda #0 - adc TextPositionX+1 - sta dx+1 - lda TextPositionY - sta dy - mva #0 dy+1 ; dy is 2 bytes value - jsr PutChar4x4 - - inc TextCounter - lda fx - cmp TextCounter - bne DOTNcharloop - - rts .endp ;-------------------------------------------------------- .proc DisplayOffensiveTextNr ; ldx TextNumberOff lda talk.OffensiveTextTableL,x - sta TextAddress + sta LineAddress4x4 lda talk.OffensiveTextTableH,x - sta TextAddress+1 + 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 TextAddress temp2 + sbw temp LineAddress4x4 temp2 mva temp2 fx jsr Display4x4AboveTank @@ -1749,7 +1720,7 @@ DOTNcharloop lda #0 adc #>Tanksnames sta temp+1 ; TextAddress+1 - mwa temp TextAddress + mwa temp LineAddress4x4 ;find length of the tank's name ldy #7 @@ -1770,15 +1741,19 @@ end_found ;------------------------------- .proc TypeLine4x4 ; ;------------------------------- - ;this routine prints line ending with $ff - ;address in LineAddress4x4 (it is the same as `temp`) + ;this routine prints line of length `fx` + ;address in LineAddress4x4 ;starting from LineXdraw, LineYdraw - lda #$ff + 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 @@ -1786,19 +1761,17 @@ staplot4x4color TypeLine4x4Loop ldy LineCharNr - ;mwa LineAddress4x4 temp ; LineAddress4x4 === temp - lda (temp),y - cmp #$ff - beq EndOfTypeLine4x4 - + 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 LineCharNr - jmp TypeLine4x4Loop + inc:lda LineCharNr + cmp fx + bne TypeLine4x4Loop EndOfTypeLine4x4 rts @@ -2023,10 +1996,6 @@ TankNameCopyLoop ;it means | mva #$3 ResultLineBuffer+13 - - ;it means end of line - mva #$ff ResultLineBuffer+14 - ;result line display mwa #ResultLineBuffer LineAddress4x4 mwa #((ScreenWidth/2)-(8*4)) LineXdraw diff --git a/variables.asm b/variables.asm index 36e8192..df02f59 100644 --- a/variables.asm +++ b/variables.asm @@ -39,10 +39,10 @@ mountainDeltaL .ds 1 ;.by $ff LineHeader1 .ds 9 ;dta d"# ROUND: " RoundNrDisplay - .ds 7 ;dta d" #", $ff + .ds 5 ;dta d" #", $ff ; 4x4 text buffer ResultLineBuffer - .ds 19 ;dta d" ", $ff + .ds 14 ;dta d" ", $ff linetableL ; = PMGraph + $0300 - (screenHeight+1)*2 .ds (screenHeight+1) linetableH ; = PMGraph + $0300 - (screenHeight+1) @@ -363,10 +363,6 @@ mountaintable2 ;table of mountains (size=screenwidth) .DS 1 ; additional byte for fallout (sometimes 1 pixel) MountaintableEnd ;good for table clearing ;---------------------------------------------------- -TextPositionX .DS 2 -TextPositionY .DS 1 -TextAddress .DS 2 -TextCounter .DS 1 TextNumberOff .DS 1 ;-------------- TankTempY @@ -383,10 +379,6 @@ CurrentResult ;-------------- AngleTable ;Angle of the barrel of each tank during the round .DS MaxPlayers -;NewAngle ; used in AI - .DS 1 -;previousBarrelAngle -; .DS MaxPlayers EndOfTheBarrelX .ds 2 EndOfTheBarrelY @@ -416,19 +408,12 @@ LineCharNr .DS 1 ;LineYdraw .DS 1 ;----------- -ResultX - .DS 2 -;ResultY .DS 1 ResultOfTankNr .DS 1 ;---------------------------------------------------- ;PutChar4x4 ;---------------------------------------------------- -LoopCounter4x4 .DS 1 -y4x4 .DS 1 -StoreA4x4 .DS 1 -Xcounter4x4 .DS 1 nibbler4x4 .DS 1 CharCode4x4 .DS 1 ;plot4x4color .DS 1 ;1-white, 0-background diff --git a/weapons.asm b/weapons.asm index 9510bfe..6e6d6f8 100644 --- a/weapons.asm +++ b/weapons.asm @@ -2531,11 +2531,13 @@ StoreMaxAlt mwa #hoverFull LineAddress4x4 mwa #((ScreenWidth/2)-((hoverFullEnd-hoverFull)*2)) LineXdraw ; centering + mva #hoverFullEnd-hoverFull-1 fx ; length sec lda FloatingAlt sbc #12 sta LineYdraw - jsr TypeLine4x4 + jsr TypeLine4x4.variableLength + ldx TankNr ; TankNr in X reg. @@ -2578,6 +2580,7 @@ ReachSky ; display text 4x4 - fuel full (clear text) mwa #hoverFull LineAddress4x4 mwa #((ScreenWidth/2)-((hoverFullEnd-hoverFull)*2)) LineXdraw ; centering + mva #(hoverFullEnd-hoverFull-1) fx ; length sec lda FloatingAlt sbc #12 @@ -2622,15 +2625,15 @@ KeyboardAndJoyCheck ; display text 4x4 - low fuel mwa #hoverEmpty LineAddress4x4 mwa #((ScreenWidth/2)-((hoverEmptyEnd-hoverEmpty)*2)) LineXdraw ; centering + mva #hoverEmptyEnd-hoverEmpty-1 fx ; length sec lda FloatingAlt sbc #12 sta LineYdraw - ;lda #0 - jsr TypeLine4x4 ;.staplot4x4color + jsr TypeLine4x4.variableLength + ldx TankNr - notpressed ; let's animate "engine" jsr DrawTankEngine @@ -2741,6 +2744,7 @@ pressedSpace ; display text 4x4 - low fuel (clear text) mwa #hoverEmpty LineAddress4x4 mwa #((ScreenWidth/2)-((hoverEmptyEnd-hoverEmpty)*2)) LineXdraw ; centering + mva #hoverEmptyEnd-hoverEmpty-1 fx ; length sec lda FloatingAlt sbc #12