Path: chuka.playstation.co.uk!news From: "pal" Newsgroups: scee.yaroze.freetalk.english Subject: Re: New Game [big post with sources] Date: 26 Mar 2003 11:47:43 GMT Organization: PlayStation Net Yaroze (SCEE) Lines: 988 Message-ID: <01c2f38b$e7a74ce0$8500a8c0@pal-s-omnibook> References: <01c2e897$9a6f8220$8500a8c0@pal-s-omnibook> <01c2ed48$26317980$8500a8c0@pal-s-omnibook> <01c2f2b2$0d802e80$8500a8c0@pal-s-omnibook> NNTP-Posting-Host: AMontsouris-108-1-30-83.abo.wanadoo.fr X-Newsreader: Microsoft Internet News 4.70.1155 Chris Wallace wrote in article ... > yay cool, im interested in how u make certain enemies apear at certain times and how the boss works! The boss code may be the worst piece of code I've written recently, but here it is (attached). The boss is basically a pack of normal enemies; synchronisation of these is the ugly part -- enemies were not meant to be 'referencable' before the boss came in. As for enemy generation, I experimented with macros mimicking coroutines (although the only state retained between calls is the program counter). I paste an excerpt at the end of this post and attach the files with the macros (these are pretty well documented). It could have been *much* simpler, it's ugly, and it's also expensive in terms of execution time. However it can be useful for writing code where you dont need to worry about efficiency but just want coroutines ready to use, as it's pretty easy to use once set up (the macros were definitely not easy to write however!). I used a different approach for the similar problem of enemy movement (when applicable ;) ) and shooting patterns in case you're interested. Feel free to ask any explanations or code for routines not included :) // this function is called once every frame, with 'reset' == TRUE for the first call. // frnextn means 'wait n frames'. void playLevel1(boolean reset) { if (reset) { // initialise level 1 skillIndex = 0; modeChangedSinceLevel1Begin = FALSE; if (semiturboOn) modeChangedSinceLevel1Begin = TRUE; frreset; } drawBackground(255); frbegin { frnextn( 25); loadVariableTim(0); frnextn( 25); newEnemyHeli (X(- 4)); frnextn( 70); newEnemyHeli (X(- 6)); frnextn( 120); newEnemyHeli (X(+ 5)); frnextn( 62); newEnemyHeli (X(-11)); frnextn( 42); newEnemyHeli (X(-10)); frnextn( 10); enemyBig1 (X(+ 8)); frnextn( 32); newEnemyHeli (X(-12)); frnextn( 120); newEnemyHeli (X(+ 3)); frnextn( 80); newEnemyHeli (X(- 8)); frnextn( 60); newEnemyHeli (X(-13)); frnextn( 84); newEnemyTank (S(-18,-10), V(+1/2, +1/5)); frnextn( 20); newEnemyHeli (X(+12)); frnextn( 50); newEnemyHeli (X(+13)); frnextn( 50); newEnemyHeli (X(+ 3)); frnextn( 99); newEnemyHeli (X(- 6)); frnextn( 26); newEnemyHeli (X(-14)); /* SNIP ... */ frnextn( 197); newEnemyHeli (X(+ 5)); frnextn( 2); newEnemyHeli (X(- 5)); frnextn( 22); newEnemyHeli (X(+ 8)); frnextn( 2); newEnemyHeli (X(- 8)); frnextn( 200); enemyBig2 (X(+ 0)); frnextn( 200); newEnemySider (X(+14)); frnextn( 30); newEnemySider (X(-14)); frwhile (enemyClass.instanceNb > 0) { frnext; } frendwhile; partComplete = TRUE; } frend; } begin 600 boss1.c M"P@9'D[#0HO+W-T871I8R!% M;F5M>2H@;&5G2H@='5R'!L;W-I;VX[#0H-"G9O:60@9F]L;&]W36%I;D)O9'DH=F]I9"H@7W1H:7,I M('L-"@E%;F5M>2H@=&AIPT*"0D)=&AI2YY("L](&1Y(#P\(#$[#0H)"7T-"@D)=&AI" K M/2!D>" \/" Q.PT*"0ET:&ES+3YS<')I=&58>2YY("L](&1Y(#P\(#$[#0H- M"@E](&5LPT*"0EF;W(@*&D@/2 P.R!I(#P@=&AI4YB.R!I M*RLI('L-"@D)"71H:7,M/F)O9&EE2YX("L](&1X.PT*"0D)=&AI M" K/2!D>#L-"@D)=&AI2 K/2!D>3L-"@E]#0I] M#0H-"G9O:60@96YE;7E);G-T86YC95-U9V%R0G5R;BAV;VED*B!?=&AIPT*"45N96UY*B!T:&ES(#T@7W1H:7,[#0H)0F]D>2!B;V1Y.PT*#0H)8F]D M>2YX>2 ]('1H:7,M/G-P2D[#0H)?2!E;'-E"7L-"@D)=&AIPT*"45N96UY*B!T:&ES(#T@7W1H:7,[#0H-"@EF;VQL;W=-86EN0F]D M>2AT:&ES*3L-"@T*"6EF("AB;W-S,4-O;7!L971E*2![#0H)"65N96UY26YS M=&%N8V53=6=APT*"0ED7!E4W5G87(H4W!R M:71E*B!S<')I=&4L(&)O;VQE86X@9FQI<"P@6%D@>'DI('L-"@E%;F5M>2H@ M=&AI2HI(&YE=TEN4-L87-S*3L-"@T* M"71H:7,M/F)O;VQE86XQ"3T@1D%,4T4["2\O(%=H971H97(@=&AI3L-"@ET M:&ES+3YF;&EP"3T@9FQI<#L-"@ET:&ES+3YD97-T2 ](&5N96UY M26YS=&%N8V5-;W1O4EN7!E5'5RPT*"45N96UY*B!T:&ES(#T@7W1H:7,[#0H);&]N9R!D97-I2AT:&ES*3L-"@T*"6EF("@H=&AI MPT*"0EN97=%>'!L;W-I M;VXH=&AIPT*"0ET:&ES+3YT M:6UEPT*"0D)=&AIPT*"0ET M:&ES+3YT87)G970@/2!.54Q,.PT*"7T@96QS92!I9B H=&AI"!D92!L82!C:6)L92!EPT*"0D)9&5S:7)E M9$%N9VQE(#T@.3 J3TY%7T1%1U)%12 M(&UA=&A?9V5T06YG;&5&;W)862@H M*"A!=F%T87(J*2!T:&ES+3YT87)G970I+3YB;V1Y+GAY+G@@+2!T:&ES+3YB M;V1I97-;,%TN>'DN>"D@/CX@,3@L("@H*$%V871AF5!;F=L92@F9&5S:7)E M9$%N9VQE*3L-"@T*"0D):68@*&UA=&A?9V5T1&ER96-T:6]N1F]R4VAO2P@=&AI'DL('9O:60@*"IF;VQL;W=5 M<"D@*"DI('L-"@E%;F5M>2H@=&AI2HI(&YE=TEN4-L87-S*3L-"@T*"71H:7,M/FAP"0D](#$S,#L-"@ET:&ES+3YB M;V1Y3F()"3T@,3L-"@ET:&ES+3YB;V1I97-;,%TN=V@N=PD](%!)6$5,*C$P M*C0[#0H)=&AI0D]('AY.PT*"71H:7,M/F%N9VQE"0D](#DP("H@ M3TY%7T1%1U)%13L-"@ET:&ES+3YT87)G970)"3T@3E5,3#L-"@ET:&ES+3YF M;VQL;W=5< D)/2!F;VQL;W=5<#L-"@T*"71H:7,M/G!L87D@/2!E;F5M>4EN M7!E5'5RPT*"0EI9B H(6)O'DN>" K/2!D>" \/" Q.PT*"0D) M"71H:7,M/F)O9&EE2YY("L](&1Y(#P\(#$[#0H)"0E](&5LPT*"0D)"71H:7,M/F)O9&EE2YX("L](&1X.PT*"0D)"71H:7,M M/F)O9&EE2YY("L](&1Y.PT*"0D)?0T*"0E]#0H)"61R87=3:6UP M;&53<')I=&4H)E-04DE415]%3D5-65154E)%5#(L("9T:&ES+3YB;V1I97-; M,%TN>'DI.PT*"0ER971UPT*"0EN97=%>'!L;W-I;VXH M=&AIR O+R!W87,@,S -"@D)=&AI2P@=&AI5-H;W14>7!E M,RAT:&ES+3YB;V1I97-;,%TN>'DL('1H:7,M/FQO;F5-H;W13 M<&5E9#(I.PT*"0E]#0H)"7T-"@D)=&AIPT*"0ET:&ES+3YT:6UE51Y<&54 M=7)R970R*%A9('AY+"!L;VYG('-T97 I('L-"@E%;F5M>2H@=&AI2HI(&YE=TEN4-L87-S*3L-"@T*"71H:7,M/FAP M"0D](#$S,#L-"@ET:&ES+3YB;V1Y3F()/2 Q.PT*"71H:7,M/F)O9&EE0D]('AY.PT*+R\@='5R M8F\@/PT*"71H:7,M/FQO;F0D)/2!E;F5M>4EN7!E M5'5R4EN7!E0FQO M8VLH=F]I9"H@7W1H:7,I('L-"@E%;F5M>2H@=&AIPT*"0EI9B H(71H:7,M/F1EPT*"0D):68@ M*'1I;653:6YC94QA65D(#T@5%)513L-"@D)"0ET:6UE4VEN8V5,87-T0F]S M'!L;W-I;VX@/2 P.PT*"0D)"71H:7,M/F9O;&QO=U5P*"D[#0H) M"0D)=&AI'!L;W-I;VXR*'1H:7,M/F)O9&EEPT*"0D)9')A=U-I;7!L95-P2D[#0H)"7T-"@D)PT*"0D)"6YE=T5X<&QO'DL($584$Q/4TE/3E-)6D5?2%5'12D[#0H)"0E]#0H)"0ET:&ES+3YF;VQL M;W=5<"@I.PT*"0D)PT*"0D)"71H:7,M/FEN=#$K*SL@:68@*'1H:7,M/FEN=#$@/CT@ M=&AI4YB*2!T:&ES+3YI;G0Q(#T@,#L-"@D)"0ET:&ES+3YT:6UE M2D[#0H)?2!E;'-E"7L-"@D)9')A=U-I M;7!L95-P2D[#0H) M?0T*#0HO*@EI9B H0V]N=')O;'-?:7-/;BA03U)4,2P@4U%505)%*2D@>PT* M"0EF;W(@*&D@/2 P.R!I(#P@=&AI4YB.R!I*RLI('L-"@D)"61R M87=";V1Y*"9T:&ES+3YB;V1I97-;:5TL(&DI.PT*"0E]#0H)?0T**B\-"@T* M"7)E='5R;B!44E5%.PT*?0T*#0HO+R!B;V1I97,@9&]N;F4@;&5S(&-O;W)D M;VYN965S(')E;&%T:79E7!E0FQO M8VLH=F]I9" H*F9O;&QO=U5P*2 H=F]I9"DL(%-P2H@8F]D:65S+"!I;G0@97AP;&]S:6]N1'5R871I;VXI('L-"@E%;F5M M>2H@=&AI2HI(&YE=TEN4-L87-S*3L- M"@EI;G0@:3L-"@E862!T;W!L969T.PT*#0H)=&AI'D[#0H)=&AI'DN>" K("AT;W1A;"YW:"YW(#X^(#$I M.PT*"7T@96QS90E[#0H)"71O<&QE9G0N>" ]('1O=&%L+GAY+G@@+2 H=&]T M86PN=V@N=R ^/B Q*3L-"@E]#0H)=&]P;&5F="YY(#T@=&]T86PN>'DN>2 M M("AT;W1A;"YW:"YH(#X^(#$I.PT*#0H)9F]R("AI(#T@,#L@:2 \(&)O9'E. M8CL@:2LK*2![#0H)"6EF("AF;&EP*2![#0H)"0ET:&ES+3YB;V1I97-;:5TN M>'DN>" ]('1O<&QE9G0N>" M(&)O9&EE2YX("T@*&)O9&EEPT*"0D)=&AI'DN>" K("AB;V1I97-; M:5TN=V@N=R ^/B Q*3L-"@D)?0T*"0ET:&ES+3YB;V1I97-;:5TN>'DN>2 ] M('1O<&QE9G0N>2 K(&)O9&EE2YY("L@*&)O9&EE2 ](&5N96UY26YS=&%N8V5-;W1O4EN7!E2&5A M2H@=&AI2AT:&ES*3L-"@T*"6EF("AB;W-S,4-O;7!L971E M*2![#0H)"71H:7,M/F)O9&EE2YY("L](%!)6$5,+S([#0H)"6EF M("AT:6UE4VEN8V5,87-T0F]S'!L;W-I;VX@/B X-"D@>PT*"0D) M=&EM95-I;F-E3&%S=$)O2YY("L] M(#$X*C0J4$E814P[#0H)"0ET:&ES+3YB;V1I97-;,%TN=V@N=R ](#8T*C0J M4$E814P[#0H)"0ET:&ES+3YB;V1I97-;,%TN=V@N:" ](#0R*C0J4$E814P[ M#0HO+PD)"7AY+GD@+3(T*C0J4$E814Q]+"![,30P*E!)6$5,+" X-"I025A% M3'U].PT*"0D);F5W1VEG86YT:6-%>'!L;W-I;VXR*'1H:7,M/F)O9&EEPT*"0D):68@*'1H:7,M/G1I;65R,R ^/2!T:6UE0F5T=V5E M;D)O#,H=&AI2D[#0H)"0E] M#0H)"7T-"@E]#0H)=&AI5]G:79E4VMI;&Q#;VQL96-T86)L94EF07!P MPT*+R\)"0EN97=#;VQL96-T86)L92AT:&ES+3YB;V1I97-;,%TN M>'DL($-/3$Q%0U1!0DQ%7U-#3U)%*3L-"B\O"0E]#0H)"71I;653:6YC94QA M'!L;V1I;F<@/2 M,S(P M,# [("\O(&AA8VL-"@D)PT*"0EI M9B H=&AIPT* M"0D);F5W16YE;7E3:&]T5'EP93,H=&AI2P@3TY%7T1%1U)%12HQ,C L(&5N M96UY4VAO=%-P965D,BD[#0H)"0EN97=%;F5M>5-H;W14>7!E,RAT:&ES+3YB M;V1I97-;,%TN>'DL($].15]$14=2144J.3 L(&5N96UY4VAO=%-P965D,BD[ M#0H)"0EN97=%;F5M>5-H;W14>7!E,RAT:&ES+3YB;V1I97-;,%TN>'DL($]. M15]$14=2144J-C L(&5N96UY4VAO=%-P965D,BD[#0H)"0EN97=%;F5M>5-H M;W14>7!E,RAT:&ES+3YB;V1I97-;,%TN>'DL($].15]$14=2144J,S L(&5N M96UY4VAO=%-P965D,BD[#0H)"7T@96QS92!I9B H=&AIPT*"0D);F5W16YE;7E3:&]T5'EP M93,H=&AI2P@3TY%7T1%1U)%12HQ,#4L(&5N96UY4VAO=%-P965D,BD[#0H) M"0EN97=%;F5M>5-H;W14>7!E,RAT:&ES+3YB;V1I97-;,%TN>'DL($].15]$ M14=2144J-S4L(&5N96UY4VAO=%-P965D,BD[#0H)"0EN97=%;F5M>5-H;W14 M>7!E,RAT:&ES+3YB;V1I97-;,%TN>'DL($].15]$14=2144J-#4L(&5N96UY M4VAO=%-P965D,BD[#0H)"7T-"@D):68@*'1U5-H;W14>7!E,RAT:&ES+3YB;V1I97-;,%TN>'DL($].15]$ M14=2144J,34P+"!E;F5M>5-H;W13<&5E9#(I.PT*"0D);F5W16YE;7E3:&]T M5'EP93,H=&AI2P@3TY%7T1%1U)%12HY,"P@96YE;7E3:&]T4W!E960R*3L- M"@D)"6YE=T5N96UY4VAO=%1Y<&4S*'1H:7,M/F)O9&EE2P@3TY% M7T1%1U)%12HV,"P@96YE;7E3:&]T4W!E960R*3L-"@D)"6YE=T5N96UY4VAO M=%1Y<&4S*'1H:7,M/F)O9&EE2P@3TY%7T1%1U)%12HS,"P@96YE M;7E3:&]T4W!E960R*3L-"@D)"71H:7,M/G1I;65R,RLK.PT*"0E](&5L5-H;W14>7!E,RAT:&ES+3YB;V1I97-;,%TN>'DL M($].15]$14=2144J,3,U+"!E;F5M>5-H;W13<&5E9#(I.PT*"0D);F5W16YE M;7E3:&]T5'EP93,H=&AI2P@3TY%7T1%1U)%12HW-2P@96YE;7E3:&]T4W!E M960R*3L-"@D)"6YE=T5N96UY4VAO=%1Y<&4S*'1H:7,M/F)O9&EE2P@3TY%7T1%1U)%12HT-2P@96YE;7E3:&]T4W!E960R*3L-"@D)"71H:7,M M/G1I;65R,RLK.PT*"0E]#0H)"7T-"@D)?0T*"7T-"@T*"6EF("AT:&ES+3YB M;V]L96%N,2D@>PT*"0EE;F5M>4EN2 ]('1H:7,M/F)O9&EE3L-"@D)?0T*"0EI9B H=&AIPT*"0D);&%S=$AP(#T@=&AI'DI M.PT*"0E]#0H)?0T*"7)E='5R;B!44E5%.PT*?0T*#0IV;VED(&YE=T5N96UY M5'EP94AE87)T*'9O:60@*"IF;VQL;W=5<"D@*'9O:60I+"!";V1Y(&)O9'DL M(&EN="!S:VEL;$EN9&5X*2![#0H)16YE;7DJ('1H:7,@/2 H16YE;7DJ*2!N M97=);G-T86YC92@F96YE;7E#;&%S#L-"@ET:&ES+3YH<$UA> D)/2 Q,# P.PT*"71H:7,M M/FAP"0D]('1H:7,M/FAP36%X.PT*"71H:7,M/F)O9'E.8@D)/2 Q.PT*"71H M:7,M/F)O9&EEPT*"45N96UY*B!T M:&ES(#T@7W1H:7,[#0H-"@EF;VQL;W=-86EN0F]D>2AT:&ES*3L-"@T*"6EF M("AB;W-S,4-O;7!L971E*2![#0H)"6EF("@A=&AI65D*2![ M#0H)"0EI9B H=&EM95-I;F-E3&%S=$)O'!L;W-I;VXR*'1H:7,M/F)O9&EEPT*"0EN97=%>'!L;W-I;VXH=&AIPT*"0EI9B H=&AIPT*"0D)9')A M=U-I;7!L94UI'DI.PT*"0E](&5LPT*"0D)9')A=U-I;7!L95-P'DI.PT*"0E]#0H)?0T* M"7)E='5R;B!44E5%.PT*?0T*#0IV;VED(&YE=T5N96UY5'EP94)L;V-K,BA3 M<')I=&4J('-PPT*"45N96UY*B!T:&ES(#T@*$5N96UY*BD@;F5W26YS=&%N8V4H)F5N M96UY0VQA65D(#T@1D%, M4T4[#0H-"@ET:&ES+3YP;&%Y(#T@96YE;7E);G-T86YC94UO=&]R5'EP94)L M;V-K,CL-"GT-"@T*=F]I9"!F;VQL;W=5<$YO=&AI;FPT*"6EF("AT=7)R971S6S!=("$] M($Y53$PI('L-"@D)='5R51Y<&54=7)R970Q*"A862D@>WAY+G@@+3$W*C0J4$E814PL('AY+GD@*S(Y M*C0J4$E814Q]+"!F;VQL;W=5<$YO=&AI;F'DN>" M,3'DN>2 K,3@J-"I025A% M3" K(#(J4$E814Q]+" M,C4J3TY%7T1%1U)%12D[#0H);F5W16YE;7E4>7!E M4W5G87(H)E-04DE415]"3U-3,5!!4E1;,ETL($9!3%-%+ DH6%DI('MX>2YX M("L@,BI025A%3" M(#8P*C0J4$E814PO,BP@>'DN>2 K(#0X*C0J4$E814PO M,GTI.PT*#0H);F5W16YE;7E4>7!E0FQO8VLH9F]L;&]W57!.;W1H:6YG+" F M4U!2251%7T)/4U,Q4$%25%LQ72P@1D%,4T4L("A";V1Y*2![>WAY+G@@*R R M*E!)6$5,("T@,3(P*E!)6$5,+S(@+2 R-"I025A%3"P@>'DN>2 K(#$V-"I0 M25A%3" K(#4R*E!)6$5,+S(@+2 R-"I025A%3'TL('LQ,C J4$E814PL(#4R M*E!)6$5,?7TL(#,P,"P@,BP@*$)O9'E;,ETI('L-"@D)>WLP*E!)6$5,+" P M*E!)6$5,?2P@>S$R,"I025A%3"P@,S8J4$E814Q]?2P-"@D)>WLR-"I025A% M3"P@,S8J4$E814Q]+"![.38J4$E814PL(#$R*E!)6$5,?7TL#0H)?2P@-3 I M.PT*?0T*#0IV;VED(&9O;&QO=U5P4FEG:'13:&EE;&0H*2![#0H):68@*'1U MPT*"0ET=7)R971S6S%=+3YH<" ](# [#0H) M?0T*"6YE=T5N96UY5'EP951U'DN>" K,38J-"I025A% M3"P@>'DN>2 K,CDJ-"I025A%3'TL(&9O;&QO=U5P3F]T:&EN9RD[#0H);F5W M16YE;7E4>7!E5'5R2YX("LQ-RHT*E!)6$5,+"!X>2YY M("LQ."HT*E!)6$5,("L@,BI025A%3'TL("LR-2I/3D5?1$5'4D5%*3L-"@EN M97=%;F5M>51Y<&53=6=A'DN>" M(#(J4$E814P@*R V,"HT*E!)6$5,+S(L('AY+GD@*R T M."HT*E!)6$5,+S)]*3L-"@T*+R\);F5W16YE;7E4>7!E0FQO8VLH9F]L;&]W M57!.;W1H:6YG+" F4U!2251%7T)/4U,Q4$%25%LQ72P@5%)512P@*$)O9'DI M('M[>'DN>" M(#(J4$E814P@*R Q,C J4$E814PO,B K(#(T*E!)6$5,+"!X M>2YY("L@,38T*E!)6$5,("L@-3(J4$E814PO,B M(#(T*E!)6$5,?2P@>S$R M,"I025A%3"P@-3(J4$E814Q]?2P@,S P+" R+" H0F]D>5LR72D@>PT*"6YE M=T5N96UY5'EP94)L;V-K*&9O;&QO=U5P3F]T:&EN9RP@)E-04DE415]"3U-3 M,5!!4E1;-UTL($9!3%-%+" H0F]D>2D@>WMX>2YX("T@,BI025A%3" K(#$R M,"I025A%3"\R("L@,C0J4$E814PL('AY+GD@*R Q-C0J4$E814P@*R U,BI0 M25A%3"\R("T@,C0J4$E814Q]+"![,3(P*E!)6$5,+" U,BI025A%3'U]+" S M,# L(#(L("A";V1Y6S)=*2![#0H)"7M[,"I025A%3"P@,"I025A%3'TL('LQ M,C J4$E814PL(#,V*E!)6$5,?7TL#0H)"7M[,C0J4$E814PL(#,V*E!)6$5, M?2P@>SDV*E!)6$5,+" Q,BI025A%3'U]+ T*"7TL(#4P*3L-"GT-"@T*=F]I M9"!F;VQL;W=5<%1UPT*"71U7!E0FQO M8VLR*"934%))5$5?0D]34S%005)46S5=+"!&04Q312P@*$)O9'DI('M[>'DN M>" K(#(J4$E814P@+2 Y-BI025A%3"\R("T@-#$J-"I025A%3"P@>'DN>2 M M(#8J-"I025A%3'TL('LX."I025A%3"P@-C@J4$E814Q]?2P@-S P*3L-"GT- M"@T*=F]I9"!A8W1I=F%T94QE9S$H*2![#0H);&5G'DN>" M(#(J4$E814P@*R Y-BI025A% M3"\R("L@-#$J-"I025A%3"P@>'DN>2 M(#8J-"I025A%3'TL('LX."I025A% M3"P@-C@J4$E814Q]?2P@-S P*3L-"GT-"BHO#0H-"G9O:60@<&QA>4)O2YX(#T@,S(P*E!)6$5,.PT*"0EX>2YY(#T@+3(U M-BI025A%3#L-"@D)9'@@/2 P.PT*"0ED>2 ](# [#0H-"@D);F5W16YE;7E4 M>7!E2&5A2D@>WMX>2YX+"!X>2YY M("TR-"HT*E!)6$5,?2P@>S$T,"I025A%3"P@.#0J4$E814Q]?2P@"D[#0H-"@D);F5W16YE;7E4>7!E4W5G87(H)E-04DE415]"3U-3,5!! M4E1;,%TL($9!3%-%+"A862D@>WAY+G@@*R R*E!)6$5,("T@,C4V*E!)6$5, M+S(L('AY+GD@+2 Q-S(J4$E814PO,GTI.PT*"0EN97=%;F5M>51Y<&53=6=A M'DN>" M(#(J M4$E814P@*R R-38J4$E814PO,BP@>'DN>2 M(#$W,BI025A%3"\R?2D[#0H- M"@D);F5W16YE;7E4>7!E5'5R2YX("TU-BHT*E!)6$5, M+"!X>2YY("TQ,RHT*E!)6$5,?2P@9F]L;&]W57!.;W1H:6YG("\J86-T:79A M=&5,9651Y<&54=7)R970Q*"A862D@>WAY+G@@ M*S4U*C0J4$E814PL('AY+GD@+3$S*C0J4$E814Q]+"!F;VQL;W=5<$YO=&AI M;F<@+RIA8W1I=F%T94QE9S$J+RD[#0H-"@D)='5R'DN>" M-3(J-"I025A%3"P@>'DN>2 K M-# J-"I025A%3'TL(&9O;&QO=U5P5'5R7!E5'5R2YX("LU,2HT*E!) M6$5,+"!X>2YY("LT,"HT*E!)6$5,?2P@9F]L;&]W57!4=7)R970Q1&5A9"D[ M#0H-"@D);F5W16YE;7E4>7!E5'5R2YX("TS,"HT*E!) M6$5,+"!X>2YY("TQ-2HT*E!)6$5,("T@4$E814Q]+" K,34J3TY%7T1%1U)% M12D[#0H)"6YE=T5N96UY5'EP951U'DN>" K,S J-"I0 M25A%3"P@>'DN>2 M,34J-"I025A%3" M(%!)6$5,?2P@+3$U*D].15]$14=2 M144I.PT*#0H)"6YE=T5N96UY5'EP94)L;V-K*&9O;&QO=U5P3&5F=%-H:65L M9"P@)E-04DE415]"3U-3,5!!4E1;,UTL($9!3%-%+" H0F]D>2D@>WMX>2YX M("L@,BI025A%3" M(#(T-"I025A%3"\R+"!X>2YY("L@,C0T*E!)6$5,+S)] M+"![,C0T*E!)6$5,+" R-#0J4$E814Q]?2P@,S4P+" V+" H0F]D>5LV72D@ M>PT*"0D)>WLV."I025A%3"P@,"I025A%3'TL('LQ-S8J4$E814PL(#$W-BI0 M25A%3'U]+ T*"0D)>WLT-"I025A%3"P@,"I025A%3'TL('LR-"I025A%3"P@ M,34V*E!)6$5,?7TL#0H)"0E[>S(T*E!)6$5,+" P*E!)6$5,?2P@>S(R*E!) M6$5,+" Y,"I025A%3'U]+ T*#0H)"0E[>S$X,"I025A%3"P@,3S8T*E!)6$5,+" V-"I025A%3'U]+ T*"0D)>WLQ,C0J4$E814PL(#$W M-BI025A%3'TL('LU-BI025A%3"P@-#0J4$E814Q]?2P-"@D)"7M[.#@J4$E8 M14PL(#$W-BI025A%3'TL('LS-BI025A%3"P@,C0J4$E814Q]?2P-"@D)?2P@ M.3 I.PT*#0H)"6YE=T5N96UY5'EP94)L;V-K*&9O;&QO=U5P4FEG:'13:&EE M;&0L("934%))5$5?0D]34S%005)46S-=+"!44E5%+" H0F]D>2D@>WMX>2YX M("T@,BI025A%3" K(#(T-"I025A%3"\R+"!X>2YY("L@,C0T*E!)6$5,+S)] M+"![,C0T*E!)6$5,+" R-#0J4$E814Q]?2P@,S4P+" V+" H0F]D>5LV72D@ M>PT*"0D)>WLV."I025A%3"P@,"I025A%3'TL('LQ-S8J4$E814PL(#$W-BI0 M25A%3'U]+ T*"0D)>WLT-"I025A%3"P@,"I025A%3'TL('LR-"I025A%3"P@ M,34V*E!)6$5,?7TL#0H)"0E[>S(T*E!)6$5,+" P*E!)6$5,?2P@>S(R*E!) M6$5,+" Y,"I025A%3'U]+ T*#0H)"0E[>S$X,"I025A%3"P@,3S8T*E!)6$5,+" V-"I025A%3'U]+ T*"0D)>WLQ,C0J4$E814PL(#$W M-BI025A%3'TL('LU-BI025A%3"P@-#0J4$E814Q]?2P-"@D)"7M[.#@J4$E8 M14PL(#$W-BI025A%3'TL('LS-BI025A%3"P@,C0J4$E814Q]?2P-"@D)?2P@ M.3 I.PT*#0H)?0T*#0H)9')A=T)A8VMG2YX("L] M(&1X.PT*"7AY+GD@*ST@9'D[#0H-"@EI9B H(6)OPT*"0D):68@ M*"AT:6UE5&]-96=APT*"0D)"6YE=T5N96UY4VAO=%1Y M<&4S*'AY+"!/3D5?1$5'4D5%*C$U,"P@96YE;7E3:&]T4W!E960R*3L-"@D) M"0EN97=%;F5M>5-H;W14>7!E,RAX>2P@3TY%7T1%1U)%12HQ,C L(&5N96UY M4VAO=%-P965D,BD[#0H)"0D);F5W16YE;7E3:&]T5'EP93,H>'DL($].15]$ M14=2144J.3 L(&5N96UY4VAO=%-P965D,BD[#0H)"0D);F5W16YE;7E3:&]T M5'EP93,H>'DL($].15]$14=2144J-C L(&5N96UY4VAO=%-P965D,BD[#0H) M"0D);F5W16YE;7E3:&]T5'EP93,H>'DL($].15]$14=2144J,S L(&5N96UY M4VAO=%-P965D,BD[#0H)"0E]#0H-"@D)?2!E;'-E(&EF("AT:6UE5&]-96=A M'DL($].15]$14=2144J,3(P+"!E;F5M>5-H;W13<&5E M9%%U:6-K,BD[#0H)"0EN97=%;F5M>5-H;W14>7!E,RAX>2P@3TY%7T1%1U)% M12HY,"P@96YE;7E3:&]T4W!E9611=6EC:S(I.PT*"0D);F5W16YE;7E3:&]T M5'EP93,H>'DL($].15]$14=2144J-C L(&5N96UY4VAO=%-P965D475I8VLR M*3L-"@D)"6YE=T5N96UY4VAO=%1Y<&4S*'AY+"!/3D5?1$5'4D5%*C,P+"!E M;F5M>5-H;W13<&5E9%%U:6-K,BD[#0H-"@D)?2!E;'-E(&EF("AT:6UE5&]- M96=A2 ] M(# [#0H)"71I;653:6YC94AE87)T0F5G86Y%>'!L;V1I;F'DN>2 \(#$X*C0J M4$E814PI('L-"G!R:6YT9B@B+2TM(#=<;B(I.PT*"0EF'0[#0H)?2!F M2 ](&)O" ](&)O'1N*" R,"D[#0H-"@ED>" ](&)O'1N*" R,"D[#0H-"@ED M>" ](&)O'1N*" R,"D[#0H-"@T*#0H)9'@@/2 P.PT*"61Y(#T@8F]S2YY(#X@,C0J-"I025A%3"D@>PT*"69R=VAI M;&4@*'AY+GD@/B R,"HT*E!)6$5,*2![#0H)"69R;F5X=#L-"@E](&9R96YD M=VAI;&4[#0H)9'D@/2 P.PT*#0H)9G)W:&EL92 H5%)512D@>PT*#0H)"61X M(#T@8F]S2YX(#X@,38P*E!)6$5,*2![#0H)"0EF'0[#0H)"7T@ M9G)E;F1W:&EL93L-"@T*"0ED>" ](# [#0H)"69R;F5X=&XH(#,P*3L-"@T* M"7T@9G)E;F1W:&EL93L-"@E](&9R96YD.PT**B\-"@T*#0H-"B\J('9E'1N*B\-"@T*"69R8F5G:6X@>PT*#0H)9G)W:&EL92 H M>'DN>2 \(#$X*C0J4$E814PI('L-"@D)9'D@/2!B;W-S7W-P965D,3L-"@D) M9G)N97AT.PT*"7T@9G)E;F1W:&EL93L-"@T*"69R9F]R("AI(#T@,"P@:2 \ M(#'DN M>" \(#,T,"I025A%3"D@>PT*"0ED>" ](&)O'0[#0H)?2!F2YX(#X@,S P*E!)6$5,*2![#0H)"61X(#T@8F]S" ](# [ M#0H)9G)F;W(@*&D@/2 P+"!I(#P@,C L(&DK*RD@>PT*"0EF'0[#0H) M?2!F'DN M>2 ^(#(P*C0J4$E814PI('L-"@D)9'D@/2!B;W-S7W-P965D-SL-"@D)9G)N M97AT.PT*"7T@9G)E;F1W:&EL93L-"@ED>2 ](# [#0H-"@EF'DN>" \(#0X,"I025A%3"D@>PT*"0D) M9'@@/2!B;W-S7W-P965D.#L-"@D)"69R;F5X=#L-"@D)?2!FPT*"0D)9G)N97AT.PT*"0E](&9R96YD9F]R.PT*#0H)"69R=VAI;&4@*'AY M+G@@/B Q-C J4$E814PI('L-"@D)"61X(#T@+6)O'0[#0H)"7T@9G)E M;F1F;W([#0H-"@E](&9R96YD=VAI;&4[#0H)?2!F2YY+"TR"2LQ,C O,B K,S,J-"P@*S$R-"\R("LQ."HT*3L-"BHO#0H-"GT- #"@T* ` end begin 600 frame.h M(VEF;F1E9B!-54Q424E.0TQ51$504D5614Y415)?;&EB8U]F2!S;&EC:6YG(&]F(&-O9&4@ M:6YT;R!F'!E8W0@=&AO&5C=71E M97,L(&,G97-T+6$M9&ER92!Q=2=E;&QE"!S=&5P("A-05A?1$505$@@*R Q*2 \/2!-05A?5%E010H@*B!3:2!O;B!C M:&]I"P@;VX@<&5U="!O<'1I;6ES97(@;&5S(&UU;"!E="!D:78@96X@7-T96TN;W5T+G!R:6YT;&XH(F1E M<'1H/2(@*R H:6YT*2!-05A?1$505$@@*R B7'1S=&5PPH),"P*"38U-3,V+" Q-C(U+" R-38L(#@T+" T,"P@,C,L M(#$V+" Q,2P*"3DL(#'1E'1E2D@*%P*"2A<"@D)*&1E<'1H(#T](# I(#\@," Z M("A<"@D)"5P*"0D)*'5N2DI(#P\('-T97!3:7IEF5S4VAI9G1;9&5P=&@@+2 Q72E<"@D)"3\@,%P* M"0D).B!F2!S=&5PF5S4VAI9G1;9&5P=&A=*2D@*R H<71Y*2D@/#P@F5S4VAI9G1;9&5P=&A=7 HI"B\J('9EUP*"0D)PH*"B\J*@H@*B!3 M86UE(&%S(&9R8F5G:6XL(&)U="!A9&1I=&EO;FYA;&QY('!R:6YT9G,@82!T M'1N(#T@+3$[7 H)"0ES=&%T:6,@ M=6YS:6=N960@;&]N9R!C=7)R96YT4W1E<" ](# [7 H)"0EU;G-I9VYE9"!L M;VYG('-T97!#;W5N=&5R.UP*"0D):6YT(&1E<'1H.UP*"0D)UP*"0D)"6YB3&]O<$QE9G0M M+3M<"@D)"0ES=&5P0V]U;G1EUP*"0D)"0EPUP*"0D)"71R86-E*")F'1N(#X@,"D@ M>UP*"0D)"0ET'1N+"!C=7)R96YT4W1E<"D[7 H)"0D)"7)E='5R;CM<"@D)"0E](&5L MUP*"0D)"0ET;7!?9G)N97AT;B ]("TQ.UP*"0D)"7U<"@D)"0ET'1N("@E,3AL9"E<;B(L(&-USL*"@HO*BH*("H@4F5P;&%C96UE;G0@9F]R(")I9B(@=VAE;B!I M=',@8F]D>2!I2 B9G)E;'-E(B!A;F0@9F]L;&]W960@8GD@(F9R96YD:68B+@H@ M*B\*(V1E9FEN92!FUP*"0D)"71R86-E*")FUP*"0D)"0ED97!T:"TM M.UP*"0D)"0EM;W9E*&-UUP*"0D)"71R86-E*")F5QT*"4Q.&QD*5QN M(BP@8W5RUP*"0D)"71R86-E*")FSL*"@HO*BH*("H@4F5P;&%C96UE;G0@ M9F]R(")F;W(B('=H96X@:71S(&)O9'D@:7,@9G)A;65D+B!.;VXM9G)A;65D M(&)O9&EE2 B9G)E;F1F;W(B+@H@*B!.;W1E('1H870@ M=&AE(&-O;G1R;VP@97AP2!C;VUA M2!ASL*"@H*"@HO*@IS=&%T:6,@=F]I9"!E M>&5M<&QE*&EN="!P87)A;2D@>PH)PH)9G)W:&EL92 H," ]/2 P*2!["@H)9G)N97AT.PH)<')I M;G1F*"(R(BD["@H)9G)N97AT.PH)<')I;G1F*"(S(BD["@H)9G)I9B H<&%R M86T@/3T@,"D@>PH)"7!R:6YT9B@B<&%R86T@/3T@,"(I.PH*"0EF'0[ M"@D)<')I;G1F*")!(BD["@H)"69R=VAI;&4@*'!A'0["@H)?2!FPH)"7!R:6YT M9B@B<&%R86T@(3T@,"(I.PH*"0EF'0["@D)<')I;G1F*")#(BD["@H) M"69R;F5X=#L*"@E](&9R96YD:68["@H)<')I;G1F*")E;F1W:&EL92(I.PH* M"7T@9G)E;F1W:&EL93L*"@E](&9R96YD.PH*"7!R:6YT9B@B;F5V97(B*3L* M?0H*PT*"4Y"7TU!6%]35$504RI.0E]-05A?4U1%4%,J3D)?34%87U-415!3+ T* M"4Y"7TU!6%]35$504RI.0E]-05A?4U1%4%,L#0H)3D)?34%87U-415!3#0I] M.PT*#0HO+R!U"!D:6UE;G-I;VYS(&-O;7!OPT*"7LP*C0Y-S@W M,3,V+" Q*C0Y-S@W,3,V+" R*C0Y-S@W,3,V+" S*C0Y-S@W,3,V+" T*C0Y M-S@W,3,V+" U*C0Y-S@W,3,V+" V*C0Y-S@W,3,V+" W*C0Y-S@W,3,V+" X M*C0Y-S@W,3,V+" Y*C0Y-S@W,3,V+" Q,"HT.3S J-S U-BP@,2HW,#4V+" R*C