From 541a7566cb26687d0e7fa96bb3f9123dd396ef77 Mon Sep 17 00:00:00 2001 From: pkali Date: Sat, 9 Jul 2022 21:42:30 -0400 Subject: [PATCH] tank names on gfx screen when aiming #107 --- artwork/talk.asm | 239 ++++++++++++++++++++++---------------------- artwork/textconv.py | 48 --------- display.asm | 4 +- scorch.xex | Bin 40921 -> 40853 bytes textproc.asm | 95 +++++++++++++----- weapons.asm | 7 +- 6 files changed, 199 insertions(+), 194 deletions(-) delete mode 100644 artwork/textconv.py diff --git a/artwork/talk.asm b/artwork/talk.asm index 6f99c7e..b9f26a1 100644 --- a/artwork/talk.asm +++ b/artwork/talk.asm @@ -1,125 +1,128 @@ .proc talk -L0 dta c"IN TIMES OF TROUBLE, GO WITH WHAT YOU KNOW." -L1 dta c"DIE!" -L2 dta c"EAT MY SHORTS!" -L3 dta c"YOU'RE TOAST!" -L4 dta c"BANZAI!" -L5 dta c"FROM HELL'S HEART I STAB AT THEE..." -L6 dta c"I DIDN'T DO IT. NOBODY SAW ME DO IT." -L7 dta c"TAKE A HIKE!" -L8 dta c"YOU'RE DEAD MEAT." -L9 dta c"MAKE MY DAY." -L10 dta c"CHARGE!" -L11 dta c"ATTACK!" -L12 dta c"YOU'RE OUTTA HERE." -L13 dta c"WATTSA MATTA YOU?" -L14 dta c"FREEZE, OR I'LL SHOOT!" -L15 dta c"HA HA HA." -L16 dta c"WE COME IN PEACE - SHOOT TO KILL!" -L17 dta c"IN YOUR FACE!" -L18 dta c"DIE COMMIE PIG!" -L19 dta c"I LOVE THE SMELL OF NAPALM IN THE MORNING." -L20 dta c"VICTORY!" -L21 dta c"SHOW SOME RESPECT." -L22 dta c"JUST WHO DO YOU THINK YOU ARE?" -L23 dta c"LOOK OUT BELOW!" -L24 dta c"KNOCK, KNOCK." -L25 dta c"LOOK OVER THERE." -L26 dta c"GUESS WHAT'S COMING FOR DINNER?" -L27 dta c"MERRY CHRISTMAS." -L28 dta c"OPEN WIDE!" -L29 dta c"HERE GOES NOTHING..." -L30 dta c"DON'T WORRY, IT ISN'T A LIVE ROUND." -L31 dta c"BLOOD, PAIN, VIOLENCE!" -L32 dta c"TAKE THIS, SISSY!" -L33 dta c"I SHALL FLATTEN YOU!" -L34 dta c"I SHALL SMASH YOUR UGLY TANK!" -L35 dta c"I WONDER WHAT THIS BUTTON DOES?" -L36 dta c"DON'T TAKE THIS PERSONALLY." -L37 dta c"WOULD THIS MAKE YOU MAD?" -L38 dta c"I TOLD YOU TO LEAVE MY SISTER ALONE!" -L39 dta c"I COULD SPARE YOU, BUT WHY?" -L40 dta c"MY BOMB IS BIGGER THAN YOURS." -L41 dta c"DON'T FORGET ABOUT ME!" -L42 dta c"HASTA LA VISTA, BABY!" -L43 dta c"THIS IS YOUR BRAIN ON SCORCH." -L44 dta c"TAKE THIS!" -L45 dta c"THIS SCREEN AIN'T BIG ENOUGH FOR THE BOTH OF US." -L46 dta c"DIE, ALIEN SWINE!" -L47 dta c"SAY ARRGGHHHHH...." -L48 dta c"I SHALL OIL MY TURRET WITH YOUR BLOOD." -L49 dta c"DIE, TANK-SCUM!" -L50 dta c"I'M GONNA BREAK YOUR FACE!" -L51 dta c"MAMA SAID KNOCK YOU OUT!" -L52 dta c"I HOPE YOU ENJOY PAIN!" +L0 dta d"IN TIMES OF TROUBLE, GO WITH WHAT YOU KNOW." +L1 dta d"DIE!" +L2 dta d"EAT MY SHORTS!" +L3 dta d"YOU'RE TOAST!" +L4 dta d"BANZAI!" +L5 dta d"FROM HELL'S HEART I STAB AT THEE..." +L6 dta d"I DIDN'T DO IT. NOBODY SAW ME DO IT." +L7 dta d"TAKE A HIKE!" +L8 dta d"YOU'RE DEAD MEAT." +L9 dta d"MAKE MY DAY." +L10 dta d"CHARGE!" +L11 dta d"ATTACK!" +L12 dta d"YOU'RE OUTTA HERE." +L13 dta d"WATTSA MATTA YOU?" +L14 dta d"FREEZE, OR I'LL SHOOT!" +L15 dta d"HA HA HA." +L16 dta d"WE COME IN PEACE - SHOOT TO KILL!" +L17 dta d"IN YOUR FACE!" +L18 dta d"DIE COMMIE PIG!" +L19 dta d"I LOVE THE SMELL OF NAPALM IN THE MORNING." +L20 dta d"VICTORY!" +L21 dta d"SHOW SOME RESPECT." +L22 dta d"JUST WHO DO YOU THINK YOU ARE?" +L23 dta d"LOOK OUT BELOW!" +L24 dta d"KNOCK, KNOCK." +L25 dta d"LOOK OVER THERE." +L26 dta d"GUESS WHAT'S COMING FOR DINNER?" +L27 dta d"MERRY CHRISTMAS." +L28 dta d"OPEN WIDE!" +L29 dta d"HERE GOES NOTHING..." +L30 dta d"DON'T WORRY, IT ISN'T A LIVE ROUND." +L31 dta d"BLOOD, PAIN, VIOLENCE!" +L32 dta d"TAKE THIS, SISSY!" +L33 dta d"I SHALL FLATTEN YOU!" +L34 dta d"I SHALL SMASH YOUR UGLY TANK!" +L35 dta d"I WONDER WHAT THIS BUTTON DOES?" +L36 dta d"DON'T TAKE THIS PERSONALLY." +L37 dta d"WOULD THIS MAKE YOU MAD?" +L38 dta d"I TOLD YOU TO LEAVE MY SISTER ALONE!" +L39 dta d"I COULD SPARE YOU, BUT WHY?" +L40 dta d"MY BOMB IS BIGGER THAN YOURS." +L41 dta d"DON'T FORGET ABOUT ME!" +L42 dta d"HASTA LA VISTA, BABY!" +L43 dta d"THIS IS YOUR BRAIN ON SCORCH." +L44 dta d"TAKE THIS!" +L45 dta d"THIS SCREEN AIN'T BIG ENOUGH FOR THE BOTH OF US." +L46 dta d"DIE, ALIEN SWINE!" +L47 dta d"SAY ARRGGHHHHH...." +L48 dta d"I SHALL OIL MY TURRET WITH YOUR BLOOD." +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 c"PARTING IS SUCH SWEET SORROW... NOT!" -L54 dta c"UGH!" -L55 dta c"AARGH!" -L56 dta c"AAAGGHHH!" -L57 dta c"I'M MELTING!" -L58 dta c"OOF.." -L59 dta c"OH!" -L60 dta c"EEEK!" -L61 dta c"AACCH!" -L62 dta c"I HATE IT WHEN THAT HAPPENS." -L63 dta c"ONE DIRECT HIT CAN RUIN YOUR WHOLE DAY." -L64 dta c"OH NO!" -L65 dta c"NOT ME!" -L66 dta c"OUCH." -L67 dta c"OH NO, NOT AGAIN." -L68 dta c"ANOTHER ONE BITES THE DUST." -L69 dta c"GOODBYE." -L70 dta c"HELP ME!" -L71 dta c"FAREWELL, CRUEL WORLD." -L72 dta c"REMEMBER THE ALAMO!" -L73 dta c"OH MAN!" -L74 dta c"DOOUGH!" -L75 dta c"ANOTHER DAY, ANOTHER BOMB." -L76 dta c"THIS IS THE END, MY ONLY FRIEND." -L77 dta c"IT'S ALL OVER." -L78 dta c"THE FAT LADY SANG." -L79 dta c"WHY DOES EVERYTHING HAPPEN TO ME?" -L80 dta c"I'M GOING DOWN." -L81 dta c"I'VE GOT A BAD FEELING ABOUT THIS." -L82 dta c"CRAPOLA." -L83 dta c"POW!" -L84 dta c"BIF!" -L85 dta c"BAM!" -L86 dta c"ZONK!" -L87 dta c"I SHOULD'VE LISTENED TO MY MOTHER..." -L88 dta c"NO... A BUD LIGHT!" -L89 dta c"WHAT WAS THAT NOISE?" -L90 dta c"MAMA SAID THERE'D BE DAYS LIKE THIS." -L91 dta c"ITS JUST ONE OF THOSE DAYS..." -L92 dta c"I SEE A BRIGHT LIGHT..." -L93 dta c"MOMMY? IS THAT YOU?" -L94 dta c"I LET YOU HIT ME!" -L95 dta c"SUCKER SHOT!" -L96 dta c"I DIDN'T WANT TO LIVE ANYWAY." -L97 dta c"--" -L98 dta c"WAS THAT AS CLOSE AS I THINK IT WAS?" -L99 dta c"JOIN THE ARMY, SEE THE WORLD THEY SAID." -L100 dta c"IT WASN'T JUST A JOB IT WAS AN ADVENTURE!" -L101 dta c"I DIDN'T LIKE VIOLENCE ANYWAY!" -L102 dta c"I THOUGHT YOU LIKED ME?" -L103 dta c"SUCH SENSELESS VIOLENCE! I DON'T UNDERSTAND IT." -L104 dta c"I THINK THIS GUY'S A LITTLE CRAZY." -L105 dta c"SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE." -L106 dta c"HEY! KILLIN' AIN'T COOL." -L107 dta c"GEE... THANKS." -L108 dta c"I'VE FALLEN AND I CAN'T GET UP!" -L109 dta c"911?" -L110 dta c"OH NO! HERE I BLOW AGAIN!" -L111 dta c"I'LL BE BACK..." -L112 dta c"HEY - I'VE GOT LAWYERS." -L113 dta c"TIME TO CALL 1-900-SUE-TANK." +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"IT'S ALL OVER." +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"NO... A BUD LIGHT!" +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"SUCH SENSELESS VIOLENCE! I DON'T UNDERSTAND IT." +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 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,>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 -OffensiveTextLengths - dta 43,4,14,13,7,35,37,12,17,12,7,7,18,17,22,9,33,13,15,42,8,18,30,15,13,16,31,16,10,20,35,22,17,20,29,31,27,24,36,27,29,22,21,29,10,48,17,20,38,15,26,24,22,36,4,6,9,12,5,3,5,6,28,39,6,7,5,17,27,8,8,22,19,7,7,26,32,14,18,33,15,34,8,4,4,4,5,36,18,20,36,29,23,19,17,12,29,7,36,39,41,30,23,48,34,42,25,14,31,4,26,15,23,28 + 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 .endp diff --git a/artwork/textconv.py b/artwork/textconv.py deleted file mode 100644 index f52f71b..0000000 --- a/artwork/textconv.py +++ /dev/null @@ -1,48 +0,0 @@ -import sys -from string import strip - -lineCount = 0 -lengths = [] -alltexts = [] - -for line in open("TALK1.txt"): - lineCount+=1 - line = strip(line) - lengths.append(len(line)) - alltexts.append(line) -off = lineCount - -for line in open("TALK2.txt"): - lineCount+=1 - line = strip(line) - lengths.append(len(line)) - alltexts.append(line) - -tmpNo = 0 -for line in alltexts: - print ("L"+str(tmpNo)+' dta "'+line+'"') - tmpNo+= 1 -l="" -for i in range(0,lineCount): - l+="XU@xOT^|{4Uc5qG z6pa4Ol37L1io z#~Y$ay{50cyt+7O-twv>zbbjv8tK#=sl^0pHIgy`Qd>4vd-lz5Zw_yegr?50EJYJN zi|0YBXIOYo9e9Szq?pwrKVw<4-ty+U_9n~R3U$~!k?W$vEdQ|Zf3L9Y zxI_PJZwh}ZMG9l-k=fA<%SPS{f|hyoyT3-Vq_5D(d@M_r-z`1V1WEXy<%YHDB`H>c zkLj{FL$*v_c=)0eO=)l1C!d9Ct}wAWLyjd{e!D5uB*<;twx%$~ooH!XcD|{->9h4x z^e-Vifoyd%quOl0}{w7ug4=)Tt zbY2@C-XXESp~;f=M942R5iCCPBMXD(@K;h*l29AIELCwrojaVw`jUitFx)DRX5tv8 zt3{b3j$|M?ih+@Ra%4o;rH<}N&6XK)2TYpRtVrR#lDS$Te+&CSP4>atW$Bb6wIp9u zBvS%BQkHgBv^SZCD zKb6o3;Wg2PI>-&F4G_qaG!HVK`cmrp>J~93q1)$@_=P0?RWimT$LCl1O+zxotZs$7 z7?ZRv7t!T&biIgvU(oZf)Zgnb%$~5=t3F#N9#2qP>cn3rsJ=S!%>=czPW)AZ>aP=j zli+Qet#D@wqX`JOIkH?U%g1GzJ0Q>v`&`9(CUuWovS_fe?rtZXw)xx+c?rtDm=04ztA}JvCVhL_rV4!cCpd) z)dfJd`Of=7KJwV#dw~@>*7Y?#1wVC36n3j?f+u!IlU4rV;0b@%d9_;qT#K)k_d|Z< zqR?*SqVRjtM?Hwa@M-CzH>Iu&JOM&0U|vi4<#>7x&&n6V}0@`sXVZpFvi zZ^$|*cN-T*>UmwdK*9MX1=qG##H~O4dbadY7^$UYvfvAc2_@u{!xH5oUwEU0f#7?i z-#jaK64L!xbyI?UL}WxPrK7u`Ihv|ABt+jY4T9hcRE^DED1Gz zXEypRrRvo}Qzc_H5>rcLk$;{cZC6WfwUzZHi><6H@wA^=9$HT6&#R0e@|%9F3H8qr z{GaHVl;Kyn2 zg5=LBTHc_jj#C zT}TpA7u^2*H5=9QGp_$x&?;P91;9}H`4YozHXQqc34>TF{rckZ8 zgoWzFTUlUI^8%(WVM48XD?GH z(PZS{6SZB_+yM6Jz&-#?DVRcPzm3$A5y(@EV89&3A^27IJ~f%=5v`SAit{AS6|T@Ha!R*OFeZ zW1)I+A`5L5C$S@wS*TXFqFJ`1S)PVwxs>&q`YgY!B<*7UY)Lp@r&^e~Dj_{xmkqsk z+6~b$?ywb8D!Pa5@NrP^EU7f3tt#GDMQxNIw-;J?d#ZWMGzJdgQU*XN3r}N_o|a_g zH)!)TSK3nrpBruGd^!#Yk|2A*3?wlZ+Tj9#3-ur%Y~5J_30HUan*Ma!!XO?@npLT5 zoj9hLt7cTsXF_ABE@Fr#g=+c8%&xPZvZs|%q|~&lDfRo10i}K)lB}znESV8ESiWYy zvETX{NNxGL{b$92<8Mc5)brs0#>kyEt1` z5{OB$@M7piJ5{KvTSg$1%0itwQx@vg>t$i9dV?%9sIz22P;ZolZR%_pT&SOgtv`v5 zreDD|uin+NXEWrv#7mY-Udlnqft3gmFYs?+=wkVJWB)A-f7M&qsUo@MFKyheGwi~y zTjG#-^A{R@r4|Dl2-?k1g1IVDQ-T>$D?kbEz64T&upREf*01hVD_Qh*^=42WBX=!U zi)8o3o8ifZ^z`%&)YJak=iB&$QgkG!n;816eqwc}LKWCftVUi~qWhDQP6`^5_k4Xc z;rvzz9>UAXttaaTrH`TlBEw?9R}4-cLR24u*Rtj|WV~ug&s}>%8I-*C1-PSo#R<%R zV8%HAgay|Y9T)a$Sxo~7^$lBNi%(5pv4oa+ZlFRFJ5932`u;s<$DQ)Y}nDl-X(KrP(aNDaZYPSTJGc4rWSI53*qf z@gT}G6mB3ofra)(4j`QNMvlkEhW29k`%dmXx)-8FxvpgB2=(1@e_{D`_i{1IdBD%_ z8-R{f$1_tZoMt?WCTj$#VVGhtS07|(q$>Cf^JLwwjMmkC2B}H>{(ubP0!>Z)VayGP zbVFUCR{4A=_RSzA$P81I)WCL50X z!xiHe!t>S5>Rc90JUx${p3BsEEW)9HoQns1@8`FB5$fNq7PUH2uNkr4qs3$S;Wg^;&hrJCSdqiJqD}BbT%XR+aWQu2@%o?2QbM+JQb)YQPq2B+F&m4pfr2xY3Qo_AJE`I%eB~SAX8?zOW}*e*&m!ZyrnNU+ zeiQ5F%RLlL)!(U{TM{9hUN)0D_%|hdLt$?sBc!9EZg~s+JO}T*f}m9+)86zk>g_ir zXleMzJ(3BlSCro9f&Os>H^6-w5n=+Q!rv3n03p!(LkS5Ou0=5A7&aE@$?HIr>jZp7 z2Xb-XIIZL5vr_mh7Vz+W4$E)6TWl+0f6~tXgi_beKHMNNc#il;<@B%7MntM=kqAEijOl27g zVXDhemA~!l8ipzqQk-E}WKux2AfNz22J#~V!3QsC>)>Tfyo-s;8S=zZ25GV9F(Z~1 zDTyUTu8$`6FK6m;?r+F)bO~rk*=n?lbSX$hpt%sgtkbEsg@-`-JXJR9Ry=i6= z>V>UFi8&ZM@;uvBBA@v`EyE$;LFV4scXy}f9Wo?7l)EoJ&pN{!>%|~b;j;&r%9!{9 z`D%c*rPTyk%XMa6J;16#e;ZR@VAbHVov8s<4PK4Raez5qV2%LmjlPRcJD7Tq#VpwV z(D3op(DBr;@!Y|H1k9aGY+_OoYB8iHJ$b z$1VZ~tGHHn5ja@9`PoI0)^BdLiCz4QME#p-8QIKKk)9$mW$1dR^jmeWS>45|d5mEf zDV>Il)nE&&#wc2tS>48}vHb(RY-iQj|AAf_Sv59*8kxF-RbvMT`q)EJ`5Z;%K8niy zh)Rmo28vXHB6S-@>UNY>SDN)obMxvOESjdCVQ``8D^Tl2i_k@z)mm93(vplX(+nc| z-SDT5i6~Ay?RTpS3A~8pSWI$ws6Od^Ds;6{;5)Sqf7RmV@KzQ}ZEW7kJpZ@{_QYx$ zf+c#|?lIA?&Rz1?yHwqx^Ei7XBiTXbR9y%`tQtH4=ockw9yFoL=P{_eE@DJkRtk z4J|&kTGaBjR*oWEk$JEuNQ-?RSrndu{$%4t^y!AG`jSN+j^iQkz`CC@t>^LO@R1+P z>}SYZKo9W@O2|H-gcyhWK}~)}=^nPiGK2Uam2(=WR$6H2E~;?~tOTz&h*uk*1TU2D zCJ&VFr!MkJ2G^6T$nWGDayoe-DyuV-pK zizHL_6YJTLdKNAH{|iRAdw2`ukzU`v-yFW1ZK)wWgzsltHj*mBE7_J!q>X)7Hv!@C9m^A(BBoGN&aO2n|dH&gdwgn%@9iQ!ySU2i*IW`%x5J zQT`JcrxcWP(Hl$Zl~mQf^_0ha-_SQ$4NS^dw$T~`ilLa9X$BI_>*z-FdVm8eX7@3QG-AFFf4?n<4nv`!^^B7gP*V%7@hzN&t(LtD(f?}waHz9|wIxB}v1A;@ z6cP(9J@6sgH2R^n52%6f)r$S0gAF?W(83P|Fdcco6sRnIyD46t&}jsY8gvXyje3nS zc=%*Nl+qa!&duoP%ByWPV5e#UYukjyisiij>>ZQ&1x&dUs}ak2D$s_PvuQq`Pc3H) zzd>Vfuj$jC<9X4aDwtJ44Q`8b3ApcQis&&U3aER-r|V&by<16L3%~LCur*BQDvJ@l zC+b_~^(CFC@4Ar+mpO>)p^dDm=Bl&~UMn-unDFb`mI)VjU6OjCyoI#ZSwy;9OzTDu z^J-hmon9mdcVAKmI`wgSr>=AR%vC08sfxF>yxaA&?}r#xMb$;JI1ZGni)GQwR5ST4 zpRA5!k=ZTj%51D3YA*uw8em=o=2)hV#o80vy@t`pD0XTrLmC~)PF=%VGE}sV zBosQa8N*JQ2{xLY8ppaaKpLt7Bj}3OPbjj-t`ILuUaGZ+p`uH6PwF%Hj(Ix(JXa?i z3;(%Jc;)CZuR1vzNr@ScJmQy@7W3;Qi~Rx1YZXVdgE%a7M)j|g)O8ZpIOlOBwNCPE zToExwho4?2nSKj7^@fz_$Rq2dkKIz(Et!6C*{xxvMn|I&A816Tc@bdhoDog*{9y&& z4!fnEp62z^;ZmuM>+Y(AbAu?Y=Ii6CI>CR^TRlehW8mD@4G6RQq2<*$(nA8ktw zN6X~LXX7Nb-PeuN;nUlqDcv|5Hg4}q^cYU~M=#IkE4PETWy+d%pE=Y}b*-=`Bvf(2 zb73R3hfi+&+Ycz)qa36feVi`Th3#0!Ppe2ZPb#snvxp#Hk z9}_))uh3T4Sr2JTZ#*)h1}|3RV{ni&Q(J$peMno4uYD-`8xW2SKb<3+CTb(_Yy{ z7+{{f&>&(!6BU~{+@+L=MwhyV9B}q(9Y-UooFL#0B0m7NUI`_)xdoJ<$sD=+Gv*N< zqL(ppds7EpCivR89iakG{QC4Z1j|q`n~xrQvU0ocSY%~OlJbD>ShMET;CRR_S?XWUBg_>=`MI+n?Eqy-8Zsu*eSbz z{kYw198p4xvL)c zII2#QV#D^k=4i41g;I;x<|*=ELTs~rG^<&kdnblhG#{BFM-%L`L1OF$r52AfX|eZq zO_4nvRa%~V#6Ro43H%f}X6V(x;5L1ZJY$ZI(mz#Jr^=CGS`ju?hCJwZT5E)xra@x8 z2}s!N#b;z#%P@Sn`-WW!bN3O>k8hswD7xim}CD?hx9P)v#I_u_h<6?vZFwr5=n1K?o02_mwTfZJHrpG z+3%1WO@CA!@~H>bL^IWzHKIdSo!ZwJ`f|!@q4t$RUxjiYvD+d0_TXIE8!(XWjrrdq z8XF|~r#MlqqeGq_FbwuIjT|+4%r#@jna5Ayy0ISjbzhc*)K)T-9jr(rh-psjX6RA|2OxW^G1gP>FGFbQD&d>2|mSet`++ZKJlhts8yUBBw&X* z;nUmx_eul3?^^NFDPL{NM*XxY6EFJ_=T z5#*J{;<}(xFFq1Pt-XPiv2g&6tsO**cigfLVG@}dO@%x-VTa;rQ}yo^N}_N?W1z{Y z-2KmxJb5JgwpZcD2<=*Vg1a&Xq5TJ>L?Zov5pqbJ|5Xy6lmJow{bYMA(ere**RpE8 zK8Se$#D{%_zEqcdYPJ+Bz^tpRLY|SdJfqx0@<~@$Vk}qr5#8}BxY`(a%^++ocy5xw zPPa;&?@x3)B|s8o($#v$J72XQ4vWx_j+1t63SvWWFJ#?!WK)oCOEeAk;Bl8EQC=u% zUfFSUuYL9feD$13i~jXcQ}?S>5W&c(hi;1x7WL2s@iyE-6PHRTs+LL0!vA6HgM9Ep zp7)b=r#A($;Cmvdi|66b)#xB_`JRbA(97r4j5_cN_oU_#SH*5`di^Y_#qHv#GOCWX z;z$`2ujEjBQO!(oH&7KdnrvTFDlk$mL1EMy7;)6Me_R>T7n1XXWy&z|i84%je#gqm z4}2TxAwt3}DN<13AP0=1s7x#_6J2HE^fG1y(lo=e7x*p{?h(3qSFU+5mbL{_zi9JFbFukqKUVu0iMs)twUr#WQz< zfANEvhNt{B4^9{jj3i)$I+B&-&g7q?$WL1}NB=pj%qryvS1+ynb zM~4o;J})3sQZ{W9c6*E)(d0+dZZ!GO)Jm9!sL34iuaa;_V)rU+ta*wyx#FC4I?qzz?8iJ&8+!g+E7th=Yb8^9|IM@wO{c3%DzSSv9Gh&3 zID?~og6l(D3rqCF-l!9+z@Zx&0WMVkwy$Nv(1KH2?qki_?9unyJg;p8mGcL1jQ2w5 zg%cqhH6A!|2ze*GAw&{A@4xVn@viS53Ub1;LJQ7Wg%{zv0eU%@fSC8e#JqnboZ4-FulE|uO zv1@lLwy3bzaT{CpqEIj1!ElI*hOOeAbPVZ6`#H3uv5$^isbvW}r}slk9jWOK+GDws zwl?={*2um%K(<1o`|JK(5_*FUvt9siXiUzTu6(QEn=zSqaZ|D?^mKQkmf zIy+76cnde*zCZ;Ly@(1Tdcmyru`Q1@0CWFWxY61FpG^Hvw*Ru!k1l^^bldENer0a5 zc?)P0&gILJc1$q>UtNhGU#6Rj_RILd0+yGe?|QZKdb&vy9gj@|Y$A-pMUx~teEO7x z`41+30{K3|v|mAYPjTijaP9O<+=8O2xl^KvROX_d)F%+a9o>9`(1`ZIg9vPV#1FX3 zo(|Ot4WT+gXm2``?BDnB*p#YzToI`8AA2}E0eR}fhp(Nx`3cMBCp=$kzi-^6-1kFg z8_K9}PrdrViDl{IZ3#GUnLx)vbdrJw|2=Cm=YC%t%vrb;VM1)2K10FYm#AM~!i7d3 zEI)96;G{45xspUp{$H*!^9TU#92?Dl)tfi#R}Kc7FDke!0|I(8;o-m%!)!MH3k(>{Kuc^+$a;tn>MrwL^E>ob&&pdhE4B#5-dhp>CwuiYH+&4gQzvvHW>* z&vV-CyZ_Lx8YIF~wJQhW1?@Sa^TLG-yFO)>w8za_p4+3{*?2BgAK-j@)C(+@=~mCN zi*Rv}InOSB!o>6R5-IG;#b(I`=6UQXGcc+LFscVJ_O!T7&J4Mz^KeYn2cUQb(+4WNciNkQ0k z^fve!JWDrgAG22D1HII4Ccnf&qTIUk& z0rZ_IJ92jB#Q&K?J218E2<@!eE9?xU9^J97pD8h!lp^;q z!nX)JNL#(8cS9Ypqap~p9sOt5kM)w%4cI>B`XO!n;HZ0}Z^eg_&j(G3SByvhe&4@r zLmB4K`0{!|>w`Y}7xL{-hr!N!(>od)yI*;xqWjo06|^1XqwVBY@2{RY`^+=^+S-9X z_zx)J8A(|pK1_?pH9^Hfcj6OqC*Ja9xi{@ZFAWZM9D1Q7DUM`-xmy68nMd$JN+*aZy395kx5;qz%(?ao3YR3 z(>BP6x&hRay8ebu{mEDXL?;C1G#;N88x6!u`v$kkv@Vv~XK=&EPet;tn__djaaeI< zIGufv&blVLyVKb}(iv{ePsM-b*u7}cBHR?MN)u~>p0Ty=a5~Sv)}Y2g=)zP08%?j0 z3>;(_*7di;H9_-}_tuh{^J$<4QuFJiW?WJXVv7EYT-x+*^X2fm+j;^yUWNqoSDvSP_>qD1va!& zqsuzg##y;M`&8QipKO~o8wggHv4DV(BimYP%*wMC<=PBZm&=+pbpX{l9iQM|WHXik zQf%c42!RGOIj6{Gn~706i#R(@T=Qu(PM0AM`1IFUV&k%$kOQhIv{|!k+;ANOsB32lD?sQvmv1Uh@17dV`lK~rX_G0?Ba`|=)8P4O#HfBPC z>;j$`=3rwnB+1iNJUutR zlyg}fQvob-I~9Z-_3c(N|qARkz+sMzTMi&A5Wb9#O@>98110KXxP z7Fe?<+hI^15KY5QF5hOwD9E{?3-Gb#I~_K#&ChUb*>E>$|Q3YK&c26sLKk?;02_3Yi6lI6Ae^Ay@<;!g6cR7t2oP9 zl$EE)0b%H9#aZxP2L~Kz9&9t6G<4VWq9Vwv1-~v0nNz1kRv2EKHNC)KPc49FI2=|8YqM&O z84rd6Yk?JEY|qx+QBy634lU-vv$Ri}V~Vp>^A7`5%Dc!TG4|r=S$PoC2JXf1FQgkI z46uMiuw}bxZyb)5K2J~X3&*HX|BLFSvN8@XFE$AMtdrPBbNrxWg-jb*lhU( z(>^%SqUi3n)BH z0b}dYhXAqV(|j?|%>Z%r#ER68go+f9O>^_WAV}X_?(|afHE6))LiE55W|kUhI-_ZA zpg;MGZX=pOHP3OBVkYD%NJw1IN`52-mt`e& zPAj@#C4+u!->yB}V*Rj%Fo)Aufq&7NECUAL{RS^E*c^|R~BpJxYu q{6F3~-v8LnNhAIK-TKd-_|MBDo4S*d%B6=TU)h+K|Mcvo5&svF>E?O> delta 16689 zcmbVz3w#vix%cLNF_7gVE+8;b1gRkgMNL(NO|m2llU+_WAqG)a0!YNfibAa%oFrsI zAQ{MJLBM$jvylxMn!!*JjqM(=Js?YkZ)$5Rt#WKXprn;_tB6_!zW+0`Nl@{e^ZU4D zX5Q!WKJRmTpZAij2V+kjjP0(U81t7`#fkQWn4iD;_LMcLzM5NOXDxg+fBJ_pMfWY% zmId_BxZ#!bJkPyez`b3eS|rQwxL-NAU*vLGc?9^KY7v{b#f55&l*zdFR{;ahF|*ZJ zZkUtnuG%Zf$3hSLtM8s7;BEYF`GJ6J3(4}@-LfLfp{?@TfUIn#mk%|$h0~J(`|wq{ zWmFDcF1;E>x}*^jzcW|0fC{h2toyYsawLv_-`+P*F~u6@RIisd$b6q&O+@FaWskBf zaPFg9^e@^IKqsI_^aYlhtX3#JvT{UL-jUUF%HL!)PKn6sBg!dRjZsd^+{XpVMf7nD z1K|!m!`-@ytN#giWi5BtY;<)bRyrKZS)VmVD>kcX`1H0}>WhrA9+4w4M~_)QKNQ<- zi#F)-$E;s?1?{nbZSA|V@~-UFHp<5r$}LuK+bFAJAT`HT@!K68&7n=Q*t93qBkOVe z+}cZh3bmAX!#CSLNZ{h72R(6uxG(Pe># zhj&QquW#bIR|oxK6TzY*-@7zm3yoxz@nTJA46C$=wK*Y<^~Q^J=y08MJCm}RsTOsX zG?js67DGowis^xqd zGf2*ZWC%#lgKj82(}~{e&z?9&@M`zeN{3>#oLcFvSnY?k(l2ARduyd%#cKD}N^i${ z+h?klkFxbx1l&SJVT$sBqTIMsS-4YSJC8-;tbg{Z75Zt_(y6W&eX12{>tXhyZ+LpH$ zAb%`8?JeA1xa&YqUTs&IU%Jn}XoH+RBDJ&KqFOSS$k}mRde9)^;)2UNm+x85FFH-! zHyPYN_qJO|kx6ja?u%#~{Alp)@}1lyN6t4|zc>d-1I8Ql9hdx5?;kC!4;7ckXt-2*z~RWX)Pu1#hK9ANOG4RVgQm-Qw{ds%nf ziB}j`R!#}gtELnC<&PRd{qGq5cl@mCkgND%u--nQSn(R%wVyKS4@~P~()%nb%t@xb z!g?*z9~tT6dXx0pQoySRr(p~bEPqeI@+V4F((Cm42EB%7BRxKe^awF6(jF!W8q@y3 zq@ObFeI|7=?IeQ^v_CTG6;m(J1nfe}7-EQNT59pU6TfGA8(92_c}cja87Nj|?vuF? zl8fVWf;GK2i#6S`M{2?2n=o6jrgFAe(~=r{wjbz!cjoOe8~m}eCZ=D-gywetU9)b1 zqST?LvC*wd;qT?CDvZR`_v{{-fSeu0; z_(1dpYb$q(t@Z2n`Eq(=#JXV3RF{&Px~opC+n#dSOIq8lnoEhq3T^Ya9LF*19;56r)KB5VKlg9_ZW4VZqeNf(gQ?uW z83zDGTlv4KBVjP;^HIaahDi65r`*T*lSS8n#F-G`8lWT-1ohuT>d#@pI_ZZjxK6s4 z?Y)l$Ym^yiRvc(niqNc-vSZd>?k(3H`LA_XS7DXZzMPK?v zu|X9qaMAU^Zj@o~5(V}yRbcP=3hZ5`1nZ>-m7pkItU)b%aL_Q z>IS6OQ96-fG2W{NXAVI(hv4N_6eBTikSV%85Vr->D93GYv+Ua@-OcXWuSF^D7KqO#%KS{DxAM`nG5k z%!D|Qb+u~5lJ+EGi6#J=plQ-;v#97>g-EvGwxu-?WBbxtar?e)B!m`Z)@1D-4z=M2{^Wui7v31*&H{cG z{7mRD?Jj0bf-Bv{^aO(=HKeF9wyJ{+jZ{>B&G?%=>Il;aUn5~j-yLR*wAf!$Fj~O0 zV${khm`31uT@~zX4f?BX)c<;6ZPS7yH?A#(Wju>!EyyASub;aw8^k6K-{q4 zet#8KwETvW@FsBiWodXb9I>5o#t+dR1Jv_R5T1V66 zQ&^2(K24#v;ak;rOB{qVOK(#P_=K8H2{M+psLEU30Ua-wUd1rOVAIib3N`yF8Cn{0 z>a=Xdni%CfD8L|!kOOe9!Gt;iQudz+7y}_deNjeshK~_U-H+{xK^Q82fq<`>KuZ*O zgF$%tk{r4uhqDm^7A)%V&RxGa@)uLh;Co57CaAX$LOwPj>Xo7jS*nnYt(AeMC9Rr3LQ`Y-?(Q$K0>?f87T~o0rgC2nb9y?)_%&0LP?Dk`)zdIkyoOH8 z_yVYhLH>c-RAcIB$li5;MJFSasm5%CLNz)ap;%Qh9idu9L5C7rppp(nG}Uyd=zrtu zPC*50c)1r~L{t|d3J|2FSCE$Adn1el@HCU2VbUswG_jIFTI`_Q9Z3$~6NwMsr^ofJ zV%jP;btQ|WLduoQ$gZXn|6>&(SUD$PYi36IB!DwPuRX)`JHh7ar8(vVq{w8^$F=xp z@SH$odO}+)rYh?09(^p{pLHBU)KL@W4C)Lb(PV*6QeyFe2?%@?j`5)f+md=F)F1v? zB>V8Ik%UI;C)tZKpJqQ=fKE|Yj$x5`#=b_3GSbwVGKOJtdz$I@0WJH^d;z#x`@t-)5S)baeI?dkqxMl>s^B> z#Pq1^^q8YU^GggCmG;weNqUXJ&eA?(CG|6syOH9zok=e3)CK1cusxx%byA3F@Ypw*_6C!FPM-P;)}CA) zVl6k?G~rEF1^(?!`#GyZFE2Cg7pw|>?P6JPvaFx8tY5HW`fouLWZFR%;joor;Nxka z<7r^y8Du~LW(SjYGpUorgKSCa{+#cZL>LqWl7OFqnO-JG5H!|lH#bus7IgqP&I6&BySjIA!G3yK)nkpxv zsU@y&8RHul+5~DLB%=j`IBt*86VZ5lR!sL$g9YImEYKPqr&qm_a~>NY2bj4TV#KFW zo^k=BLPZ`!-ogGNZ4+o@QFsRE$;Qj*GY6{b#g>V{pe}d^b_}SR;Fp!dN4__&e@)&3 zeu!sqLhb=4#5mj!YI=oHvWKm(@}Pc@$Sp=sdui@$PUhP*l?PPsBnYNRK6Da#h zJK5fyO#k8kUogVmLpxYRh~wW{WDBikYd4Y}LTlLC&7_J@4O_c~wDG@+Lb#DZ9t+~9b`1Cw^@LSdHtpVTH&hs9Be@s zi34x^`=%Tw40VD*8D%L_N!=RV{Hb5ZZF7SDT68!d+QHi6N#O}N*2$(W%=948cGLGQ zhrkW}UMoWk9+J>miV=P&d+GQDra*PP_StB0LMIzIwlFa;HJTO1z(JNWF^&%2=v0c1 z!Mw&!0`|BTv-W4Z7BlYm-ebqCU;1kcZV-$HwG@jIw4zKKQo*MAd_Jv$Ij^7*cz->5 z=vMt_DrQ&2KHL{)9dP5@DYCOkB=q79t*(PLX09W(Ij{J9*j%Qwnz@ML!*wnBz43?Z zx*wqOWfr1)aF6RYn^2kDX%ri1jQ!7=mNDlxjbO*1#HF<4Sw=d1jFyzknb+8y-s44* z$mxwIqF#$h)O}{VtroOPsSf=4z7pipAlf`j8V%vh_X4 zX*MM4!}d1Gr%L2diERCk%OwU@l0E{B_&_5v&TfE-I8Be^-&u^et`hm^(Pl~RDwW$U zJrCC6khSNYhih@rY8areYrfpGxK_H3b(P6IkJU<6*7cy=^F*!mkla-+_dHcAHOpNK zDoOZ?qsH^nshe_Q4nzaDEAI>Jok?y2EVS74cE4(n`FunC7B zGatNPFpfFl>v?pZo3C^Ro3M4VCp1ysQDZ-M^iZ;XK{b~!I2o1-6&x8$PDR}+ZdL8# z3*0XsS8oyP)q6w{yE?O!O?IWh7rNMh5x%x`S5xMCIs2LRq>ye`R?o!gY=^H0C(f%I z^u!*VHy>!|j^krq^MCbVrf{(Vyty$eI()WZedSnjYf!ATh%bZ=PT`*2qFIzccdA;GYZI+YCN+j**p=|wP8?8l#EpN_MxT57zmyF}TDm0eYBOWu> z-guqZ7_}uIgzVa#~CBwtCrCR&3(CwDU@JH1puL5 z-)A=46+Ih6Xhhe5L>n=#Bn*)nHHTuWOh2Bhbf@HiO>a5|21KyM0P_`RjD!J=Q*V)m zOjqxbhECVklMmj$+{7`Ms)q@9za;cShg}UN&vAnjG?}aPBrE)?$LJ+n>1gVtI|^SO zXh5{U8NXcJfOr{Z8LLvhh?W6clgU6zQ>GZ&O>)cA~9Yw z$YuSnUQAF%9*_!@bDIhkbqb<)7NU2|3U1ru?X(FpeHPAX&CtgQ_(VC9vSa!zBm6&6 zYw+4UTN%iS?YDe*rpcU!$Awax_s&-I*eNr?LO7?^;PFv%uff7zJinIa+LW0=|qY=KF zjA58fK*IhoKEo+3DO!P`M(*an`?)a-BAP))XO<-a`*% zqHK=Z8=BqF|8c>%8sTkE4y~!h+*@CZw2^|#D*AQ%d?__PU!(Q&?38`JDgGggh6#mA zmQ(pbIJG6AH?^-&Ii{cA6Y{LsF-K{%{+BjKIqq4Z-=saVLYkv!bB(W&^fgz}c;hRP zzIdfAu4j(o+ltd_Z(9smXlUU#m_`Pe{w2!PAe^Jbx5f0#@dp--6tH6V^^9R+>)s`S z&>b(Nihks~EjdBo89&b5TF-0|vFSilt>_b5BiV$KYFp|fw56@$mf#j+L&A@GbEE;o z;f*@;j1LzEV$QUJ)+ap@2)0U#4Cbkwls-`>B7LHwQ;&**f1eNM>9L}}@z53h)108c zcZlQ-gj`#tM+2clTcyQx2c#mPJsQBC(c*yE+Eo#tN|2LY3}_Vr2vhY)KG{wMKb1BySOekwHuRLrvhl-!$0 z;LZJ5`A-aBMd@yN5+M@4O;18k%L0N9)zX&gSA}YvxYy{w5CMB!;92)S@I10t|BY82 zDRvmui5{=Uh#lW2eA*Z z#~+d-Q!(kPLM@VvY$O@=SrSmb_J|{s)$8cq*n8I+M05=3bBp|Kb$d)R#X=JG$ajf_ zsCeJifI*nkON4aNv}sE~ornVwS=_#NOMvcMG!1lxdna+qQrSq1o%^;;nRyOhM?Xr| zKi$>T^DfmxurbP^>gZTe4vmqjaj{KWDaa_Qo|e_6|IOG3`iaWwdGf@T02Y4!fGHj? zRhtmC^ScA&^Pf<6T)X*oG*^DhZGqm=^ovWV7S~I|?Nl8b#SvW0tmII8QO%6-9;k|< zMbQBxs@EgwrSJ3YxWSI3gdDuguBJ#owqwHcKeA*(#W#^2BP3kBA_Zj+bO2r5VVCZ- zOVjPrU3PP_9EYV!#720@0OF9cUm9?~%dVv%iD^TS#I$tg|7b}L(yO|700;g?lw|`A z;EAmdRE*fthFSP1;FpgBfUWrjkxAX@L?K9aJEVEQ9^rD-{g<%ojmGEkjYhjYavgor z8@0?F;ErrFdayiBik8RTE=g|ex!vErbb5RxlOFem!0YVV{?fkOQJW*e-7253EF!A5B}( z;{VaDiIThPB$#wCj_*oIoi|8ZqbP(I_wH^W@8j&NcL$G3EcSQBhr`l49NUk1(& z$lsC^UvrN zk2XuN?l-=cF@x((W7Ur(XY+D%%Z>Lw4K8PQ;xO-};7f;t*bU!#co*`{(v?Ay=taM6 z`OpWydoXAbH;XMeffaYdbKB_UE8HtS;Rx)=58N zI9^4=I_W7ojLbp%8MLFZ7mY^C6YPvhhn8AW(~oGYZb*Wl}asPak7|H>GKql#nJ3-G-JMM@-}PNFL@bb^}H`3`Q$ebR&Dit{KF^m8^X zL0N072j-5Ew3(TxXo<>>F{}?HNeW$8J8WLBn_ycD-h^{`3{HY@R*{ac?zmH9Xj^g0 zWqe@$D#-e8y~asC-LcU}o4XOiaRr5=6R0>6<_eQ6$}#JQUR)KU>#R6>=)cK&0oSOg zVm>0%JgQi9{*~1T;m)4P^&QG);IO>~uHk#YsmcG( z6*d9EV4Q5D`BSrbjd?L)p!vLtD>YzXHWMC>uyHtFd!z>G2RE+jx^aEssvb;AG>{NO zOd*Kg=qGyXVa6ISLF4_6PmGG0;eY9g>&JY66u47-!59YaF>DPVjU>@+0q$UHm2J#P z9O2Wkjv7TH3#mNz4BfXV;F&);1&_U4u~I%mj><8=t+6YKW*aCGPM zH5(`Hv{~oxs~RE#K2oAZsOpw^o)_>jc59v zbLY-&ic`4mRW>8xZ8ffSyb!Ewv-q}Z@k->T94$sU4_^nHSmnG$kz(m3oZUScn=^d|nLpG39)jn37h)cLn*^gmHN zs&5-f;R|dWZaTz5N0=yu-eTgWkj^?ozh*uuxDLlR@wiHHv?bAh=aVCZ`v(FmSU)96 zy2NIS%j%a!|L>~bdx&kvo!^c++M28fH*8Ld;-fXjKExv9A=SwvOdkcoPQGPj`cMdWQpaW=1l;j! z|9emVK)A$$^|Qst=gjGhc5HMT?KF8`z0sq0U%k;8!oti9(E)r9DX^34A5N|(m9A5d z;s&C0neJ!s@2`n6qP?VB#rl?5;jDP#GShp#!A5Zd&^IP-n6zm?QA-J(} zo4BzpY2OCtl^q{rmfLZGHCq2k&}4B#OYGTx*az72-f@~>-;(p2iVoK0^d{{wv>Xyh z$rx>9iR%MaeVVyGWYuSw>lCX#%Uu7(s{hJdAF=9l%=Kqh-OF5mVbynk=d3!ys=r{>|76u)vg%J*^}ks4r>y!boSquFD_y

OL*|ZvHU0Mgd z&s`|+hL#7$RR_jB7l>rxHM{`ZYP|{J)b5m)@wUo@@E)Q222kgOssp_V3U07G7wDyn zD}17WX_XFJG3kWcTC7M+;YGM({5H8jh&o{o+CD-hon^cH<>&o%~YGyqTfLAhI#}!Jigo7HVsXwHf*B%j9oI~9s}<2-JfBvU;>r``k1y^ zjfbX1MgZ~i?E`yd1_^iT^SI~Zr)v2>n<9BVIJ9^mG>M&@#Jb1j^h{!xCNb<6+=gEh z*)nI&99$-?OqMnV`2P@cLX!mcr2!o}0Cgq-*l0aKGFTu(O7~}78w0kVB-D_aGijhP zq~>3cnsJXYfXVwp!JvVz9^d0DpR3#0`eOU=F*n_I$Gy38zB>@1f7j0#2|rm#-E-_% z$Wc=m%C9N(dTQEhep6$q?f>iT?74e=q@d?O19o6mH;Ap+uoV5+tfXC)!>!1z{=>eO z$=DLXRahCnUT~&0x`$~xPtU~$+f%-9MGJm`0|z{6tSD^5o)tzq4I|Cz{){WFIkHXf zLs77;-v;RetzN9}uR?!d0D#Lc1L)%iTB*o_WZQ_Uzl%W{fKt((7PYiN=0CA&Vd6se z!Ho;qtJ$mDQw67sD{&S%Je+$rS5oXQ&E*}LT!EV_bCwixWrg+kh=-@m>Py;E}WuIr~i-;dJ7rBdFPFF$Jd}m&X;4UuDK=);whk7h_ zc;-3sO0wpZdP<;uH>ra3UsC9F%{AWa#g3W0+dY@V0J&TT?=H)Laq{M7l8y4_W|^@0 zj$-NxgD)s`cszz7VGoFjj=9+wc)ru+aum-LiX6qo<@n9GVyCC1$nME<&vUq7{Cr0S zk;4<<8ZI~WUjWPHyUA>2ZqQ`HMx4__-*%37V#x3wSAJG5B*@R?=GmRDOm4o@%{yFB zl3`46@nmuyr^izcHF*l{JTGvwdDsPgVwnAnP@LUUXsWohfG_7t?5?>0mbqQ|7?|Oe z#EZ*?k=-sR$>Eu4iZ;*>ELZGtyU;~>R++n$&nF#v-~{j+(rA%Af2Naz{sA#G?B;lf z9it%chAz;Lop-w&=r+$F_soOp2{n_tg%IU4ftu?s%7qrVTxUUnp>wE7#dG6x8LNg8s!$kAs!FydC zaG-f~%Q;-`(t<+6sN`L_Fc$e-DMWC>$?d!o=$8ITg z-RK{&MWh*S_w1}JcVULZ;g}1Iyu3o{%wB@apF=V#2DSsqssxT_WLd;A z{FmZJ@Nf0=!@(2G^lXwQE3eo- z&&}Jj<{>BLI%i`-D9TviHX;`p4k1V!c#18T1L25H$~mFP&>?K?a+ATqyfhz31%)LU zMx2+~Nv#mw<#u`;GY9>PRPUIaj~qz$@_+`BZOGv)@o+{0CBx9PR_OMaNaz9n?x1NU zx0w3i1fwgo7a@a}&m>1QdV}vHJ@9ZwycwPXE5b$R!dMs#IdpUmE3>;Wu_1d<3beb* z%iugy@AtTKADB8IJI0X5lMr}8(lL@bd8geY%$(znP7C(pA{d#ZBWoERLT@xHI?0}d zPBCu`&CbnnBk>rG=#{hQ&v&>Gyp*q^f*A_wPry;h0EIT-S?0KSr!W_$fU(W!Lx4DV znlJjvGC0U(~OWK`sUe43p5M?nhb3QEh#*`R`w5`+)@U_p5n&1W>P_0yBXm`0*0 z)NmbFc@gG6ijs14WHwKZX0|-Ho6jmR$_0pw%;PaVa5j9J(jSSzA$Xw>O0cE#GJZI1 z+DtQQIb+@j9CJ~b8LUVdhz0mcE@}jroAf%Bb50hbPR-lP$}zkws)fj!c@#R+rv5NH zd#b0@F_ltZ)?MBuD}@I2#2^3u`Q?NgZhfF&`KtQ82acZoEOz)b``kr!+ttt?zZ{u4 zZ$;zISM@)pj-BdR{O?=#oOt*BKcD~PvwvA`%yZ5wT~@onxBJbvj{YUqdQ)EUGyndB zn)*g*->?4gmF@Oi&!T@{xBJBB*Jmz#zVogB)Avc**gKl9`s06e<7oeyjVacaZ~gIa z*?6n4rT@>?ty^!4A37xI=3CN+r6nZ|A2uo_V@UcBl828^A7Y(gO&xjjs9__=O&DvN zICk8q>&K;L4;witeT;3?#Q4ONw1l{X#2Y6kCM66To18pqL{iciZs_og^qZ37V=laN}36p4j+Ce0+u6Ap7hiU){O+^Ys4* D;g>)V diff --git a/textproc.asm b/textproc.asm index a09bbef..45b9f75 100644 --- a/textproc.asm +++ b/textproc.asm @@ -1320,26 +1320,27 @@ nineplus dta d"9"+1 space dta d" " ;-------------------------------------------------------- -.proc DisplayOffensiveTextNr ; - ;This routine displays texts using PutChar4x4 - ;pretty cool, eh +.proc Display4x4AboveTank ; + ; Displays texts using PutChar4x4 above tank and mountains. + ; Pretty cool, eh! ;parameters are: ;Y - number of tank above which text is displayed - ;TextNumber - number of offensive text to display + ;fx - length of text + ;textAddress - 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 - ;save vars (messed when printing...) - lda xtankstableL,y sta temp lda xtankstableH,y sta temp+1 - ;now we should substract length of the text - ldx TextNumberOff - lda talk.OffensiveTextLengths,x + ;now we should substract length of the text-1 + + ldy fx + dey + tya asl sta temp2 mva #0 temp2+1 @@ -1350,7 +1351,7 @@ space dta d" " ;stored in temp2 sbw temp temp2 ; here begin of the text is in TEMP !!!! ;now we should check overflows - lda temp+1 + ;lda temp+1 ; opty bpl DOTNnotLessThanZero ;less than zero, so should be zero mwa #0 temp @@ -1360,7 +1361,7 @@ DOTNnotLessThanZero ;so check if end larger than screenwidth - lda talk.OffensiveTextLengths,x + lda fx asl asl ;length in pixels - @@ -1381,7 +1382,7 @@ DOTNnotLessThanZero ;then screenwidth - length is fine - lda talk.OffensiveTextLengths,x + lda fx asl asl sta temp @@ -1401,7 +1402,7 @@ DOTNnoOverflow ;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 talk.OffensiveTextLengths,x + lda fx asl asl tay @@ -1433,19 +1434,13 @@ DOTOldLowestValue sbc #(4+9) ;9 pixels above ground (and tanks...) sta TextPositionY - - lda talk.OffensiveTextTableL,x - sta TextAddress - lda talk.OffensiveTextTableH,x - sta TextAddress+1 mva #0 TextCounter -DOTNcharloop mwa TextAddress temp +DOTNcharloop ldy TextCounter lda (temp),y - SEC - sbc #32 ;conversion from ASCII to .sbyte + and #$3f ;always CAPITAL letters sta CharCode4x4 lda TextCounter @@ -1462,13 +1457,65 @@ DOTNcharloop jsr PutChar4x4 inc TextCounter - ldx TextNumberOff - lda talk.OffensiveTextLengths,x + lda fx cmp TextCounter bne DOTNcharloop rts .endp + +;-------------------------------------------------------- +.proc DisplayOffensiveTextNr ; + ldx TextNumberOff + lda talk.OffensiveTextTableL,x + sta TextAddress + lda talk.OffensiveTextTableH,x + sta TextAddress+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 + mva temp2 fx + + jsr Display4x4AboveTank + rts +.endp + +;-------------------------------------------------------- +.proc DisplayTankNameAbove ; + lda tankNr + :3 asl ; *8 + clc + adc #Tanksnames + sta temp+1 ; TextAddress+1 + mwa temp TextAddress + + ;find length of the tank's name + ldy #0 +@ + lda (temp),y + beq end_found + iny + cpy #8 + bne @- + dey + +end_found + iny + sty fx + ldy tankNr + jsr Display4x4AboveTank + rts +.endp + + + ;------------------------------- .proc TypeLine4x4 ; ;------------------------------- @@ -1479,6 +1526,7 @@ DOTNcharloop ldy #0 sty LineCharNr + mva #1 plot4x4color TypeLine4x4Loop ldy LineCharNr @@ -1491,7 +1539,6 @@ TypeLine4x4Loop sta CharCode4x4 mwa LineXdraw dx mva LineYdraw dy - mva #1 plot4x4color jsr PutChar4x4 ;type empty pixels as well! adw LineXdraw #4 inc LineCharNr diff --git a/weapons.asm b/weapons.asm index e18d985..a312c86 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1111,7 +1111,6 @@ ToHighFill jne RepeatFill rts .endp - ;-------------------------------------------------- .proc BeforeFire ;TankNr (byte) ;-------------------------------------------------- @@ -1146,6 +1145,9 @@ ContinueToCheckMaxForce2 wait ; best after drawing a tank + mva #1 plot4x4color + jsr DisplayTankNameAbove + ;keyboard reading ; KBCODE keeps code of last keybi @@ -1392,6 +1394,9 @@ pressedS pressedSpace ;================================= ;we shoot here!!! + mva #0 plot4x4color + jsr DisplayTankNameAbove + mva #0 pressTimer ; reset jsr WaitForKeyRelease lda pressTimer