VVHIBYTLOBYTPLRHPLRVPLRRATEPMWIDTHFRMLSTPTRMOVERATECLSEGTEMPHICHRSPEETEMPMOVEALLINITANIMATSNSNDSCONVVOWALINITAUTOMOVFST2BYTMFILFLAOBJECLST2NSPSCRLSTEFRSTPLNUMPLRSPOINTERCFLACHAPAINLFENCPTHEIGHWIDTGRNSCRLWILINELECLOUSCRSPCFLAROOMLEFSCRNSZSTORCHIMNESHRUANTENNTREODDHOUSTRUNTREETOBDIDLSZMEOBJFRMDATAFRAMESFRMSIZEPLRFRMMEMFRMLSTSIZETEMPTEMPTEMPFRAMEMETOTFRMLSTSIZBUFFERFRAMEMEMFRMLSTMEMHIBASLOBASDLBASSCRNHSCRNLSCROLSCROLLDLIROUDLIROUTPMOVERANIMATANIMATEAUTOMOVAUTOMOVEMFILLBUFFEPLRFRAMEFRMLSTMEWINDOPMBASCHRBAOFFSECHARTOTAOFFSETFRAMELISTDLITBLSZDLITABLEDLITABLPARAMBASPMBAPMBUSCRLINISCRLADSCRLLESCRLCLDLIADVVBLKCRITICAPPPP@@@@@@@  !"#$%@&@'()*+,-./0123456789:;<=>?@ABCDEF@G@H@I@J@KLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl@mnopqrstuvwxyz{|}~ %%ŠԠŠΠ%%報(^^Program putting it all together - PM Graphics, Fine Scrolling, & Display List Interrupts288Copyright (C) 1982 by David Fox and Mitchell Waite<F A@Pdn*6-P:'AV,*Calculate High Bytex(6-&$AV(Calculate Low Byte$囖RR9@,9@,9@,9@,9@,9@,9@,&&;@$,;@$,;@,V67@,.>:,367@$,.>:,B67@,.VFill with ASCII 0* B*Initialize Routine strings' AP'Set up memory locations# A`#Set up Display List A&Clear screen" Ap"Set up Player area% A%Load in Character Set$ B$Read frames into RAM0AV0Switch to Street character setgAY@GgTurn screen DMA on again, Wide Playfield, PM 2 line resolution, Players enabled) A( A0)Create a street* B *Set up parameter addresses"" B0"Turn on interrupts6G-@&8,@* GFrame rate for walking man@/6-6@/Temporary start up conditionJ A AT6-@^6-?:<,h r A|5#@@K:5ATAU36-O:F:Ad,&A(,+6-'@36-%K6-+A(&,'@ 52@@K2@@+!!6-&+@,+ Ap-" 6-?:<,-6-6@hF:A,"@:2@@@\2hFootstepsA+F:Ab,!A)F:Ab, @ 5 APAReset ManK+F:Ad,!A))F:Ae, @5 AKReset other players F:AT,"AUAH)@6-&@H0ATAU< H6- A AXb(6-P:,"(6-@lK6-&?P+2@@A2@@K A vX'6-?:<8@,<AV<,XUse memory fill routine to clear Players 2 & 3M%6-P:H:@,$@%@,MWhich object to display (if possible)(6-(No object selected yetF7AAAAAAC"F$6-?:<, 6"@%6-A(&$@/ A@6Tree/"@6-A%&' A@/Truck6-A2&Car'8@,!8@,'6-D8,A)&18@,A)&>"6@D6-   $ӠҠӛ \%A@$@%@GA@$@%@\Set color to peachB6-6-@% ABPoint to proper Frame List-8,@-8@,@"@Ap$c8,@ -8@,@(9!@N8,Ac8@,A&.%%6-P:H:@,$A%@ ,8$BL V"$`f%A@$@%@GA@$@%@fBrown trunk and green leavesj-8@,A)-8@,At-8@,@B-8@,@(~d6-@6-@% A16-@=6-@G AdPoint to proper Frame List-8@,-8@,@6-$ 뛺U%A@$@%@UAP:H:@,$@,$@%@-8@,A-8@,A3-8@,@w-8@,@wB6-@6-@% ABPoint to proper Frame List-8@,@-8@,@6-@6-A$ "@$(o6-P:H:@,$@,G6-@&P:H:@,$@,$@W6-$@%cAoA2-8@,-8@,@<9!@$8@,A98@,A2F-8@,@-8@,@PB6-@6-@% ABPoint to proper Frame ListZ-8@,@-8@,@d6-@6-@@n$x++-8,&@6-8<, A8%,8%,%@ $"lv6-)!A'6-&A()6-A(7 @6-&@2) 76-%@6-%%$@d$) 6-B:, @$)67%@,.6-%@- A"-@  6-$%6-@:7<,, A +!%@$%%@#+ A!0*"A! 4"@6-%@d>)%%$@$%&@) A!0H%%$%&@R \ f6-%%O:,%p6-z6-&@%&$团 @A"@j"@6-@:Q,$ A16-6@; A"PF6-@:E,P AV6-` A"Pj A"@T6-@:A, A%6-6@/ A"P:6-@:D,D AJ6-T A"P$%%$%$` $$j -@t -@$~ ""%$%&@%%F:%$%,     $ ( //蠰2 6-?:<<<,< $F  R6.ԽԽ$6-@06-@<6-@H6-@R A  D6. Խ 6-@.6-%@:6-@D A  P"6..6-@:6-F6-@$P A  $"   Šٛ͠ 56-5Initialize Pointer to Scroll Window (6-@(How tall is the window 6-6- 0%6-P:H:@,$@%@,0From 2-4 F H:@,$A@E,6-@6 A0F45% 2 Stories F H:@,$@U@5,6-@6 A0F35% 3 Stories 6-@20% 4 Stories )6-+H:@,?`,)60% chance H"(6-+H:@,?@,H40% chance (only if no shrub) > @6->Not enough room left for a fence& )6-+H:@,?P,)50% chance0 36-+H:@,?P,350% yellow, 50% pink: 7 6.-&@A5A7A97 A D = @ A$$=No room for tree, exit routineN X 6-6-b H#"*"*!@<6-+H:@,?0,HA4@l v 6-@6. Find height of tree < H:@,$@@,6-@6 A2`<10% < H:@,$@ @,6-@6 A2`<20% < H:@,$@@,6-@6 A2`<40% < H:@,$@@,6-@6 A2`<20% 6-@10% A)6-P:H:@,$+&@,%@,5"@A6- 1 6-&!@%6-&@16-@ ##6-+@&,$@%@ 67,. "@A3@ -@&@ 6-%@67,.tt   6-%@67,. "@A3 -@&@* 6-%@67,.BV4  > ,H:@,?P,67%@,.KLH ((Add random spacing on side of treeR C%6-P:H:@,$@%@,C"@) @A4p\ '"@6-%@' A4pf 6-@ A4pp z S%6-P:H:@,$@%@,+6.7"@I67@ ,.S A4p 67@,.  %6-6-% A  I @A1@IAdd another tree if not enough room for a house A0@ 蠲 !@6-@ 6-@ "@6-@ 67,.INZU A5` 67,.IOZX 56-%@5-%+&@,$@@ .H:@,?P$67,.. A5 67,. 67@ ,."A6@$4H:@,?P*67@,.WW4 A6@.67@,.EQ8$Bt 蠳~##6-+@&,$@%@&* @&67&@,.`67,.ZTX,H:@,?P"6., A7` 6.56-%@5-%+&@,$@@ 67,. 67@,.67@,.WWW$< 蠴F##6-+@&,$@%@P'"@67,.HTTJ' A@PZ@,!@))H:@,?33A@@Which type house?dCreate Odd House typen6-@x)67@,.INZU) A967@,.IOZX6-)67@ ,. ITTO) AACreate Normal House type- *#67&@,.`HJYTTJ- A@P=67&@,.HJ%"367,.HTTJ= A@P0H:@,?P&67,.YTTJ0 A@P67,.HTTM56-%@5-%+&@,$@@0H:@,?%&67,.0 A@67,. 67@,.67@!,.WEQW$6-#6-@4#Display List size76-A`7Horizontal length of scrolling window/!6-@$@$%$@/Screen size1 6-%1MEMory to reserve for DL and Screen # "-9<@,-9,9,9,9,9,-@ " 68,-68,-68,-68,-8,$8,%@6-%8,$8, 68,-8,%@6-%8,$8, (;A(,;,;,2'6-%@'$AV AQp<.6-F:A,&.Find DL Hi and Lo bytesF6-P6-$AV%Z, 6-%,Starting address of Screen RAMd 6- An- 6-6--Find Screen Hi and Lo bytesx.6-%@H.Beginning of Scroll window 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:, 6-C:,$pz4+@%@4Set flags to Graphics mode 2+AY+Turn off screen DMA2A2Set up top border, 24 scan lines%@A%@A(%@@q(LMS for line 1%@%@1%@@%A(1Line 2 (w/ DLI),-@,Loop for lines 3-9 6-%$6-@LMS and HSCRLT"@)"@-6-@%A(TDLI, LMS and HSCRL for lines 5 and 82"@6-@q2No scroll for line 9+%@%@$+LMS and HSCRL 6- A%@%@$$%@ %@$. 8.%@(@%A(.Last 3 linesB%@)@L%@0@%A(V;%@1@e;Jump on VBLANK to beginning of DL`%@2j%@3t 6- A~8A8Address of DL for DLI handling routineA Tell ANTIC where the DL isA`Aa0@@70@@@Q0@@k0@@0@@ @Brn, grn, wht, wht, blue$X((b<6-F:A,&&@<Set aside Player-Missile areal,BBy,Tell ANTIC where PM RAM isv(6-AV$(Find PM Base address-@968,-%A($%A9Set addresses of Players568,-B2V%5Set addresses of Player Widths 7A#@7Set priority - Players in front-B2w@-Enable Player displayR'6-?:<8,<A<,RUse memory fill routine to clear Players$@$$J86-F:A,&&@8Reserve space (512 bytes)T/6-$AV/Find start of Character Set^,,Read in data, skip first 28 charactersh#6-@($@#6-@5r #B0|"6-!!-%%%$@&@" 6-% 6 +3  In Character Set Data6''Clear out first char (background)-%@ $'',6-6-"9,,#B$'-@.'68,-%8'6-%+8,%@,$8,B'-8,&@L'068<,-%0Store addresses of frame dataV'6-%8,`'J8<,8,JPoke Frame size at beginning of each set of frame dataj'-@8,&@t'"~'8<,%'   '$'** ŠŠӛ+̠ +;A,+mm67@,.ZPLbحHYZ01PQNPJNQP-mF PYP +mm67@,.Z-FMԭPmDDED8mQDEE(DDEPBCPgP*+mm67A,.ZDQDEBmPBRCCSA))P )ȭRmRȭSmSP4+AA67Aq,..YZPFDEBCP\+ɠ堛f+;@,p+mm67@,.ZP LbKHHH]^$%KHȱȱȌKh ԍЎЌЭ]^hz+67@,.hh@+&&ɠ+6-@#BU+ ;,+ 6-C:,+-&@+"+ %, $,Ҡ.,;A,8,mm67@,.ZPLb&0ߝShhhF&B,mm67@,.ZFIT`L*H *hMNNML,67A,.LP,Š囒,;A,,mm67@,.ZPLbآY0H PN򩀍+. 23P0ֽ:,mm67@,.Z>ɩ. %:IX.: 23>>,mm67A,.Z >PPPHȱh∱QNPmQJnRR8eeP*RR,++67Aq,.QP..P,Š,;@t,-]]67@,.JPLbح0N G𩀍GI}&(0 (G&0P-̠Z-;@A,d-<<67@,.)hhhhhhh̥ͥ`-$--.!!.(6-A$(Parameter Base address.. 6-.Hi Byte of PLR0 Location goes here.06-%@0Address of a 128 byte buffer/46-%@4Initialize Frame Animate routine/66-%@6Initialize Player Automove routine/=6-%@=Poke a 1 to initialize the scroll routine&/-@0/=68,-%@%=Player horizontal "shadow" registers:/;68,-%@%;Player vertical "shadow" registersD/868,-%@%8Animate rate "shadow" registersN/768,-%@%$@7Pointer to Frame ListsX/968,-%@2%9Horizontal movement for AUTOMOVEb/ l//6-%@&/Address of scrolling windowv/36-%@(3Line length of scrolling window/:6-%@0:Number of Color Clocks per screen byte/26-%@12Step size of scroll each jiffy/(6-%@6(Address of DLI table/:6-AH:Deferred Vertical Blank Interrupt Vector/6-@fCritical Flag/W6-@6-@'6-@36-@WControl bits for the four Players/ 6-%/ 6-%6-%%%/D6-?:<<@<,DIMPORTANT: Clear out parameter area/H6-8, A"HPoke Hi Byte of Player 0 into PMBAS/2 6- A2Poke address of buffer/%@/ 6- A0  0%@ 0 6- A*0 40%@>00@0Set to 8 color clocks per byteH0 6- AR0 \0%@f0p0z09<@,0-@0-8,&@0=8<,-8,%$8,=Points to start of each Frame List06-8<, A0-8<,-Put in address of Frame Data08<,%@0C-@8,CMake up a Frame List (numbers 1 thru FRAMES)08<,%%@0 0NHN55Number of Frames, Frame Size, Number of PlayersRN. (Walking Man)\N 5,19,2fN. (Tree Trunk)pN 1,52,1zN. (Tree Top)N 1,26,1N. (Truck)N 1,25,2N. (Car)N 1,13,2NR RFrame 1, Player 0R770,0,0,0,0,0,0,3,15,29,59,51,7,7,15,252,224,112,48&RFrame 2, Player 00R990,0,0,0,0,0,0,1,7,15,31,55,55,7,111,125,248,192,193:RFrame 3, Player 0DR;;0,0,0,0,0,0,3,7,15,31,31,31,31,222,254,251,231,206,15NRFrame 4, Player 0XR==1,3,3,3,1,7,15,31,30,62,62,63,63,60,124,120,112,112,252bRFrame 5, Player 0lR::0,0,1,1,1,0,7,31,31,31,31,31,15,15,13,31,123,112,124vRFrame 1, Player 1RHH0,28,62,62,62,28,240,240,240,240,251,255,220,192,192,227,118,60,24RFrame 2, Player 1RKK0,0,56,124,124,124,56,224,224,224,224,246,254,192,128,192,224,224,248RFrame 3, Player 1REE0,112,248,248,248,112,192,192,128,128,128,224,224,0,0,0,0,0,128RFrame 4, Player 1R55192,224,224,224,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0RFrame 5, Player 1RII0,224,240,240,240,224,128,128,128,128,176,240,0,128,192,128,192,0,0RUUPlayer 2, Tree TrunkVNN2,2,132,128,64,0,149,165,210,211,219,251,255,254,126,126,126,126,126,126VUU126,126,126,126,126,126,126,126,126,122,126,126,126,126,126,126,126,126,126,126V55126,126,126,126,126,126,126,126,255,255,219,137"VPlayer 3, Tree Top,VQQ24,24,60,60,126,126,126,255,255,255,255,255,255,255,255,255,255,255,255,1266V126,60,60,60,24,24@VTV^VPlayer 2, Truck CabhVBB0,0,0,0,0,15,25,17,17,17,17,17,31,31,255,255,255,255,255,255rV255,255,255,28,28|VPlayer 3, Truck BodyVUU255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255V255,255,255,12,12VVVPlayer 2, Car backV..7,9,17,17,17,31,63,127,255,255,255,56,16VPlayer 3, Car frontV22192,64,32,32,16,248,255,255,255,254,255,28,8YY 38646Y0,3,15,31,63,63,127,127Y##0,192,240,248,252,252,254,254Z127,127,127,63,63,31,15,7 Z%%254,254,254,252,252,248,240,224Z4,31,4,31,4,4,4,4Z48,48,48,63,54,54,54,54(Z3,3,3,3,3,3,3,32Z%%255,195,219,219,219,219,219,219