þþß'dX;nX;Battle portion ofxX;CLASH OF KINGS‚X;ŒX;Written by: Barry Kolbe–X; †MAKSCR%>;;set up screenªQ>„BORD;;do top border´ƒSQ1P…SCMEM8¾P…SCMEM´8È1ÒIƒSQ1ÜQ>4…SCMEM;;now doæP„PMTO;;sidesð Q>5…SCMEMú P„PMTO$>ƒSQ2 …ADD20;;add 20Q>„BORD;;do edge"%>, P@„PMTO76%>@ P@„PMTO7J0TIƒSQ2^:;;border donehX;r…ADD20Q„PMTO;;add 20 to scr|,;;memory ptr.†O> P„PMTOš Q„PMTO¤O>® P„PMTO¸:ÂX;̆BATTLEQ†STRIG0;;wait untilÖF†BATTLE;;players releaseàQ†STRIG0;;buttonsê F†BATTLEô$>5…VBLAN;;set upþ%>4…VBLAN;;vblankQ> †SETVBVQ>;;turn off vblank& P„EXEC0†START2 †CLRSCR;;start here:Q>;;turn allDP†COLOR0;;colors blackNP†COLOR1;;at firstX P†COLOR2b P†COLOR3lQ>4…DLIST;;installvP0;;gr.2 display€Q>5…DLIST;;listŠP1”X;ž ‡PUTMAZE;;put maze scrn¨ †MAKSCR;;do border² †SHOWSC;;show hits¼ …SETCL;;fade colorsÆ †PMINIT;;init. pmÐ …CLRPM;;clear pmÚ †DEFPLR;;define plyrsä †INITGM;;intial gameîP†HITCLR;;clear collisionø„MAIN †CHKHIT;;chk hits †CHKZAP;;check if hit Q„RFLG;;restart flgF„MAIN;;no hit  †REMMIS;;rem miss*"„RFLG;;get plyr #4$„RFLG;;0 or 1> †EXPLOD;;do explosionH$„RFLG;;get x backR"ƒHTS9;;1 less hit\QƒHTS9;;done yet?fF„QUIT;;yesp †REMPLR;;plyrs offz!†START2;;set up again„ „QUITAŽN>;;flip loser to˜P†WINNER;;winner¢ †REMMIS;;all done¬ †REMPLR;;no miss/plrys¶Q>À$>5†XITVBV;;get ridÊ%>4†XITVBV;;of vblanÔ †SETVBVÞ !‡TURNOFFèX;òX;turn colors onüX; …SETCL%>ƒQS1Q…BFCLR8 P†COLOR08$1.IƒQS18:BX;LX;initialize plyrsVX;`†PMINITQ>>;;single linejP†SDMCTL;;res.tQ>~ P†GPRIORˆQ>:;;drk orange’ P†PCOLR0œ P†PCOLR2¦Q>ª;;blue gray° P†PCOLR1º P†PCOLR3ÄQ>5ƒPMB;;pmbaseÎ P†PMBASEØQ>âP†GRACTL;;turn on pmìQ>ö$>;;put plyrs offƒPM1P†HPOSP09;;screen P†SIZEP09;;normal size0IƒPM1(Q>;;clear zap2PƒZAP;;registers< PƒZAPF:PX;Z…CLRM0Q>;;clear miss 0d%>ÿ;;i.e. plyr 2nƒMC1P„PLR28x1‚HƒMC1Œ:–X; …CLRM1Q>;;clear miss 1ª%>ÿ;;i.e. plyr 3´ƒMC2P„PLR38¾1ÈHƒMC2Ò:ÜX;æX;define playersðX;ú†DEFPLR%>o$> ‚DFQ„PLY19 P„PLR08" Q„PLY29,P„PLR0861@0JI‚DFTQ>8;;init x pos^P†HPOSP0;;plyr 0h P…XPOS0rQ>À;;ditto plyr 1| P†HPOSP1† P…XPOS1Q>`;;init y pos.š P…YPOS0¤Q>p® P…YPOS1¸:ÂX;ÌX; move playrsÖX;à…MOVEPQ>;;clear collisionsê P†HITCLRôQ„HSCL9;;moving lft or rt?þF…TRYUD;;no try up-dnQ…SAVST9;;which direction R>;;rt? HƒLFM;;no&Q„HSCL9;;first time to0R>;;scroll?: H„RTOK;;noD †WALLCK;;check if wallNQ‚WC9;;or starXF„NOHS;;no moveb †CHKPLR;;is other plyrlQ„PFLG;;there?v H‚RT;;no€„NOHSQ>;;do not scrollŠP„HSCL9;;plyr”:ž‚RT#ƒSCX9;;change screen pos¨„RTOK#…XPOS09;;chng horz.pos² Q…XPOS09¼P†HPOSP09;;do moveÆ"„HSCL9;;scroll reg.-1Ð:ÚƒLFMR> ;;try leftäH…TRYUD;;nopeîQ„HSCL9;;moving?øR>;;first time?H„LFOK;;nope  †WALLCK;;check wallQ‚WC9;;& star F„NOHS;;no move* †CHKPLR;;plyr in way?4 Q„PFLG>F„NOHS;;yupH"ƒSCX9;;ok scrn pos -1R„LFOK"…XPOS09;;do lft move\ Q…XPOS09f P†HPOSP09p"„HSCL9;;scroll reg.-1z:„…TRYUDQ„VSCL9;;try movingŽF…GETST;;up-dn˜Q…SAVST9;;get direct.¢ R>;;up?¬H„TRDN;;try dn¶Q„VSCL9;;moving yet?ÀR>ÊH„UPOK;;yupÔ †WALLCK;;chk wall & starÞQ‚WC9èF„NOVS;;no moveò †CHKPLR;;chk plyrüQ„PFLG;;in way H‚UL;;ok „NOVSQ>;;no move P„VSCL9$ :. ‚ULQƒSCX9;;subt. 20 from8 ;;;scrn. pos.B S>L PƒSCX9V „UPOK †UPDOWN;;get pmg page` 1;;set up to movej '„PMFRt %>~ ƒUPLQ@„PMTO7;;move 17 bytesˆ P@„PMFR7;;down in memry’ 3œ )>¦ HƒUPL° "…YPOS09;;chng y pos ptrº "„VSCL9;;scrll -1Ä :Î „TRDNR> ;;down?Ø H…GETST;;no get stickâ Q„VSCL9;;moving?ì R>ö H„DNOK  †WALLCK;;chk wall & star Q‚WC9 F„NOVS  †CHKPLR;;chk other guy( Q„PFLG;;he there?2 F„NOVS;;yup< QƒSCX9;;add 20 to scrnF ,;;memry locationP O>Z PƒSCX9d „DNOK †UPDOWN;;set up pagesn 3;;to movex '„PMFR;;player up in‚ %>;;memryŒ ƒDNLQ@„PMTO7– P@„PMFR7  1ª IƒDNL´ 3¾ Q>;;knock out theÈ P@„PMTO7;;last byteÒ #…YPOS09;;new y pos.Ü "„VSCL9;;scroll-1æ :;;all done movingð …GETSTQ†STICK09ú P…SAVST9 R> HƒT11 ‚T7Q>" P„HSCL9, :6 ƒT11R> @ HƒT14J F‚T7T ƒT14R>^ HƒT13h ƒT15Q>r P„VSCL9| :† ƒT13R> FƒT15š :¤ X;® X;¸ †UPDOWNQ…UDTAB9;;set up pages P„PMTO;;for plyr movesÌ P„PMFRÖ Q…YPOS09à ?ê '„PMTOô :þ X; X;Initialize variables X; †INITGMQ>Q& PƒSCX0 Q>v: PƒSCXD Q>N PƒWSRX P…STIMEb Q>l P…ZTIMEv Q>€ PƒMZRŠ Q>” P„MISMž P„MISM¨ P„HSCL² P„HSCL¼ P„VSCLÆ P„VSCLÐ P„RFLGÚ PƒBSR;;no blowupä PƒMSR;;no missile sndî P„EXECø : X; X;do the maze X; „MAZE%>* „PCK1 ƒRND4 P…MZTAB8> 1H H„PCK1R :\ X;f X;p ƒRNDQ†RANDOMz R>„ DƒRNDŽ R>²˜ EƒRND¢ $>¬ ƒCRNR„MZCK9¶ FƒRNDÀ 0Ê IƒCRNÔ :Þ X;è X;ò X;put maze on screenü X;‡PUTMAZE „MAZE$>ƒMZ1Q…MZTAB9$?.&‚X18 Q†RANDOMBM>L>V Q…MZCOL9`$‚X1j P…SCMEM8t0~HƒMZ1ˆ:’X;œX;¦X;°X;check if wallºX;ĆWALLCK&„XTEMÎQ>;;0=no moveØP‚WC9âQƒSCX9;;pos. in sc.memìP„TEMP;;0-239ö Q…SAVST9$>;;get dir ƒWCKR‡WALLTAB9 F„WCK10(IƒWCK2„WCK1Q…ADDER9<,F O„TEMPP?Z'„TEMP;;hang on to locd $„XTEMnQ…SCMEM8;;get bytexHƒRT1;;not 0 >no move‚Q>;;ok to moveŒP‚WC9;;move flag–ƒRT1: X;ªX;move missile routine´X;¾…MOVEMP†HITCLRÈQ„MISM9;;direction orÒHƒMOK;;0=not movingÜ Q†STRIG09æF„PMIS;;0=pressedð:;;not pressedú„PMISQ…SAVST9;;get direct&„TEMP;;save x$>„CKMDR‡WALLTAB9;;chk direct"F„PMOK;;ok valid,06 I„CKMD@Q>;;not validJ$„TEMP;;directT P„MISM9^:h„PMOK$„TEMPrP„MISM9;;save direction|Q>;;set up missile†PƒMSR;;snd rout.Q> š P…MTIME¤ †PUTMIS® ƒMOK&„XTEM¸Q„MISM9;;get dir R>;;rt?ÌH‚N1Ö Q…XPOS29à,êO>ô P…XPOS29þ P†HPOSP29: ‚N1R> H‚N2& Q…XPOS290;:S>D P…XPOS29N P†HPOSP29X:b‚N2R>;;up?lH‚N3vQ>€ P„UDFLŠ…UPAGN †MSUPDN”1ž '„MIST¨%>²‚N5Q@„MISF7¼ P@„MIST7Æ3Ð)>ÚH‚N5ä "…YPOS29î "„UDFLø Q„UDFL H…UPAGN : ‚N3R> F‚N7*:4 ‚N7Q>> P„UDFLH…DNAGN †MSUPDNR3\ '„MISTf%>;;only 8 bytesp‚N6Q@„MISF7z P@„MIST7„1ŽI‚N6˜%>¢C¬ P@„MISF7¶ #…YPOS29À "„UDFLÊ Q„UDFLÔ H…DNAGNÞ:èX;òX;set page ptrs missüX;†MSUPDNQ„MSUP9 P„MISF P„MIST$ %…YPOS29. '„MISF8:;;rtn with yBX;LX;VX;put missile on scn`X;j†PUTMISQ…XPOS09t P…XPOS29~ Q…YPOS09ˆ,’O>œ P…YPOS29¦X;°X;define missilesºX;Ä &„XTEMÎ(>;;miss 0 or 1ØHƒMM1;;do miss1â …CLRM0ì%…YPOS29;;get y posö$>ƒMM2Q…MISS09  P„PLR2832((>2HƒMM2< $„XTEMFƒMM4Q…XPOS29P P†HPOSP29Z:dƒMM1 …CLRM1n %…YPOS29x$>‚ƒMM3Q…MISS19Œ P„PLR38–3 2ª(>´HƒMM3¾ $„XTEMÈ!ƒMM4Ò:ÜX;æ X; delaysðX;ú …DELAYQ>x P…TIMER „DEL2Q> P…TIMER"„DEL3"…TIMER, Q…TIMER6 H„DEL3@ "…TIMERJ Q…TIMERT H„DEL2^:hX;rX;longer delay|X;††DELAY1Q>F P…TIMERš H„DEL2¤X;®X;vblank routine¸X;Â…VBLANQƒBSRÌFƒVNSÖ †BLOWUPà !†XITVBVê ƒVNSQ„EXECôFƒVOKþ †SNDOFF !†XITVBVƒVOK#…VTIME Q…VTIME&R> 0FƒVB1:!†TRYMIS;;doneD ƒVB1Q>N P…VTIMEX#…PTYPE;;next defb Q…PTYPElR>vD‚PT€Q>Š ‚PTP…PTYPE”Q…PTYPE;;plyr type 0/1žHƒVB3¨ Q>4„PLY1² PƒVB2¼ Q>5„PLY1Æ PƒVB2Ð Q>4„PLY2Ú PƒVB4ä Q>5„PLY2î PƒVB4ø!ƒVB5 ƒVB3R> HƒVB6 Q>4„PLY3  PƒVB2* Q>5„PLY34 PƒVB2> Q>4„PLY4H PƒVB4R Q>5„PLY4\ PƒVB4f!ƒVB5pƒVB6Q>4„PLY5z PƒVB2„ Q>5„PLY5Ž PƒVB2˜ Q>4„PLY6¢ PƒVB4¬ Q>5„PLY6¶ PƒVB4ÀƒVB5%…YPOS0;;plyr 0Ê$>;; 16 bytesÔƒVB2Q„PLY39Þ P„PLR08è3ò2ü(>HƒVB2%…YPOS1;;plyr 1 $>;;16$ƒVB4Q„PLY49. P„PLR1883B2L(>VHƒVB4`Q>jPM;;kill attractt†TRYMISP†HITCLR~ ƒVB7$>ˆ …MOVEM’2œ …MOVEM¦$>° …MOVEPº2Ä …MOVEPÎ †WHIRLYØ †MISHOTâ †CHMAZEì !†XITVBVöX;X;check for hits X;†CHKHITQÐ;;plyr2=miss0 F‚K1;;no(‚K3Q>;;yes2P„MISM;;don't move<P†HPOSP2;;get off scnF ‚K1QÐP F‚K2;;noZQ>d P„MISMn P†HPOSP3x ‚K2QЂM>;;hit plyr1?Œ F‚K4;;no–Q>  PƒZAPªP„EXEC;;killvblank´ ‚K4QоM>;;hit plyr0?ÈF‚K5ÒQ>ÜPƒZAPæP„EXEC;;kill vblankð‚K5P†HITCLRú:X;X;check zapX;"†CHKZAP$>,&„RFLG;;defalt =06%>@ QƒZAP9JFƒZP1T ƒZP2'„RFLG^:hƒZP12r3| QƒZAP9†HƒZP2:šX;¤X;show score®X;¸†SHOWSC$> %ƒHTS9Ì1Ö Q>ƒBARàƒSH1P…SCMEMÉ8ê1ôIƒSH1þ2 %ƒHTS91ƒSH2P…SCMEMÓ8&10IƒSH2::DX;NX;remove misslsXX;b†REMMISQ>l P„MISMv P„MISM€ P†HPOSP2Š P†HPOSP3”:žX;¨X;remove plrs²X;¼†REMPLRQ>Æ P†HPOSP0Ð P†HPOSP1Ú:äX;îX;whirlybird sndøX;†WHIRLY"…STIME  Q…STIME F…DOSND :* …DOSNDQ>4 P…STIME>$ƒWSRH F„CHWSRQ>„\ P…AUDC1f QƒWSN9p P…AUDF1z"ƒWSR„:Ž „CHWS$>˜&ƒWSR¢:¬X;¶X;miss shotÀX;ʆMISHOTQƒMSRÔ H„SNOKÞ:è „SNOK$ƒMSRòQ>ªü P…AUDC2 QƒMSN9 P…AUDF2"ƒMSR$:.X;8X;explosionBX;L†EXPLOD%…YPOS09;;get y posVQ>C`PƒBSRj '„PMFRtQ>~ P„TEMPˆ Q>5…EXPLR’P„PMTO;;hi byteœQ>4…EXPLR;;low¦ P„PMTO° Q…UDTAB9º P„PMFRÄ ƒEX1%>΂EXQ@„PMTO7Ø P@„PMFR7â3ì)>öH‚EX …DELAY , Q„PMTOO>( P„PMTO2 Q„PMTO<O>;;add 16F P„PMTOP"„TEMP;;1 less def.Z Q„TEMPdHƒEX1n …DELAYx:‚X;ŒX;explosion snd–X;  †BLOWUP$ƒBSR;;blowup snd reg.ªHƒBOK´:;;no blowup¾ƒBOK$ƒBSR;;blowup snd reg.ÈQ>ŠÒ P…AUDC2ÜQƒEXF9;;get freq.æ P…AUDF2ð"ƒBSRú:X;X;check if run into plyrX;"†CHKPLR&ƒPCX;;save x,Q>6P„PFLG;;flag@(>;;which plyr?J HƒCP2;;1T2^Q„TEMP;;test poshRƒSCX9;;= other guy?r H…CKPOK|FƒRT3†…CKPOK#„PFLG;;now 1 ƒRT3$ƒPCXš:¤ƒCP20;;now 0®Q„TEMP;;other guy¸RƒSCX9;;= ? H…CKPOKÌFƒRT3ÖX;àX;change mazeêX;ô†CHMAZE"…ZTIME;;maze timerþ Q…ZTIME FƒMZ4 :;;not yet ƒMZ4Q>& P…ZTIME;;reset timer0 $ƒMZR: Q…MZTAB9D ?N Q>;;get rid ofX P…SCMEM8;;starb  ƒRNDl $ƒMZRv P…MZTAB9;;new€ ?;;positionŠ Q†RANDOM” M>ž >¨ Q…MZCOL9² P…SCMEM8;;put new *¼ "ƒMZRÆ QƒMZRÐ HƒMZ5Ú Q>ä PƒMZRî ƒMZ5: