R `8` p 2<`A2|`"Q"|@J*gDHz?< NA\O <SfB*F'pA C mA `Hz ?< NA\OA@C><0QCAFNAH rC!rNuNVHa2J@gaL?N^ zNHxHy?.B/8?NNONu xp2<XQ|4fpa gpNupNu x P`f4 C@$f* E(f 1AY&6f 1AY&f rAfpNupazaJ@g8 x0`8A:Crq Q xBhp2<XQ04Pp a*QNu CE}|0z@A@B@C@DQQHf`M,,,,QNuNSHIx,La ICE!fnatKan0Ppppu'Ggww?? `.??.`_ ^0\d&??G?CRKC *@?K?Cf@  cp*0Հs<3 g;y<{a p<|<~|`? ?? ` ???<3?f3 3`,,<?!??qPG^ @\N8@, z 0x @?, 0x  0x @?900800@3$H2$ (w ( u ( @@ @H  @@@P< < <@<1?c0@@  !?@@`/@?@/?/?0<@t@tf  (t(? (t(? D @P?DD Ƅp@~H}PP }`PP yxP:<?:M:]0:] :0NB~(N0N2 +jB~(+j`+z4f@J: B|PJ*J:@#|P888c`f#<`<8xS8p87U<T?/_  l?0@?(80==6=x{Ǿ==6=x{Ǿmm6mm0mmm6mm0mm`060mm0n m`060mm0n ml06lmm6mml06lmm6m}|0}y>o}|0}y>o y6y= y6y= -`m -`m {6|0 {6|0 mhal6 mhal6 l0 l0xx}}}}6m6mmm ϼO=>X ϼO=>X 6lm2 6lm2 xgq< xgq< im im o}< o}< Kyx Kyx @mm @mm 6y 6y  66m  66m  3y  3yxxmmmm7m7m}}=<x=y{l=<x=y{l))(ml&}[mm6ml))(ml&}[mm6mlmpF}}x>almpF}}x>al))2(mlmmm0>a))2(mlmmm0>a}}mmm>al}}mmm>al"XJkgp"JNu//?-h?<?NA JNu$^4g4|?d2SB2"m T!12C!Tee%PewPU*UPWN +-TT@ETJ%TP??U@ *P TpU  `?*(` /` _`@`?`?P    @  @?  U? ? T :U@8P T?*P? ?@?P? @@ U >x>ǀ 0d9; 0d9; `͛0 `v $@  $@ U` n͛0n`ÀP $@0 $@0 f͛0 fÀ~ aÇ aÇ@ >x >?_@ |}0 |}0Àz ~ P0y><w@$ "t?@$ "t01`̓6۷nʀ @B$ H0` @B$ H0`D01<7}`@C$ydI @C$ydI 0 6  @ &28 @ &28A >xc|_oX |3ـ_ |3ـ 8 8TPf~UT99DW99D0f3` @ @~?|T1L U1L  ~3`pÀD0D0 f3~pÀ@ fÇU fÇ  T( ?W_/U<E:@_PU_UR*P  Ut U|?/P*@__ @P ? @?P~ U~@0?x?/P?_==6=ym==6=ym mm6mmm`mm6mmm`(m`060`yxm`060`yx{ml06ll6mm3`ml06ll6mm3`^}|0}mm@}|0}mmT@j@?-PZP?U@,*T?@==N[mU[m@}}mmU@ mm?@@ U o><` o><`?U?P 0ma`` 0ma`~ 6m 6m}@ 6am` 6am`: >}` >}`U0`@* x -yp -yP~ mS} mS}< {|w}dT {|w}t  0m!V  0mT  7m TP  7mW# TH  0 `==U__ `[mu[muH qqUW_$!mU5bmWu~P}U@(}ؽ"U_PUW^$U@ PPUWWqTUWw[pU@(q=qUWqTUWw[TpU*UWXQ@U__@tUT(URPaU},<{gxyU@',<{gxyUT `m>ml Um>ml U__` }>x U@* }>x UQ* }6m6l i*Ue }6m6l iU }6oloU2 }6oloUED UU UEPUxyjUTxyjUTmmj@mmjU_** y`U@ y`UPU_mm mmUWl`UP@@l`UUW_ *@U_U@@ UTU*0_ uUPUU_ UUP@UUW *UUP TU UW*}UT ꪫUU*WUWUUT.U *\UUUPEUTTU~  pUWUpUTU@AU_* @UUU EUW@ U U UU U.U_UVUU@ U_UT\UU@UWUT\U *U@ UUW _UU@UxU UU@ _Z]T* ?J+@@      @@!yx^xy|{l!yx^xy|{l!l}l'm- me6ml!l}l'm- me6ml}lGmͼ ǎ89>al}lGmͼ ǎ89>al imlmmmmM>a imlmmmmM>a!om}|m}>al!om}|m}>alTXT$TXT$-4TXT$TXT$ lame sprites! 3 *** page 3 ***6&TXT$TXT$ Blame sprites!A 40TXT$TXT$-4:TXT$TXT$ ok:...this lamer 4DTXT$TXT$dentro was cod Interview with the MEGA interviewer by D.B.A. try it out so you can send in your interview ! Pseudo computer name... -(1 LINE) Shamen Group you're in (if any)... )(1 LINE) Yepp, The Cyberpunks!!! Function (like coder, gfx man etc)... (3 LINES) I'm one of the main coders in our dear crew,... !I also make some gfx since we don't have a real gfxer,. And I make music (heavy techno stuff!) Latest project you made (like demo, games, mod etc)... (3 LINES) I've been into some various projects latly,... Currently I'm working on some code for our new multipart demo,... but I don't know when it's due to release...And I'm also working on an STE musicdemo. Real name... 8(1 LINE) Christer Bygdestam Age... >(1 LINE) 17 (18 in March) Sex (male or female)... -(1 LINE) Yes, please! Weight... ;(1 LINE) 90kg Length... ;(1 LINE) 195cm Hair (like color, style or just plain bold)... (1 LINE) Brown, rather short,... Looks (like playboy, shit head etc)... (1 LINE) Rather Playboish... Clothes (like jeans, t-shirt, baseball cap etc)... (2 LINES) Jeans and cool printed T-shirts, and yes I wear Italian shoes What do you think of demo's in general (good ,bad, more...)... (3 LINES) I love them!, there is nothing like a good demo (any format,... I've seen some really good demos on the C-64, better than aything on the Amiba!) What's your opinion about demo crew's in general... (3 LINES) Cool guys (since I myself are a member of a crew), if you like to show off, then I suggest that you join a crew!!! What would you like to see in new demo's (like small games or else) (3 LINES) Multiparts!!!, probably with optional menus (if the multipart is very long, otherwise it's pointless!) Do you like compil menu disk's and explain your answer... (3 LINES) I like the once that contains other peoples intros (like Animal Mine G.S.C's) I don't like pirated software, even though I think it's the game companies faultthat their software gets pirated (the price youknow!) What do you think about Atari Corp. itself (enough info/back_up etc) (3 LINES) It S U C K S ! ! !, you can't get anything good outof Atari Corp. except their brilli machines,... ST/STE, FALCON and their new *H*O*T* JAGUAR!,. Their info sucks, and so does their followups! Do you likes the games that are out for the Atari (new, playable etc)(3 LINES) Yess... I do! I think they are well playable, although some are less colourful than on the PC or Amiba (but who the F***K cares???) What's your opinion about software piracy on the ST/E (3 LINES) I've already answered that quest! Would you buy more original software is the prices were lower ? (1 LINE) Yess What normal magazines about computers do you read ... (3 LINES) ST Format (what a question!) and 'Svenska Hemdator Nytt' and sometimes some other crappy mags, but mainly the once above! What do you think of them ( Contents, up to date, sort of articles) (3 LINES) ST Format... Brilli, no other mag contain so much info 'bout the Atari than ST Format... There is al you'll ever need to know,... And more! Svenska Hemdata,.. since I'm employed by it. IT'S GREAT (at least my page!) What would you change if you brought out a magazine ? (3 LINES) Nothing for the moment! Do you like it when a magazine has a coverdisk (please explain why) (3 LINES) I like it, you get the best PD 'round right at your dinner table! Do you like the idea of a diskmagazine in general... (3 LINES) It's good, where else can coders etc. x-press themselves to people who are doing the same stuff as them??? Do you like the articles (to serious, to much craptalk etc)... (3 LINES) I like them, DBA contains a great mixture of serious and not so serios articles! What would you change if you were asked to and why ... (3 LINES) NOTHING! (but I'm not beeing asked, now am I???) What is completly useless according to you... (3 LINES) The Super Bass-O-Matic 76,... makes your bass into wounderful cold drinks (The Super Bass-O-Matic is an registred trademark (c) Saturday Night Live!) How would you describe a 'lamer' %(3 LINES) A person who steals other peoples code, tell everyboddy off how good he is, but never does anything, because he cannot code (anyone I know that's feeling pointed out???, someone in Wildfire perhaps???) What do you think about the subject 'lamer(s)' (3 LINES) Well, what can you say,. They excist, even though the shouldn't,... but can we blame them??? No, therefore man invented the condom, sothat no LAMERS could be born! Adivise. KEEP YAR CONDOMS ON! Any tips/hints or advise for them ??? (3 LINES) Yea... Take your daddys gun from the gunraft,... point the end with a hole in at your head,... no seriously,.. since we've all been LAMERS (except me, ofcourse)... Stop stealing, start thinking out stuff on your own, to code is fun! Talking about lamers, how did you start computing ??? (3 LINES) I got my C-64 back in 84-85 (I cannot remeber),.. I only played games then, didn't even bother to lurke into the 64 basic,... I only enjoyed this for a couple of years, so in 1990 I got my first ST (and there you have it!!!) Hobbies ( Besides your Atari !!)... "(2 LINES) Listening to music and H O M E W O R K ! ? ! Normal state... 6(1 LINE) Calm in al situations. Favourite state... 3(1 LINE) California Good Habits ( like always(?) be nice )... (2 LINES) Always nice to everyone (almost!) Bad Habits ( like bitting your nails )... (2 LINES) Nothing really.? Fave computer... 5(1 LINE) The FALCON! Worst computer... 4(1 LINE) NONE!!! Fave game(s)... 6(1 LINE) Monkey Islands I&II Worst game(s)... 5(1 LINE) I donno! Fave computer software house/group #(1 LINE) Thalion, Digital Illutions! Worst computer software house/group "(1 LINE) I dunno,... or perhaps??? No, I dunno! Fave utility... 6(1 LINE) Neochrome Master Worst utility... 5(1 LINE) None,... or, yess, Pompey Packer 1.9, it's F***KING S L O W ! ! ! Fave demo('s)... 5(1 LINE) Braindamage(STE) and Enigma(amiga)! Worst demo('s)... 4(1 LINE) Life's A Beat! (he he hehehe) Fave virus... 8(1 LINE) TDT Antig host 4 Worst virus... 7(1 LINE) Michelangelo... (slapper!) Fave kind of music... 0(1 LINE) Tekkno, and U2!!! Worst kind of music... /(1 LINE) Svenska Dansband! Fave book(s)... 6(1 LINE) The Cocos Egg by Cliff Stoll, and all the SF novells I've read! Worst book(s).. 6(1 LINE) Trgudars Land (I hate it!) Fave tv program... 3(1 LINE) The Edge, Baywatch,Beavis and Butt-Head(Yeah!!) and Z(T)(V)!!! Worst tv program... 2(1 LINE) Moi Mockolattii! Fave movie(s)... 5(2 LINES) Jurassic Parc (it's absolutly brilli!), Terminator II (Also brilli), Leathal Weapon 1-3, Back to the Future 1-3, Sllskapsresan 1-4 and Nionde Kompaniet!! Worst movie(s)... 4(2 LINES) I dunno,... I've heard aboute 'Plan 9 from outer Space' to be the wors movie ever, but I've never had the chance to see it! Fave girl... 9(1 LINE) Erika!!! Worst girl (are there any ?)... &(1 LINE) None! (or???) Fave car... :(1 LINE) Ferrari! Worst car... 9(1 LINE) WAS/Lada, did you know that they usually burn up when you stop them? Fave food... 9(1 LINE) Pizza, Hamburgers and. TACHOS! Worst food... 8(1 LINE) Limburgerreich cheeze! Fave drink(s)... 5(1 LINE) Coca cola decaffed/suger free and pepsi light (I don't dring with sugar!) Worst drink(s)... 4(1 LINE) Coffee!!! Fave thought... 6(1 LINE) I dunno! Worst thought... 5(1 LINE) Wait, I'm thinking my best thought. I dunno! Any comment\advise\anything you want to say to the D.B.A. team... (3 LINES) Keep up the good work lads! Some more perhaps ??? 0(3 LINES) Jess, if you're a gfxer, then contact me! Do you like this why of interviewing... (1 LINE) Why?(he he hehehe!) Did you like the questions that where asked... (3 LINES) Yess, and I liked the WAY you asked them! X:̝Y:X.։!D(X,Y):X:YjY((E))((E))((E))(d:EEX((E1))((E1))((E1))((E))<:E1E1 Y1 X18!D(X1,Y1):4A (,XX1,YY1)0A:AA0& ,XX1,YY1,A<0 9q::::::X1DY1N X Interview with the MEGA interviewer by D.B.A. try it out so you can send in your interview ! Pseudo computer name... -(1 LINE) Elftec of The Cyberpunx Group you're in (if any)... )(1 LINE) The Cyberpunx Function (like coder, gfx man etc)... (3 LINES) coder, ex gfx man Latest project you made (like demo, games, mod etc)... (3 LINES) Oh, a lot but i'll tell you about some of them:The Unidentified Body ((Vem snodde min rcer(who steal my racer)),blipp blopp mania and some guest screens,and smoe games Real name... 8(1 LINE) Mikael Stalvik Age... >(1 LINE) 15 (16 in december) Sex (male 9322-&$"&2+:;&$"5&234 host 4 Worst virus... 7(1 LINE) Michelangelo... (slapper!) Fave kind of music... 0(1 LINE) Tekkno, and U2!!! Worst kind of music... /(1 LINE) Svenska Dansband! Fave book(s)... 6(1 LINE) The Cocos Egg by Cliff Stoll, and all the SF novells I've read! Worst book(s).. 6(1 LINE) Trgudars Land (I hate it!) Fave tv program... 3(1 LINE) The Edge, Baywatch,Beavis and Butt-Head(Yeah!!) and Z(T)(V)!!! Worst tv program... 2(1 LINE) Moi Mockolattii! Fave movie(s)... 5(2 LINES) Jurassic Parc (it's absolutly brilli!), Terminator II (Also brilli), Leathal Weapon 1-3, Back to the Future 1-3, Sllskapsresan 1-4 and Nionde Kompaniet!! Worst movie(s)... 4(2 LINES) I dunno,... I've heard aboute 'Plan 9 from outer Space' to be the wors movie ever, but I've never had the chance to see it! Fave girl... 9(1 LINE) Erika!!! Worst girl (are there any ?)... &(1 LINE) None! (or???) Fave car... :(1 LINE) Ferrari! Worst car... 9(1 LINE) WAS/Lada, did you know that they usually burn up when you stop them? Fave food... 9(1 LINE) Pizza, Hamburgers and. TACHOS! Worst food... 8(1 LINE) Limburgerreich cheeze! Fave drink(s)... 5(1 LINE) Coca cola decaffed/suger free and pepsi light (I don't dring with sugar!) Worst drink(s)... 4(1 LINE) Coffee!!! Fave thought... 6(1 LINE) I dunno! Worst thought... 5(1 LINE) Wait, I'm thinking my best thought. I dunno! Any comment\advise\anything you want to say to the D.B.A. team... (3 LINES) Keep up the good work lads! Some more perhaps ??? 0(3 LINES) Jess, if you're a gfxer, then contact me! Do you like this why of interviewing... (1 LINE) Why?(he he hehehe!) Did you like the questions that where asked... (3 LINES) Yess, and I liked the WAY you asked them! X:̝Y:X.։!D(X,Y):X:YjY((E))((E))((E))(d:EEX((E1))((E1))((E1))((E))<:E1E1 Y1 X18!D(X1,Y1):4A (,XX1,YY1)0A:AA0& ,XX1,YY1,A<0 9q::::::X1DY1N X Interview with the MEGA interviewer by D.B.A. try it out so you can send in your interview ! Pseudo computer name... -(1 LINE) Elftec of The Cyberpunx Group you're in (if any)... )(1 LINE) The Cyberpunx Function (like coder, gfx man etc)... (3 LINES) coder, ex gfx man Latest project you made (like demo, games, mod etc)... (3 LINES) Oh, a lot but i'll tell you about some of them:The Unidentified Body ((Vem snodde min rcer(who steal my racer)),blipp blopp mania and some guest screens,and smoe games Real name... 8(1 LINE) Mikael Stalvik Age... >(1 LINE) 15 (16 in december) Sex (male or female)... -(1 LINE) Male Weight... ;(1 LINE) 60 kg Length...  4(1 LINE) 176 cm Hair (like color, style or just plain bold)... (1 LINE) Brown rather short hair. Looks (like playboy, shit head etc)... (1 LINE) Looks like,hmm I really don't know (not shithead) Clothes (like jeans, t-shirt, baseball cap etc)... (2 LINES) Jeans,t-shirt What do you think of demo's in general (good ,bad, more...)... (3 LINES) They are good,coz you got ideas from them and you can show amiga,pc folx what you can do with your lovely ST! What's your opinion about demo crew's in general... (3 LINES) Oh,I have no special oponion,but i think the most of them are good.(expect the F8(%!%$ cracking group ICS) What would you like to see in new demo's (like small games or else) (3 LINES) Dot tunnels like I have seen on the amiga and some cool demos like rages alchemy (also amiga)! Do you like compil menu disk's and explane your answer... (3 LINES) Yup,I love them coz you can find lot of cool and funny things on them esp.GSC (Animal mine) and P.O.V menus.(also rip some usefull musax!) What do you think about Atari Corp. itself (enough info/back_up etc) (3 LINES) They need lot's of back up,Here in sweden they don't exist any longer,so there is problems with reparing etc. Do you likes the games that are out for the Atari (new, playable etc)(3 LINES) Mostly they don't contains any new things,but games like Chaos engine,Sleep walker,Leathal X-ess wich really use the atari power do I like! What's your opinion about software piracy on the ST/E (3 LINES) They have killed the market,so the all the big houses stops producing games on the ST,i dont enyoy it that much(two good things is that you'll got new intros to watch and mostly there is a trainer function!) Would you buy more original software is the prices were lower ? (1 LINE) YES! (even if I don't play that much!) What normal magazines about computers do you read ... (3 LINES) ST format,Svenska hemdator nytt,Disk maggs! What do you think of them ( Contents, up to date, sort of articles) (3 LINES) Svenska hemdator nytt is rather shitty,but it's the only swedish mag that writes about the atari,and the best is the disk maggs,coz they have everything you will have (programms,interviews,demo reviews etc.) What would you change if you brought out a magazine ? (3 LINES) More about demos,programming,gfx and interviews Do you like it when a magazine has a coverdisk (please explain why) (3 LINES) Yep,The St format cover disks are really good,filled with good programms and games.I think that people will try the game before they buy it,so that's good. Do you like the idea of a diskmagazine in general... (3 LINES) As I said before I love them. Do you like the articles (to serious, to much craptalk etc)... (3 LINES) They are good as they are! What would you change if you were asked to and why ... (3 LINES) I don't wanna change nothing,coz they are so good they can be,I think! What is completly useless according to you... (3 LINES) Don't know anything special! How would you describe a 'lamer' %(3 LINES) A guy wich don't know what the word lamer means,(Don't know what a demo is,just play games on the computer(never tried anything else)). What do you think about the subject 'lamer(s)' (3 LINES) Really don't know! Any tips/hints or advise for them ??? (3 LINES) Try start programm something and STOP playing just silly platform games.If they don't what a demo is try find it out! Talking about lamers, how did you start computing ??? (3 LINES) Urm hum,I had a c-64 and programmed basic on it(back in 1988),then I sold it,1990 I buyed my atari and urm,played games on it and programmed a little bit Basic. Hobbies ( Besides your Atari !!)... "(2 LINES) GIRLS,GIRLS,parties,beer,friends,watch cinema,video,and I hate sport! Normal state... 6(1 LINE) Snusmumrick (he he hehehe/Shamen!) Favorit state... 5(1 LINE) The same Good Habits ( like always(?) be nice )... (2 LINES) HM,that's difficult i don't puke when I'm drunk. Bad Habits ( like bitting your nails )... (2 LINES) When I'm angry I c Aan destroy things in my near(doors,glass,disks) Fave computer... 5(1 LINE) 1:ATARI FALCON 2:1040 STe+extra mem Worst computer... 4(1 LINE) Spectrum,amstrad,texas,vic 20 Fave game(s)... 6(1 LINE) Sleep walker,Chaos engine,Silkworm,S.W.I.V Worst game(s)... 5(1 LINE) Postman Pat,Mc donald land Fave computer software house/group #(1 LINE) Thalion,Eclipse Worst computer software house/group "(1 LINE) Sierra,Us Gold Fave utility... 6(1 LINE) Deluxe paint Worst utility... 5(1 LINE) Hyper paint Fave demo('s)... 5(1 LINE) Braindamage,Talk Talk,Phaelon giga demos,Rr inte sgen bara,Dreams,If Pigs.. Worst demo('s)... 4(1 LINE) Trr demo collection,Hotter than hell Fave virus... 8(1 LINE) Ghost! Worst virus... 7(1 LINE) Link shitty virus (destroyed 5 of my save disks) Fave kind of music... 0(1 LINE) Death metal,Metal Worst kind of music... /(1 LINE) Country,pop Fave book(s)... 6(1 LINE) Coq Rouge,I nationens intresse(in the interest of the nation) Worst book(s).. 6(1 LINE) kitty books! Fave tv program... 3(1 LINE) Bay watch (only coz Erika Eleniak acts there!) Worst tv program... 2(1 LINE) Beverly hills 90210 Fave movie(s)... 5(2 LINES) Jurassic park,The Lawnownerman,Stephen king movies Worst movie(s)... 4(2 LINES) Don't know coz there is many crappy movies around! Fave girl... 9(1 LINE) ERIKA ELENIAK! Worst girl (are there any ?)... &(1 LINE) HMM,a girl at my school called BIG MAMA Fave car... :(1 LINE) Ferrari Testarossa Worst car... 9(1 LINE) Trabant Fave food... 9(1 LINE) Pizza,Hamburgers,Kebab Worst food... 8(1 LINE) Fish Fave drink(s)... 5(1 LINE) Coca Cola,Beer,Tequila sunrise,Absolut Vodka kurant Worst drink(s)... 4(1 LINE) Candy shoots,Carrot soup Fave thought... 6(1 LINE) Hmm,don't know. Worst thought... 5(1 LINE) Don't know again! Any comment\advise\anything you want to say to the D.B.A. team... (3 LINES) Your Disk maggie is the very best for the atari ST because it has everything,I just love it ! Some more perhaps ??? 0(3 LINES) Mega thanks for giving out the sid tracker with DBA 9 ! thanks for writing cool stuff for S.T.O.S programmers! Do you like this why of interviewing... (1 LINE) Yep,that's coool stuff! Did you like the questions that where asked... (3 LINES) Yup,they were both serious and unserious! Make more of this stuff! ^ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ / \ /\ \ / \ / \ / \ / \ \ \ / \ \ \ / \ / / / /\ \ / \ / / / \ / \ /\ \ \ / \ /\ \ \ / /\ \ / /\\ \/ \\ / L\ /\/\\ / L\ / \\ \ \ \\ /\ \\ \/ L\ / \ \ \/ \\ /\ \\ /\ \\ / \\ \\ / \ \/ \\ \ \ \\ \\ /\ \ \ \\/ / \\ \/ \\ \\ /\ \\ / \ \\ \ \ \\ /\ \\/ / \ \ \ / \\ \\ \\ \ \ \\ \ \ \\ \ \ \\ \ \ \ / \ \ / \ / \ / \ / \ \ \/ \ \ \ / \ \ \/ \ \ \/ \ / \ / \ / \ / \ / \ \ \ \ \ / \ \ \ \ \ / \/ \/ \/ \/ \/ \/ \/ \/ \@SHAMEN/ CELEBRATES THEIR 1:TH ANNEVERSERY! JO!, dis is da mighty SHAMEN/TCP on da key$! We in the Cyberpunks just wanna send our very best X-Mas and New Years greets to all the people we know, AND tell U that we are now celebrating our 1:th anneversery! We have very special X-Mas greet to the Cyberpunks on da Falcon,. STOP USING OUR WONDERFUL NAME,... WE WERE (AND ARE) THE ONE AND ONLY .oO # C # Y # B # E # R # P # U # N # K # S # Oo. Now that we have said that, we can continiue with da greets! GOD JUL OCH GOTT NYTT AAR TILL. ANATOMICA (esp OB, God Jul man!) ANIMAL MINE (esp Shadowmaster) BRAINIACES (lever ni fortfarande Danne???) CAREBEARS (esp An Cool&Tanis) CHAOS (esp TAT) CRYSTALIC (esp Corny, God Jul on U 2!!!) CRONICLES (Hacka Pekka!) CRONICLES,Amiga (Yo guys!) D.B.A. (esp everyboddy!) DELTA FORCE (esp. Big Alec&New Mode) ECSTASY CRACK (esp Maddux) ELECTRA (esp Erik!) EQUINOX (all of you) FINAL SPACECODERS (alla) ICE (esp alla!) INNER CIRCLE (esp Griff) IMAGINA (esp P-NUT, Jul e' goj!) LOST BOYS (esp Spaz) MEGA 4 (alla) OMEGA (God Jul allihopa!) WILDFIRE (esp MR Robert Hogberg... NOT!) SECTION 1 (esp Loonie... NOT!) SILENTS,Amiga (Please, please have a TCC 94 also!) SYNDICATE (esp Redzone, why did ya sell yar ST???) UNIT 17 (esp Copson) UNLIMITED MATRIX (esp Gunstick) ZEAL (esp XOR, Jul e' kul!) Nope, I have no more tyme to write greets to, so let's just say GOD JUL to the guys I forgot also!`H `Pack-IceI *L2,Lea*oMGLA "grѓg f``GP$]t***Ԋ**EL ;H ;C&NN&&Sj&n".扑&&SjN%a*d"ra$dCv !a"H@@Vҩ%QnNuf%Nurf%AQNuCtaTxr1 Hka1 Ag"CvtaTr1 HaBq jD`rptadpt?aBC@!!Q`R   ICE!e`8gCUSgBmc NA8  O?|}2C$P p3ƻLWP+ TMl2d&^*&RL1 (pd.YPeb=I&a&JDM}2HrGrMD1l"A [v1~j@4(V׳fuHx6/6s!\jH@8s(5caQz lT$DZmШQ\(V$hG7 |IF`l*pUF\T~P`E F H/PN̺YEn &3 j-ծF5LyeHHp δDq5< JwV6Ke6]،K' |0x/vsp[G(JFyDf ra V`Kv&ffw a-TG x=A\pCjp LKc֘ @[B [ l Jg`̆ 83h,c -za6D2<t0 PBf07j!C#d;']ؠ1@%H5K'.Re;u*M"۞Cmp,#MT8cW ! AѴpZfL0#L Lg@?;/62?NNOv : yz!k*L,w/9 /]#?/< <;`k`}AlFMlܼ|l2M~'MfP<9aZ`R6^I8,_<FF3-4Dk&,`{ =FkCPDr<`xCV>\#CL*{J:Pgh.ZkM#֜$n1XR 1\'1^ /!Ƕ L@&VPDDDV%LBTm@X!>\YHᾰ2|B|"B8L_s&#n3DGf5.`Dnʀ@=^q=T24AR*nSA`RAW܀ Sq68CDg n`A0gڤbP :t`TLP#FNTNXH!~u!3+0NJgsPPPP(Vl$B&zF.=]Bf_BBB9\pEr rmPp?3g2L"PGg@EP R$>Aڄ \d2LxA Cq]4 v"H8oW0^l[(r"X EoĆ T(\YkE2YBWY)鎌3F1˯ᨨ4-_/3~x]S͚7כTJUBpzD8v$n UF:gj f6Zg 4 >T+ֶXC@oBpa", R]d^J@j D@* B`SF227nmfȤuR+'LR1 uЀxBip`:2P (*0T8 @UHBPX`3XhPToJC]L   @   gxIXhqrS$HK2Qm` 4@`A'VK+B2,4:9*>6CfoAIϏnAT^~8'rGQ2[h ,r 6 QYkiuDXa4,nJ70o9MsA|@H)De@.@/0;N:r3L`yHz=OBsV)?@ 䬆%[x!@b b#DmX .HP)2DA?"sT QL><#JJ G2 , _,A0=ųi 0:7 P97f+2 zCjGlR&< >ކއHGDG5G څ_5E.ul\w(̾\P c֎024|#6\ЄЅ<o:X UŨF҆҂y ՖڃڄHEEe**ExE(2 HDH@HA@/Ad222ĦQoO|a4,l#Y B7ʰC\fb$ z>04pNz$1xy@Z0Z)>kqg hIx:4(H~K#IRyAffT}6͐ yc f3iJ5G0:9cLk`8@nV8Ck 8;d"{04g*#d=L;d3ca`瞚t& zޛzi,C€HAUIQpq?CDDDA F"r0S\GbX(z9?z/Z860 jd]8NXq;D.$Ez%3, Dw!kPr{p"wH@fwLR@Qf棾4XAYB6C8/?8RDzYAXBUDD(0kD@1 _11TEEnJ 5\Ez^?42:^`E6|Ynb=zy z.va+l#r\az3 &y^9DgnDä3%8p r glZ;dE0;3CEZ3ӏ ~ :uV 8:><7|V$ʽ<2xJ-fBB9D2~A5$ptw`F5bzQdjrTfjhFb5jQػllRTnJpFB5J:tj2Cva*4?خ!v&&< >ކއHGDG5G*څU5 .b\/`0#46OYnЄЅ<8:Ϳ_èB5҆҂ U(ڃڄȿHE^ EDEExE82 H@@Ad22r3ٞUFaP VB9J3ងTIkk0 rKPA/&arJ@k0:~6aJGjIvHSG 2$@n0!m2 3mVB؀Apn>eE斴I+>:"$@@?Z*Jn*IJHA6AgBx-Ϲ, 􂊼/ * ӂ2_QSACDCI^N0" #/ r /:IZͲ HBBHAA350opV[L~CDEF˜m~=_p~;eΧ;h(z>2: jDAr3;|6A4AAG|m>=z KkMg@N^>zՁ:*n.Nyr2:  N nJ%{ 'c5uxpv(B8\";A LIx>xXws.!c{($e c&ad$e Z T&H`$U A0mbqw#~pLB,K+xp$xtW XHɼ:x!t\G)_p?XY(5*6EךDg%DEENHD<q{"A^PY$$HE<FFYZIQPTkCtp24xBk2 Avk0B02R@|@h?Nuܦ.< F'OGz|!{#wDABv} ,dNP 02vBXaJ9sDgC ApH" 0<aQ!* xNͯKKO` w7DUg$hHB`0@p^x2KCd5SB81a ( vk%kNzP^}fpJ+PP<30u78@ `@  ` @ `@ `@ `@ `@ ! !"`##$@$%& &'`(()@)*+ +,`--.@./0 01`223@345 56`778@89: :;`<<=@=>? ?oAAB@BC"E`FFG@GHI IJ`KKL@LMN NO`PPQ@QRS ST`UUV@VWX XY`ZZ[@[\] ]^`__`@`ab bc`T'ge@efg gh`iij@jkl lm`͠o@opq qr`t@tuv vw`_1y@yz{ {|?( -/H ,`{p$?*UI8 $f㿼iD!u^He vj^SI>4+"ێ}xtplhd`\XUQNJGDA>;852/,)'$!  oU~xpppppI +@~}|{zyBxWv*uts`r qȚ9 o`nmsdxAA  1=c0?"ȏWILPBOY)Bk5Wc2EȗU[N[X/VE[In-X tR+Y BJwVB'XIX,d& \MꙉvF: ;N:ÚD$CyLT 9EQUOXDIA*a s,HC'{`JAGG MIF1`EGHq|TICL>SYRG!Su 00SF+؄PBA&'V&!]8B$α JK NyLETLH?:.2?2DORLC S+AZx-TLfvH)B}G uWCACKn1ULOPTIMIZEX@HA@e`5!s 3ىs#PO0$X&21c5,URPIX۾aVԓMTOSLOW"BUeWoDVRY_{XPl5MROMd4!Gd ]KT MOR9bO6tx7XBMcU9+PAUXkGB,DSP[^SNCGVPHl-r"!SOeW"xl*@"6^ LAM2?SGv U2CRE EH&xWO1[EEKytB!kH!OD%cA DEZG>"Y aT aCmOSBMUSICޏpcGXCLETS VEA B{ OF ARFIELD'7I WISH IOHAD A@ހBLe#&1|IGINALLY?RWRITTsFOR@[USTHE ENo2CIf$8'c! $P rQl 0@`d;0Ftpp`P@!$xp'7GWg?@w:Fww^![>ð!;0&PW]pqrstuv"3DUf fDN" ,"Y3YU0Pp<~d>f/ , CaYPWdG xOyh 0/\Ҡ/h ,w 9؉L*}rB:Zh ,m4hK# :cvM/h /( ʃ@A C?C?{փzPA="x؊!c8 _aX$,zMKprtvs~ @"@$@&@(@*@E}A^PTExA^PdAH(z C2vE:B>42:,jDAorT|6A4!VAxHGxm*xz<-#9*f$M SGGϊ#$pr:$к$#r(|x( &<4Vx "t<@ABgk_QF??@>?0fN0Kj`6;B`O/N O˳xA^Ђ4M ((6>-"4ۂrGQڱZ2Zm::3˞b2P4<885zz3f?z=ƶB.yp=Lr+z5JyF5y3fBE³4h">>wN=vJ90DpSy1gf,$$ pVB0^!### x0u2*::E82<|?Se9u|on`b zH4bxµ@H@p~4pJEk .nCor2!gV hIFCCyXAQOx xŐkT`XF5PQHj|T@R8:95"QjT5 pBBU>ܒBF5䪲QjTԾad )bR v? V@H`*D/$(0    DdC ,XyuO Y(+Uȫ W+ʌZya0Wy)м'9:M&< >ކއHGDG5G*څ5E.\Cv@G(0͏4? ЄЅ<|:BŪ҆҂Q^ɨBUڃHE6u4CDPBԃԄ?DEExD82H@G_@A<22:M|3P)ҀjE8c>3)&30 0pPz J@kpa\JGjNu&HSG 2$TH@n0mCQ 03F|@3;A~C)E0>:":$<+9z*JAgn*IBFE@ HA6xArŃDԂ0܆C8DDI_8?~2HB6HFpDN,g?+jʽ6/ /(CF:AB:>O",A6HAHBAn`?B33>5050g'2L!L` CDEF˜o~3/p~ٕ2cs?'8226 <`#"@2<AdEzpOQɢLlE J"dURFd;REdڎ܎Nu $(.4:>DJy^:lˇ x /#6؀=g4ۊ xi//6%؀rcp,=YC5LVЎ-xN6Ϻ` 2ޙ΍ 68Fm ӚqXs#48qfe܈`3x2YnD\~}fzaje|J ){.%z-b|ym;Iyx?w-_kw"vˋ@u2פtm s֭rrTqMk@p["oo^n70mmalj#kkJjjli[hh1ggEffVeebddkccpbbqaan``g__]^^v]=\\([[ZYYcXXBWWVUU_TT2SSRhQQ3POO]NN MLL?KJWIIHiGGFtEE#DzCC%ByAA @s??>g&=3>߳=3=ϳ<3<;3;:3:9398387w37o6g36_5W35O4f̼#1c,/˺KbOOE h(YqU9*:RdQ9(ɞGZ3 %zt%SrIhH~dGn(щȇlȅ|B2 ?vܘbʼn6\`  )3?LZjzɀ,Gd+PwȂJxׄ [$~G j 2 Sr9Um3F V !a"#"#$g%'%&'g(&()*a++,-T../0A012m3&345M667o8$89:?:;g??@sA AByC%CDzE#EFtGGHiIIJWJKL?LMN NO]OPQ3QRhkpT2TU_UVWWXBXYcYZ[[\(\]=]^O^_]_`g`anabqbcpcdkdebefVfgEgh1hiiijljkJkl#llmamn0nno^op"ppq@qqrTrss^st t^tuuTuuv@vvw"wkwwx?xxyyIyyzzAz|zz{%{\{{{|)|Y|||}}8}a}}}}~~>~^~~~~ 7Lats-0dLA&Ta.P dBl 5Ȅ* j 5Ȅ:Y 0ȄdB 2 sA6ȄdB 2PL h L A&  j 5ȄdB 2PLA& j 5Ȅ* j 5ȄdB 2 5ȄdB 2! "5Ȅ# $d%j &5Ȅ'*( )j *U+A&, -.PL/B0 212P3dB45j 6U7A&8T9:P;dB<=>P ?B@ 2A B5ȄC*DTEFPG*H IJPKdBLMNPLOBPQj RUSBTUj VUWBXY Z[P\*]T^ _5Ȅ`*aTb cUdBe 2f gUhBijkPl*mTnoPp*qTr s tu*vTw xUyBz{|P}*~T UBP*T UBP_ UPBϕBP* ( (Tg@g@>< UPPBεBηBjtsjs3ŠP*Tg@g@ 7 u7 UڨBjm- (T UPBPO3P*Zp* 3 P*  ( (T u<" $U&B)+-P15:ڗ>3EPJkL NUQBSVP3[P3nbexg <m oUuPzhuY UPBP (ԫ (Ԫ x (T>f@ u1.BMՀBݪPBP*ԟ| UBˀ9!P%**T. 38<*ATF KU/TYP^*dT nBsy~Pz!R UB"HP#B˪P;$j U%(?B& *T ''/P:(?Q GUO)X(/`Ti*r{P+BB,-T&-B.y /0B1+y72CPP]3jBw45 6兽7z@ABCDEFGHIJKL}MNOPxQRSTUVWXYZ[\]^_`}abc@defg?hijklmnopqrstuvwxyz{|}~nWz/O    "#%')+-/13468:<>@BDGIKMOQSUXZ\^acegjlnqsvx{}E7 )ޖЩ's7 +^:&bmN/%ժT\+xv"o^.{)n&t6nycs8+݊:kYaO@ufa5?2mdeȬγSO= uiy_f4o o(v RB6xS#,y^"ZID -xS2` n떉Sd[^~QE )n" xXVhm Ydȸم`)|CíwB.AmVE{FSF[4HY#[w yNBJƒ  ]>CtBf ^̈́A|]y+Pu,ZJY'+<,B$Bz\xG-3ׅ]H+YD/+) -xffH "| :<y'Rbhu..ׅ庨\br]Gw/ׅH\p][x͵O#u춌ʳQD sv6:fu:A]"-Pdh-b3%%6[\b3%%Aᝃ:UE+7?먵`:YPH@80( :[mָgf4+Y7`de05H,XpnBa^^+|gjTC5jّQ,2M,#Z3u!4X`& Zf]4C5v 1E@DV]ψ P5eFѦe G- XDQˍ(jy :x/2MV sVo rs^1uy ּe\׀--dzlvd)ؘ q1ېYP˨ q'xvrtttttv!`vprf:͊6H[Gκ^QZ}XQ]_78?/ " h U (f :&/ w#7/h :i*zs6Ŭ3gC>J @ΖRaيlXU6[xub}X+ƨbĬҫrеkfrIX`)XE` XV-uAܐ*Y*&(8DaE¬fa0Ʀ,6]p ~aQd1OJfw(7xg]K\m2&?Ud6x t xAQpC\7@(luAPYP̌:$([l̨ юUdC8VRn䑧,KJIHGFEDCBA@uȬQhpp_\=qAVdexZfPKku15+ٽfdp>c5aXZl)[a xA]PC4Z^007 KKu)Td4bhD?s, Y,X܌ Pdd֨08jw3mn4q3jPu%1Giyxiv_z#/f`X:PH7'&EDCBA@%ut{pW'wrrO"5 JKv$nίy n(~t[\xttrttqtatQtAt1t!ttt^R7]9???ַߝ HlqT?\G Dsy@-Yo9?vh;:Ʈ@p@7ގF0,z*6n1x~-3-.`}x^,~AH`~c)3/JPhUj**U@ W?w= x6P7;x4dxe ,[]inp:@)mЇ{xԴƔ"Ա/5@ :O(ϖu\JNF +++g[#[/pX ୈx0>'٣B8x$F<xgi 2nɉ=%e2 <;8'nH㨳;89w'Qjyp K ?QY(@`>ֿ#bJ:sAf=PufisN%YzW. _15@? ޅgu{-eBP9Oʛ٬X\g/X `w`%na_];<'b\TJ)1>ӽAxLZ:>0wUZ00jӃ/|@w@@cށ`-HC $Z>/0t;sui>2Kɥ1 |`Ȧ&| Np pxވ0>Q/:iFи4ǂ?}xo`:|op3<`/.00{hܷ@,u'm?Qfr|Ms@~exݥz`k _6P787@'*?l?@@@u" aaf.1cjJm90/(ґk 0i/^2X<_Ġ1ⱗ H~ENOpпCf12S WX`9zer/,/дFr[2ȱf85:3R[ ZXWέ;'8Wc{d;?@Ts~@c) R-^r  x P[HT_#bZ eTXeWn+4*d a_λW h3&-8( -*\/J1v2v`5` dR0PS^::`lB?;›: /Ro#` Pj~#](7@#n6  \#MbBbfdC3K2a0 2 @TajF(vٿ C,aq k\R]eˋ`Pgl ?P? qbYÀ  ,+@rIJij<]?l=mM]ߔߛ `?W\mdmQTzۙ>Y T P[#p zk r `d&k|WlR] nTl"Q xx*&Xq58"Đq0jp ՍwHLs >M/`^*&,R&LȺz?r $&>>tlG$ cR5;` sXP_ࠀ?(Lr p#Wn]sE);y+a;~͏.XCe{<0x@ ?-8YwTa?/^=>.>!k(,>&3 YQ^@yưUM 7zځ]~qѺg ??; s-c=|OW0<(Q yπ)}kiw%a’?<|N ,3?' (8|+%4hxMޛ!ҩ[ KTr@o[)`P ` ļ~*|hȥa{ ,40KB@CWjLV %SaWb("bxlCbph;| ^?m#o`8GܯYt  &^ OP#o\Z)A!aA0`n_G0y~~^~ oQ 0x@Y\Uݍ$YZް/@ٽaR%j*ju dމ ?A090>{/Xػ,iyNJ՛{NPP{_@EEpdQQ.4Dn;y[Y G~O? ?@ V+Sx*PTW7lo7pH M >0 ObvI6⟁ '7' 7|o0px0aVo.@:ؾm[;;D@n%׸+, Äťƽ B`=X>0 d@oSLA׻M%V5_5X 91pby8/003GjnXfm !Ā`-k7(4[#[puc8s|*%P^43јi1 00@#g 5E:Y~@  !@P>@E2hK- JzQ8`QSR2_$0Cpqxw$Gyy^`  u_@ VUWVp fH k}@?@p00O7euBI7@!@?t?}p @ۧ8x?˙tQ l~ IYkTh'Ix[@9 @>xZG1ۈZ\_ qYc bjn2+4@ 0 Y'upJp` Y g଀SM,Mo  --./ *xd!(ERS|?oW!(8%8?G@ TN>۷r%T 3%ڀxe}D̋#D}AxG8@D{# A@ "#W:YTCArQ)!%3YN0,p( 7?Gp|dQ@RX[xԬ ps\Ϣ3yT.0+,ET|Rs~]tWsЅa@~~Ouh$:+u ֤r9UtWGo g7;WWY;+.8t* c;Dnyn* 8; VC6>%h9%`ژCw'l+ԺE Xq0 `$;ѼmtY @r F[,I , :)uhxem`zNq Y hģ 3#"n<#  e=$iX6@#l!peS o[-d.@wB(lf.ƑO0^3[oC@(nE*l c9 0Nq` J@nV;z%F { P*T]%0N QjBB׊4 A/ݚ&̕F!I=#H!49x6BR! ꇅ *ԉ (%ּ~Ь@ l ̷3;0:f{A8Si~mS7)gjF|]V"K B=f eR(Y&KlGEL`$hB>F6,ai.)%76!  J8HZLpjRtF2;bJjp>:WE c ue f 9:` } .j tfS`$^S KD9VR#J &glono0K GBJt[:/,xGtِE}D c.B.J fBWBrDA<42#5"QmaU02f$3"bԟjr9wHDCaAyHHLDA+ Jnq Bmn<6CE0Ef'%g%xR 88 BR"gCGwN03Gp"< 'Ekk!_ ׀ U >@I04I\#B#Ly UB(_S[#w2$ ]p@ g g.6g:&gM gB`D6?`<i `0?Qд`^D2)^H3$`B(TNu2Gށ Ns~` D @19`P*T UF` U B h K 0 i`x HGޮϴu0ևS#Y;֘XZ8siAKe,e>-,~wpjd^YTOKGC?;852/,*'%#!r6Ⱦ~xqjd_YTOKGC?<852/-*(&$" <5 rѿ   "$'),.1368;=BDGILNQSVX[]_bdGilnqsvx{}ghijklmnopqrstuvwxyz{|}~ 進888<<<88<<<88<̀<π<Ҁ<88<߀<<88<<<88<Q-@R S@a TUPV(lWX [Y-@Z [@a \`'T] ^@a _`Pa(lbc [d-@e f@a g`'Th i@a jkPl(lmn [o-@p q@a rs0*t@a uvPw(lxy [z-@{ |@a }~P P(l [-@ @a P P(l [-@ @a P(l P(l [-@ @a P(l P(l [-@ @a P(lqB(l [-@ @a P(l [8 [-@ @a P(l [8 [-@Ȁ @a ʠP(l [-@ЀAP [-@Ӏ @a ՠP(l [-@ۀAP [-@ހ @a ࠰P(l [-@ N-@ @a 렰P(l [-@ @a `'T @a P(l [-@ @a `'Tq, N 0*@a. P 8, N 0*@a. P 8, N 0*@a. P 8, N 0*@a. P 8, N 0*@a. P 8, N P 8, N 0*@a. P 8, N0x O [ .@A0x O [ .@A0x O( q -@A0x O( q -@A0x O( q -@W ,@A0x @a/ `'l -@ǀAP V<  j@@Im5@O@{@/X@w@p@s_zd =xu1p /޹- 3Yx?> bE MZ~yٯ:b IvM 6=_xG 0@P`p d /0$ .q/lme" 6 WJۚ | Z&/hŀ0@P`p_>q +- u S xx#^Є4 xR   ^?PQzxU$%@9p6FB- x ,EJ&2/ vyIxTxY.k`[0dexƜ) FEeݔE'!xB;uȎ xѺ.NZyP9#5lYg}qRVuE x9k/x^e:dsT^vKŔ9{CRc _;!x=G%YiZbs[p֬+x]nÎw~5F-w* &pJ46k'9dho` ۄ;] Y-K!SC₺88eB^&I>7^=9/++!]q;p(W}na/{E#$v֭ހd?75(* eRG!\k@g8, H/8tˬK޺[ҐbpEE5,v 'LtA5 1!eXK;䌉@@B9dR\v4,`X\3c~N3^?X0 Mt%RƋA.Zc֚A&}G ZN3q-r/%9޹Ml s0e Dmm ,̼ z /.@33cDUUuf w$*<&,+VR;MjOR;Lͪ!YH 05d!@u[L̪X)ajVuB*t-R;L# ajM3Ν&Y fU%, BwU_@:-Y'fU 4լ'AwZ̤sG*&HTΝ, \Ζn sUkm0eKK ӗ-8Rwv ҅|YnXێI-1]%ܒa2[%Y21ܒ%i3-2Aܒ5u?i Zv}Xv.ɦ͚ -Y4QkLaܒEiiK2i8nּ2sKLmҚW&unɜ-Z -Y3^КWtnɘ>ٳKf8m.nɔ鴭Y0?L.ۚlg\-m֕ތ[2dm[ֺqKvLmZW3nɌ<;6cNk W5ȬJm5CsGfUj۬>;2RZܑ͐=)&;Щ #jF6N3:wdpJe1w'[_ԶE39wdV!ι#* ktS<79w%g_Umnfrr[3cN= w2Ȫ:m첒ܑUuzemȹ#9jsG&𫔁7@Y-YqȪ:m ܑumuE6ܨۑQU cø#aqGFUi[ (Yeװ~`ܑQUXaM#CR׊,BČ+Uhs*r?JڴK[bMWp3UZkEw21h;CԨUwΪPZE|2ը?UwΪU.ٝ V`pUJwg5mVd9.ng#Ql#;?Yf[Iع**un4]JpE̕kJW\9nܢyչvmyϋYq[ܓ wq[Tܓ wq?[ܓ wmYҡs WA}BsO3]msOƺ3'!u]svFc!mƥ8]gpfZۻb֕SsAtwM̺bqh9ff)e݃m: L=ف4yݶJF=r&y]*ՏuM֘3Fgm"wy 3nO֑3>b+=8di?[P$7K.><(AZpNp 'dr!6b`2qc9}bZ2YΠ;Zk3nUn 3qo9NF0l73nTn3qs9;uM_f:S8i _fRg)3{b3.Rn2@mo.I+fmljY+A:}bJZɫەb"+mɫ[YpSuX^ݬ nU\|W=̙j{5MaUJ7k[EÁ)ͬ- n޴ë4#ҺhXUi6e:Z7Օl*Y60Q&MFg:VͪYWUiUpUe+fUwUګY'*XG5VJmUrV=u!J̹Emt?*X8ĠV$ p6)uTR &8w򣎙ĦQ'=u;$5 QjΝ%e[%QjFAwQj;`]%6esG *).ĤR{.1jԠIܡٚUb@ܨR Fmڧ.!nSV9w0RPatk;ft+f1ĢɃn.f7)փEb8-"ftgf0{>u ]l pĞUaՈ=?wZe,@$_-IYg dMbݪ$jȺĞUyӲuNJK8.Uzb]hQH)?nMuVrKp0TL!+`tJ^`MwdVmfXܪ)BtJvժm<4KժM=47Kլ->V7AlXU&4 (caV9[M3fDzp5ϘbY!:] 4fXʸ9^4f|5ԘbƅcQU7iʌ`] V}) W}+cMSf\Spo:2eƕ*@3kYVm)GbasZ̸RYFbasڣ̬ZIJu8 SffQnKPdYWGy?JlnYKYWGyؕJlY#8eaa]2[/_wΚ̺:î^w[|̶:jheQ"U7d0ȸ,nS1?8?WAk?zR\p3kZ;6栵FL8f+Xڜք,δje1kv3jCeqW\bqɘW?^5.jW k^y:2v(~ :v[wWF\v9C4׬NwYbfՊm??nൺ3նVZ݅jV7lȩSV( zRչJJLR5+R?[BwJm *0!%** U/J %R2Z?kUj?kUUU;g\#Bmcei7tSܑQR} ΀r/OD"3f@puF?w)UR0.-8.^ f4pa5q@B.N4h BM 7 0JZ[Wa^ Z.Ax87iP<2` Zbn- X+x1skBFEǃ#hqp ހ,fȮ,YW0a٣fY7<؍f0Z,E ;ba?)d0< h(_sPua Ǣh۝*WR0?'6" ׫2^g!Bh(Cxŀ?e@T ]gu;+LbW8z}s(㇋'Ήڲ& X`s{ +`M`Y#<72QP 3dxKC?G P~(Hx<90u@%فxV'$'>X 8gx `?af:``! 7~0P pdOI:v%!@g Pe 8W?YvCp E1`NI'  M.@w E@faEdAG$ ?cM^YuSWf Mo 0^* `f| 1?pP?t@0@g?Vojis yrUav  )g97zxz Z1BSduvW'/wйOEN@FT6#h 0 ]Q@qqP* .<`[!pEiY'~p\  -Z{#8,Xm G?038"8,'P! q oG~.E~XO ȯqQ+q7Qafw7cpTe!E#L epX]ڭ+k\C/!O@?iw!ӠGd?ŵ_h8XևC`]}iK@/W_՟&i߮Ԡ^IR-5|tۮ;Ep5<5;5Aϧ3u <[I3K|½`^$~ @${j<^j}./!Dlȋ>xEƈhd͛X ~2whv/Hax7aXMF)<Јx=?f+¡,`Y^>j /~o> }ϨO?,߹]' ތv lge   7n$,Vc6?_\0XXk _mYl)[y px4xsu.˰-1ZA-!A [V{Ϸ`fYVJ pG%>A|ZޑsX.K6kj@Cdne _9ۑnAJ.-`i:}O8O<(SmU~WA d?d E&;+!Pd u>ג* ;+hvs >! )6 -?Ez>Uh"W)ɡP~ 9 tqqp>~ u oQ]{^"G_FAxdC͢ޡ!B}7?jB3!GxY@㓙ܠhgn (AA> /5` _wh"*^Jѹ`4e2<~ o?-.[+PT'ÁV-<;Ztp$AlRj ~^,OB`W4#- p"FTv˟8O! ,m_Ks&t`O75Q?)ߴ` ^ 08 œ09bq9x(Hzj}/Z/>+ SP/N QOy`ysF8pIpҿb2d.G S}/ N?CP z. x8 vʆ؇? g_>> mb{pǴp" "4|kC`4 @x~~ԯeT| ]&f׀`oyB|/r8KɧpxG99] J`.߾`m +M6l.[ %π%#$f BiNJ)P&?~6?f &6*yÇ3w O,\`}<0Ȼ !=~>0Q!5h;Y]K<!4x??ѯ`T TRR H py]}xA V88 w6l6Cx 6`=` ͌Ͱf33 ͱA ^p'!lla01|mB O@a ma6W`y=J@ZP l '1a:5`<'>@`fa`fla;0͘"0>=< 11b|F+~ExA89UcxS0p=3V)$`mpxS2( 0~/<1&;x ?( 2fm13{m09/3 19d2`f6"  ?0f/ 3`0` E /c  1r~0Xf&>c0f|>` z؈AxA^P~s`rc0/ `&=0'lc /K13qd3KтvX{p'bA^0 cY8̵`O<3n3`1(fC^P7yy0ơA^Wq/ &$9c`=xAfmac30xPVe=39x;>?5xA vaxN30`ax50`0|=|$s>,9xL|< ~9x`fٶ`ωscw,|29x3k`ﲉ`O`gc c? .3c3c` ͿPF0xt c1>`>82 Z<`^p& OV0S؉N9P /xkX?5`<108q~o<3A ^Ѐ f1ƇZ- >0 .A%^'\xA F$['@7GWgw|wF`g'v?yX~\g<`py1HdDq0OgH` <L[0PEbO{0&~ #}q'NH&L@C/.'/Z1'nw ^V~gBrב@g?G&|d# x'; / + wQ ?OAz֥0X!8@G@q<@!O7;E7?|4 &p"1 ;! e0!7# f3㲠 ?>X5~˼F |$v(!~+/lSOa#}sS.K q8 D.߬"#UF $#\  lH -E#/%.:> 'Z!(?{'d p)CAlͪ<p'@I`#DFr|JpdׄDq_GTYM`@PĻELmQ}#0!nxUht~ A   2m nlf."a%t峗%e|zA$4 \%b݀"r-8ڌW!y PP91"`g)vJVm`a@\E}DK$y p (r9`ǹl < }%`VoXP9 [OAg`.> KX0,e8݊zG* S`*@UsPP nŒ\*\Ϭ jY!uq `` ѮSWHe0 @q@DX?H+HY\_{.:>~e- *pNgua},kխʌ[Z<+ Dra̤ "#^ʡ2l2@̴Rb8df+ 3Q snYcb?Jp9a{?7> ?.!ʦ>zruv?֛ :Xg0Z b}gMZ c<w3_u'mG>ro ^vQK~6g?Dn @<#7Wjق7&ʘD]  ؓ`b DY#rx|  Vʚ GU^ h<fNT`I`bacjx?4&4b%sa`pގpȀ3?;p,f+FvוBX`*or9F  >,=P`wpck8xZ6m5X HZBր# nW0=ww?z*y,WH߮>gV/) 9Vm{{C@?es>}X9g~Sr\^]Kݸ|q;KF .8nq1̀> {eM?  K%lysx}qϚfKHbښ"p ,nZ"Ӏ@`bF+@,9g~IyrBf+A"OA| NĀ`"{sd[q2?u`Y `|:>cS@~>7fauK-q1:|~\YeMQdž*0Y L܋$`v! =u 0 `~_/#b 1.8~XwPZ |2?bb-ʔ 5|g2|9F٦eg0;KN~ոl0 0dO6` 8Dɗ|Km @`2 OD-|ҁ Y 8y+.]r?)UZNC-6ޭa,A% V bhNsQ:*ߔIhO`1~x敓CSn_De-o%j%*0N?}힏7;]ʖ8ap79|{6CO0?G8{ʙ##=3v sxΑaFэ#<I`c/^xMñs< O#O(?ؗ8}_JW_;I?a-qN[C3 {XV`c]?sB⓿j?[Dߋ%fԴ "avg&9xߝh# Is!slb6.#M@ObO2$ i%sXN,ٸ [=08``[9<' >.4cد?Xq[K)e}Sq=&5 3?^(058u0"ő8k=@:g5> c!N{ TʥJ+XIxllHG3:J09V9:[nr#phPw/| x7?|^|}Ƈ>Rpu ?7bMJ:+i~m5k8@Ff̏9}# K^ Fp_O J{o .3t˖CX>o~}7>a1x#RUGt/u{<\~_=Q8ZT2I@e)8nKojVno`9D_(<'s 䓟yߐ\`!7/~Y% H~o=:JA2~ rN(ڧ0B`;.? >/ Xǘ~v `=' )e yfW"`9rgtAI*f Ā % p~P= |G. ;Oe {!\ц 2Gs-1%\!+o6bͅGm.S/u0b\pO||Y#PpP?G R[ƒ  ) oy_Xy`fɊU + M!J.٩,afvi|Հ4jq@3G=*sKߒ" aK`AV| ˙LBj4syfǹ4),֟s?Gr#8+CBap >QLvJeW Z`q~@$l/ Y \aYF18?#/wv2I?< Y:0*?@}&\ 7wis!`DŽ.-rc~,#r=8嫅.˅H?̠#G =/ u6`X :ZCw 8b?.v~_u ?}rV-E\7g5<`#z#X}1l?ZKq= ~0ی @U~OM帼4~chI/057tsSA<8Na =ZlGKi<4>sKJq8ی!wd*p zdg<LJaaw(O#%=WbwRϏ"p8\>A$wa#&8=fHaNEkjp~sUrt3(Qr&<4= CqsƬH Qcß9Ŀ?0ākpv0`պ br1%3mY$zbSe=uo6?@F/V 4N9.C I< jJtRÞJ>OHn|.Y'f pG" )K+M8V6<|;`B,}/`LJZFpa~' _Y= >'0p= ▜8l0'׻kNn.hqc-7x?=`  0|!'0GU6 (Ng c OlzFҥen0xˊh?$pF\lH+6_uo70O lQn`@ިנqLVl0V88a.sb- 07s'{.x ^s'y:] jdE O P5Mfpc W.f.6„%`K<1T-.h^釀7|?'JRV) A{B_p9_IA:& -K|oޜ!l._MlrWWR & $ra^Οm133ѾGC&1?3>zF`6ܗeB AJc|f&9dÅ"?3?,ˆ[pt;[ǀ+|<A`~}H74xd㿠~_sN}f1\j$5*m^2OT)a',ӟܚeϒ8CW4 8*?G??0w'9KߋfEl uG0.uH,f>! @lV?NCK?ɟOΒ@ WwO_Ynxꇙ+Q8>s%@<^ K8ǰZbrVq@cOa`a0Ȑk TZ&VCkF C=ۯ"=XMXw?T|?8a 5; |;5>CEpA88VEr <0M G&A ~:0A":wc+{_`?=0O}/s X|xAeBDY0 ./8:$ HΔc/&F/q6?|z|B{Niz+ݹ><.Ftu6a m(&@`eu9 ~ha |cـ<X^wș_usO x0:Q#?`B3s5(G9Q/k}:$P2 p|?r?XRr*#G~ @(w?a6˓c%x^b?kU <#QwdV˜ݝ-048e;S˟cPO-p?x}? W<@_`N6r]::Z[,]sxE?teG {ʴi +#6l~J_+F$8᳭y:l8뻌hl ު%_ 2.gq,Wiprn9;FwcQXsrG~f|bm1f Ys0'r ~iH? 313 x5+IL*Z1W,U@.Y ,Y鍍,e ?>yͣ]ttyqmP EWC!! [<V}~ᒿGlG$"#OXWcef?.",kZQY|x|v?4 gst:DF&]=G& GRhGj'Eϧ9 /.Aϸ/ g e?V@d'k^F~aJ,UUJ $,/Ҙ4-"!w3%?UALj _X?{j`҅dKx~ }KK|UXRW % NHTWF3^bƙxA)Oa^@G?~~yGa?2cͭ|ѥ-[Xrv'}t rq3S trƣ$qLW(K0w3@\c~WO21Ïޮ7XX _㨿0pn%U,G hi+֕ϾsnX/fӗ ;/C.?scɧ K =eBJo-Ng+xDޒXҴ8`Gu@#Q \prxEgϿӷྀ-72aW臌|ep:XmϏXByْo HrT8D Xf}Gb  ~l,ܼjټ&~K-O㇀A>@v?`S' _ @/_g '?za~G*[kc% Pta?`?ZT`luc&swN/( _~ π`p >HUKid슦 㹣a;{BDkgF5U I6㕎<ԹXAݰuf%&?G3?&0Q4_Sl s$x?O?@9+(İSp^`y KSk ~,Ѡgv<emi XzcFLZu6-]^>|o #f#3h79_ [ Vuq3|x# 53ngY\V,.p=z]#qy4[%G7Ύ&C r$}[@r>GJ#@v 'A-)'E ćó#~_vZ:ع@C>0+)C;2?:}:BDž| :FW:;"t8zU<__aX/ֽn@ hV9Kgq `@~7',eCv1"{1#p¿8?%_SRU @6˫ FUɓe"kȄįI8X<\1#V>!4'ǃ8G*%a D0a!8~Y&h``Zj4?B?Xe&FrB ܈X3~9\8h>i-߀al7 @iF~Kx+p+C ?=eŠN3C ZNwk.23 b×P_#ȏO =~6 .>FݥPhS e? u0Ga~[ ,I 8~p| tqWKMF7wArQ ?`)<[gke #&gOeh>8?˘vQP]2̡ |s? 5ʹoZ,t-/&Fan7ڑ٬@B & Ǽ<b F7?0@V>\ WA,|y &|,RԉFBTo8m g'I,~?f8Ī13߀G ? =?3]> w߄8 ەFh',e34 ]$>x"OvQ~~|@(O! oYb ɒ? pO $fe ?n2Iⰴǣmp2:̴n(ab7m#)a#og:' r>ox8֥ZA D I/r450nrP^kPGhM2L$Cd&UTf} [p|8W/+,3X'ƿ?ɃIwG`!kLÃ( il|s3QkEf%770oTs D }2&զD?8́gMo9V[hd3Qx'a&\,3IئtcHZ01ow!XO ?a SU0QˇQ*Ǟraf_.FMᰴLԣkOɽӂ?c#~8? R?q$N>'υOWP]bYFq& i 0ueV7K caf(c\#bMF|̎IX'=vs_ߎ|X8ҟ?Ái{r _h(U?JF X6(<e?q, {PJE -dZOtP9x8`839ۓk:H~8?>'$}̸)` ؿJ"~;JcoϦa۰V)ࢣaÝiZg?r3`ZpCC|E#~`p$1[v,<>Y8$4 ڟ,>?-/rԌj?idIbJ ?XNs##Ia#֢ Gǰ?PoX$ &>"~-gX=?@?Z4,5,#aye)2 0^@D^@#XVau:dE鉿uQ#4 "NZBpMlX#D,oX3$ .g󰁔l?M9o0O tI c! Y$ǼLSbK(bIiX^(믷 CJXbc= aMP y!?jV|h 1̘Pڙ:q6\j3dXQg 0PS,q$J Ra?iɕlE񿿤q֎zeɓ'dY@\ ]"b) U\dğ>;q}οe .5 b?U j`3[Ďl 8 > h"$A|#rQ-֙ /_W*>R<@)\35Q0IGIo@#vU  5!=^yoe Aݾ+'Q`J H@!82 @`"0h R g\adI`ƢD^axAF>κ7yY^XC]<<Izg1M &n͖ h "C@X8|;֊ܞuNdz  @/"`1@]?_t  ˝@v _+ 'ȊA"¬%b+><h\@ @Ac@F,/CpbŚ#=𑔟iՀc?uWuԁ:j3(>Rn*<0c.z~hX+~ V2 dq A`Rc y\wQ<5TQ=ŷL}qs_&Y;25F "jaAC8zHδn<䦥[! A Y /J X\}g|T \|f05j !hq)lVXk)l1@0KiTxf&_W\4}G݄~egQx@E_P&3+_W˂{"y%š "z2?> g6ϒ&0 XT8&yd`HTR[zcH>&@cPP@DADxċo|7 ~1aA5` \f:M = k"폟s_:%0|?"nPp`8K ?_CJuAaw Xo X; ?!ԗ|>k볌/7`P?.$e[T shD"=GOGh͞) [>.5pC=*ieE&|pFPy}GgEu&:﹀8$x0cy %.yB^JtgdE>?F߱AEߟ~CX )cy<$N0 07#@t`0*`؁XY`XPB,|d~?7U>G~", {@D2@C!ɪM$`D OA2 -"ToAXWՅρAen*!3{ˠ D:hx10~`0# F (G}%Zt@SOs/=_~q4sTgzL& >/>OD ` %?x , B B!@`h *2u@FuG"V@_D]atm_yw*?Cߗ_pxi~Ipſ~:H \8K h2zRZOBr A4e@ K 7;  oqyp7G|a/G@8 @P|u?` [t|;d0qu[&; ('h+Js'/.#ώ"`L0 yAǀȀ s( `,&}r?S_87 94 3 s};WpOAVc .kE}`͡#-gEXE=1P_/C.cQ&o2)k࿃+>7$T_}puO=G}tG_҄g|C\K}$`>¸ /<-{4ZMuՁS }<_p=O&~ I(#?cnh.°b&t$G6{ˡ:.zጚ;|5yqÞC>"?{X,r0 = start .b luvly pad_no equ 5 MVOL EQU $40 ; >= $40 ($60 recommended) FREQ EQU 1 ; 0=6.144, 1=8.192, 2=12.288 ; 3=16.384 IFEQ FREQ A_DATA EQU 40 ; 6.144 D_DATA EQU 164 PARTS EQU 3-1 LEN EQU 41 INC EQU $02469BC0 ; 3579546/6144*65536 ELSEIF IFEQ FREQ-1 A_DATA EQU 30 ; 8.192 D_DATA EQU 123 PARTS EQU 4-1 LEN EQU 41 INC EQU $01B4F4D0 ; 3579546/8192*65536 ELSEIF IFEQ FREQ-2 A_DATA EQU 20 ; 12.288 D_DATA EQU 164 PARTS EQU 6-1 5 LEN EQU 41 41 INC EQU $01234DE0 ; 3579546/12288*65536 ELSEIF IFEQ FREQ-3 A_DATA EQU 15 ; 16.384 D_DATA EQU 123 PARTS EQU 4-1 LEN EQU 82 INC EQU $00DA7A68 ; 3579546/16384*65536 ELSEIF FAIL END ENDC ENDC ENDC ENDC playback: jmp start(pc) jmp play_vbl(pc) master_volume: dc.w 64 song_position: dc.w 0 beat_count: dc.w 0 ;- Cut here -; start: tst.b d0 bne muson bra musoff ;-4 Interrupts on/off -- muson move.l a0,save_module move.l a1,workspace_end bsr vol ; Calculate volume tables bsr incrcal ; Calculate tonetables bsr clearym ; Clear soundchip registers jsr init ; Initialize music jsr prepare ; Prepare samples move #$2700,sr move.l $FA06.w,s06 ; Save MFP registers move.l $FA12.w,s12 move.b $FA1D.w,s1d move.l #$FF00FF10,$FA06.w ; Timer A & D on move.l #$FF00FF10,$FA12.w bclr #3,$FA17.w ; Autovectors clr.b $FA1D.w move.b #A_DATA,$FA25.w move.b #$02,$FA1D.w move.l $0110.w,oldtimd move.l $70.w,oldvbl move.l #playvec,$0110.w move.l #dummy_vbl,$70.w lea sample1(pc),a6 lea $f8800.w,a5 move #$2300,sr rts musoff move #$2700,sr move.l oldtimd(pc),$0110.w ; Restore vectors move.l oldvbl(pc),$70.w move.l s06(pc),$FA06.w move.l s12(pc),$FA12.w move.b s1d(pc),$FA1D.w move #$2300,sr rts s06 DC.L 0 s12 DC.L 0 s1d DC.B 0 EVEN oldtimd DC.L 0 oldvbl dc.l 0 dummy_vbl: rte ;-, Clear soundchip registers -- clearym move #$2700,sr moveq #$0A,d0 ._1 move.b d0,$F8800.w clr.b $F8802.w dbra d0,._1 ; Clear soundchip registers clr.b $F8800.w clr.b $F8802.w move.b #7,$F8800.w move.b #$FF,$F8802.w moTve.b #$08,$f8800.w ;be careful! rts ;-/ Calculate volume table -- vol move.l #vtab+256,d1 sub.b d1,d1 move.l d1,a0 move.l d1,save_vtab lea 65*256(a0),a0 moveq #64,d0 ; 0-64 .ploop move.w #127,d1 .mloop move.w d1,d2 add.w d2,d2 ext.w d2 muls d0,d2 divs #MVOL,d2 ; <- Master volume add.b #$80,d2 ; sign it AND.W #$FF,D2 LSR.w #1,d2 ;convert to 7 bit lsl.w #3,d2 ; times 8 for table move.w d2,-(a0) dbra d1,.mloop dbra d0,.ploop rts save_module: dc.l 0 workspace_end: dc.l 0 save_vtab: dc.l 0 save_usp: dc.l 0 save_usp2: dc.l 0 reached: dc.l 0 debug aid! ;-, Calculate increment-table -- incrcal lea stab(pc),a0 move.w #$30,d1 move.w #$039F-$30,d0 move.l #INC,d2 recalc swap d2 moveq #0,d3 move.w d2,d3 divu d1,d3 move.w d3,d4 swap d4 swap d2 move.w d2,d3 divu d1,d3 move.w d3,d4 move.l d4,(a0)+ addq.w #1,d1 dbra d0,recalc rts itab DS.L $30 stab DS.L $03A0-$30 ;-4 Samplecalculating -- play_vbl: move #$2500,sr move.l a6,reached move.l samp1(pc),a6 lea $f8800.w,a5 clr.b $FA1D.w move.b #A_DATA,$FA25.w move.b #$02,$FA1D.w move.l #playvec,$0110.w movem.l d0-d6/a0-a4,-(sp) move.l samp2(pc),d0 move.l samp1(pc),samp2 move.l d0,samp1 lea wiz1lc(pc),a0 lea big_routine+2(pc),a1 bsr self_modify lea wiz2lc(pc),a0 lea big_routine+10(pc),a1 bsr self_modify lea wiz3lc(pc),a0 lea big_routine+18(pc),a1 bsr self_modify lea wiz4lc(pc),a0 lea big_routine+26(pc),a1 bsr self_modify move.l #priv,$8*4.w move.w #$0500,sr move.l a7,save_usp lea user_stack,a7 ; Set up registers for big_routine: ; Ones needed ; d0=volume 1 ; d1=volume 2 ; d2=volume 3 ; d3=volume 4 lea volume_handle(pc),a0 add.w master_volume(pc),a0 add.w master_volume(pc),a0 moveq #0,d0 moveq #0,d1 moveq #0,d2 moveq #0,d3 move.w aud1vol(pc),d0 add.w d0,d0 move.w (a0,d0.w),d0 add.l save_vtab(pc),d0 move.w aud2vol(pc),d1 add.w d1,d1 move.w (a0,d1.w),d1 add.l save_vtab(pc),d1 move.w aud3vol(pc),d2 add.w d2,d2 move.w (a0,d2.w),d2 add.l save_vtab(pc),d2 move.w aud4vol(pc),d3 add.w d3,d3 move.w (a0,d3.w),d3 add.l save_vtab(pc),d3 move.l samp1(pc),d5 move.w #PARTS,d6 ; a0=sample 1 + position ; a1=sample 1 + position ; a2=sample 1 + position ; a3=sample 1 + position mainloop move.l wiz1lc(pc),a0 add.w wiz1pos(pc),a0 move.l wiz2lc(pc),a1 add.w wiz2pos(pc),a1 move.l wiz3lc(pc),a2 add.w wiz3pos(pc),a2 move.l wiz4lc(pc),a3 add.w wiz4pos(pc),a3 bsr do_big_routine add.l #LEN*2,d5 movem.l d0-d3,-(a7) ; Add on movements, ; then check for repeats: moveq #0,d0 moveq #0,d1 moveq #0,d2 ; Voice 1 move.w wiz1pos(pc),d0 move.w wiz1frc(pc),d1 move.w bigadd1(pc),d2 add.w fracadd1(pc),d1 ;add fractions first addx.w d2,d0 cmp.l wiz1len(pc),d0 blt.s .norep1 sub.w wiz1rpt(pc),d0 .norep1 move.w d0,wiz1pos move.w d1,wiz1frc ; Voice 2 move.w wiz2pos(pc),d0 move.w wiz2frc(pc),d1 move.w bigadd2(pc),d2 add.w fracadd2(pc),d1 ;add fractions first addx.w d2,d0 cmp.l wiz2len(pc),d0 blt.s .norep2 sub.w wiz2rpt(pc),d0 .norep2 move.w d0,wiz2pos move.w d1,wiz2frc ; Voice 3 move.w wiz3pos(pc),d0 move.w wiz3frc(pc),d1 move.w bigadd3(pc),d2 add.w fracadd3(pc),d1 ;add fractions first addx.w d2,d0 cmp.l wiz3len(pc),d0 blt.s .norep3 sub.w wiz3rpt(pc),d0 .norep3 move.w d0,wiz3pos move.w d1,wiz3frc ; Voice 4 move.w wiz4pos(pc),d0 move.w wiz4frc(pc),d1 move.w bigadd4(pc),d2 add.w fracadd4(pc),d1 ;add fractions first addx.w d2,d0 cmp.l wiz4len(pc),d0 blt.s .norep4 sub.w wiz4rpt(pc),d0 .norep4 move.w d0,wiz4pos move.w d1,wiz4frc movem.l (a7)+,d0-d3 dbf d6,mainloop ; Move a few bytes to avoid crackles move.l d5,a0 move.w -2(a0),d5 rept pad_no move.w d5,(a0)+ endr move.l save_usp(pc),a7 move.w #$2500,sr priv addq.l #6,a7 move.w #$2500,sr bsr music movem.l (a7)+,d0-d6/a0-a4 rts volume_handle: dcb.w 64,0 x set 256 rept 64 dc.w x x set x+256 endr ;-Sets up 'Paula'- ; Call with a0=voice data ; a1=area start of self_modify self_modify: move.w aud1per-wiz1lc(a0),d2 add.w d2,d2 add.w d2,d2 lea itab(pc),a2 move.w 2(a2,d2.w),d3 ;d3=frac add move.w (a2,d2.w),d2 ;d2=whole add moveq #0,d1 ;d1=frac pos moveq #0,d0 ;d0=whole pos ; Put it in there: o set 0 rept LEN add.w d3,d1 addx.w d2,d0 move.w d0,o(a1) o set o+34 endr move.w d0,bigadd1-wiz1lc(a0) move.w d1,fracadd1-wiz1lc(a0) rts ;-Paula emulator- do_big_routine: move.l a7,save_usp2 move.l d5,a7 big_routine: ; Self modifies at +2 +10 +18 +26 ; Main rout is 34 bytes in length rept LEN move.b 1(a0),d0 move.l d0,a4 move.w (a4),d4 move.b 1(a1),d1 move.l d1,a4 add.w (a4),d4 move.b 1(a2),d2 move.l d2,a4 add.w (a4),d4 move.b 1(a3),d3 move.l d3,a4 add.w (a4),d4 move.w d4,(a7)+ endr move.l save_usp2(pc),a7 rts ;-, Hardware-registers & data -- wiz1lc DC.L dummy wiz1len DC.L 320 wiz1rpt DC.W 320 wiz1pos DC.W 0 wiz1frc DC.W 0 aud1lc DC.L dummy aud1len DC.W 0 aud1per DC.W 0 aud1vol DC.W 0 DS.W 3 bigadd1 dc.w 0 fracadd1 dc.w 0 wiz2lc DC.L dummysam wiz2len DC.L 320 wiz2rpt DC.W 320 wiz2pos DC.W 0 wiz2frc DC.W 0 aud2lc DC.L dummy aud2len DC.W 0 aud2per DC.W 0 aud2vol DC.W 0 DS.W 3 bigadd2 dc.w 0 fracadd2 dc.w 0 wiz3lc DC.L dummysam wiz3len DC.L 320 wiz3rpt DC.W 320 wiz3pos DC.W 0 wiz3frc DC.W 0 aud3lc DC.L dummy aud3len DC.W 0 aud3per DC.W 0 aud3vol DC.W 0 DS.W 3 bigadd3 dc.w 0 fracadd3 dc.w 0 wiz4lc DC.L dummysam wiz4len DC.L 320 wiz4rpt DC.W 320 wiz4pos DC.W 0 wiz4frc DC.W 0 aud4lc DC.L dummy aud4len DC.W 0 aud4per DC.W 0 aud4vol DC.W 0 ds.w 3 ;what the hell is this for??? bigadd4 dc.w 0 fracadd4 dc.w 0 dummy DC.L 0 dummysam dcb.w 640,$0 dmactrl DC.W 0 samp1 DC.L sample1 samp2 DC.L sample2 sample1 dcb.w LEN*(PARTS+1)+pad_no,$400 sample2 dcb.w LEN*(PARTS+1)+pad_no,$400 ;-3 Playback-interrupt -- playvec: move.w (a6)+,d7 move.l snd_tab+4(pc,d7.w),(a5) move.l snd_tab(pc,d7.w),d7 movep.l d7,0(a5) rte ;-- Sound data for soundchip -- digi2 MACRO dc.b 8,(($\1>>8)&15),9,(($\1>>4)&15),10,0,(($\1)&15),0 dc.b 8,(($\2>>8)&15),9,(($\2>>4)&15),10,0,(($\2)&15),0 dc.b 8,(($\3>>8)&15),9,(($\3>>4)&15),10,0,(($\3)&15),0 dc.b 8,(($\4>>8)&15),9,(($\4>>4)&15),10,0,(($\4)&15),0 dc.b 8,(($\5>>8)&15),9,(($\5>>4)&15),10,0,(($\5)&15),0 dc.b 8,(($\6>>8)&15),9,(($\6>>4)&15),10,0,(($\6)&15),0 dc.b 8,(($\7>>8)&15),9,(($\7>>4)&15),10,0,(($\7)&15),0 dc.b 8,(($\8>>8)&15),9,(($\8>>4)&15),10,0,(($\8)&15),0 ENDM * snd_tab: rept 24*8 dc.l $08000900,$0a0 endr digi2 000,000,200,300,400,500,510,600 digi2 600,620,700,720,730,800,800,820 digi2 830,900,910,920,930,940,950,951 digi2 A00,A20,A30,A40,A50,A50,A52,A60 digi2 A62,A70,A71,B00,B10,B30,B40,B40 digi2 B50,B52,B60,B61,B70,B71,B72,B73 digi2 B80,B81,B83,B84,B90,C00,C20,C30 digi2 C40,C50,C51,C52,C60,C62,C70,C72 digi2 C73,C80,C80,C82,C83,C90,C90,C92 digi2 c93,c94,c95,c95,ca0,d00,d20,d30 digi2 d40,d50,d50,d52,d60,d62,d70,d71 digi2 d73,d74,d80,d82,d83,d90,d90,d92 digi2 d93,d94,d95,d95,da0,da1,da3,da4 digi2 da4,da5,da5,da6,da6,da7,da7,db0 digi2 db1,db2,db3,db4,db5,db5,db6,e00 digi2 e10,e30,e40,e41,e50,e52,e60,e61 digi2 e70,e71,e73,e74,e80,e81,e83,e84 digi2 e90,e92,e93,e94,e95,e95,ea0,ea1 digi2 ea3,ea4,ea4,ea5,ea5,ea6,ea6,ea7 digi2 ea7,ea7,eb0,eb2,eb3,eb4,eb5,eb5 digi2 eb5,eb6,eb6,eb7,eb7,eb7,eb8,eb8 digi2 eb8,eb8,eb9,ec0,ec1,ec3,ec4,ec4 digi2 ec5,f00,f10,f30,f40,f41,f50,f52 digi2 f60,f61,f70,f71,f73,f74,f80,f82 digi2 f83,f84,f90,f92,f93,f94,f95,f95 digi2 fa0,fa1,fa3,fa4,fa4,fa5,fa5,fa6 digi2 fa6,fa7,fa7,fb0,fb0,fb2,fb3,fb4 digi2 fb5,fb5,fb6,fb6,fb6,fb7,fb7,fb7 digi2 fb8,fb8,fb8,fb8,fb9,fc0,fc1,fc3 digi2 fc4,fc4,fc5,fc5,fc6,fc6,fc7,fc7 digi2 fc7,fc7,fc8,fc8,fc8,fc8,fc9,fc9 digi2 fc9,fc9,fc9,fc9,fca,fd0,fd1,fd3 rept 32*8 dc.l $080f090d,$0a000300 endr even snd_tab_end ;=9 EMULATOR END == prepare move.l workspace_end(pc),a6 movea.l samplestarts(pc),a0 movea.l end_of_samples(pc),a1 tostack move.w -(a1),d1 and.w #$fefe,d1 ;convert to 7 bit format move.w d1,-(a6) cmpa.l a0,a1 ; Move all samples to stack bgt.s tostack lea samplestarts(pc),a2 move.l save_module(pc),a1 ; Module ;lea data(pc),a1 movea.l (a2),a0 ; Start of samples movea.l a0,a5 ; Save samplestart in a5 moveq #30,d7 roop move.l a0,(a2)+ ; Sampleposition tst.w $2A(a1) beq.s samplok ; Len=0 -> no sample tst.w $2E(a1) ; Test repstrt bne.s repne ; Jump if not zero repeq move.w $2A(a1),d0 ; Length of sample move.w d0,d4 subq.w #1,d0 movea.l a0,a4 fromstk move.w (a6)+,(a0)+ ; Move all samples back from stack dbra d0,fromstk bra.s rep repne move.w $2E(a1),d0 move.w d0,d4 subq.w #1,d0 movea.l a6,a4 get1st move.w (a4)+,(a0)+ ; Fetch first part dbra d0,get1st adda.w $2A(a1),a6 ; Move a6 to next sample adda.w $2A(a1),a6 rep movea.l a0,a5 moveq #0,d1 toosmal movea.l a4,a3 move.w $30(a1),d0 subq.w #1,d0 moverep move.w (a3)+,(a0)+ ; Repeatsample addq.w #2,d1 dbra d0,moverep cmp.w #320,d1 ; Must be > 320 blt.s toosmal move.w #320/2-1,d2 last320 move.w (a5)+,(a0)+ ; Safety 320 bytes dbra d2,last320 done add.w d4,d4 move.w d4,$2A(a1) ; length move.w d1,$30(a1) ; Replen clr.w $2E(a1) samplok lea $1E(a1),a1 dbra d7,roop cmp.l workspace_end(pc),a0 bgt.s .nospac rts .nospac illegal end_of_samples DC.L 0 ;-6 Main replayrout -- init move.l save_module(pc),a0 ;lea data(pc),a0 lea $03B8(a0),a1 moveq #$7F,d0 moveq #0,d1 loop move.l d1,d2 subq.w #1,d0 lop2 move.b (a1)+,d1 cmp.b d2,d1 bgt.s loop dbra d0,lop2 addq.b #1,d2 lea samplestarts(pc),a1 asl.l #8,d2 asl.l #2,d2 add.l #$043C,d2 add.l a0,d2 movea.l d2,a2 moveq #$1E,d0 lop3 clr.l (a2) move.l a2,(a1)+ moveq #0,d1 move.w 42(a0),d1 add.l d1,d1 adda.l d1,a2 adda.l #$1E,a0 dbra d0,lop3 move.l a2,end_of_samples ; rts music move.l save_module(pc),a0 ;lea data(pc),a0 move.w counter(pc),beat_count addq.w #$01,counter move.w counter(pc),d0 cmp.w speed(pc),d0 blt.s nonew clr.w counter bra getnew nonew lea voice1(pc),a4 lea aud1lc(pc),a3 bsr checkcom lea voice2(pc),a4 lea aud2lc(pc),a3 bsr checkcom lea voice3(pc),a4 lea aud3lc(pc),a3 bsr checkcom lea voice4(pc),a4 lea aud4lc(pc),a3 bsr checkcom bra endr arpeggio moveq #0,d0 move.w counter(pc),d0 divs #$03,d0 swap d0 tst.w d0 beq.s arp2 cmp.w #$02,d0 beq.s arp1 moveq #0,d0 move.b $03(a4),d0 lsr.b #4,d0 bra.s arp3 arp1 moveq #0,d0 move.b $03(a4),d0 and.b #$0F,d0 bra.s arp3 arp2 move.w $10(a4),d2 bra.s arp4 arp3 add.w d0,d0 moveq #0,d1 move.w $10(a4),d1 lea periods(pc),a0 moveq #$24,d4 arploop move.w 0(a0,d0.w),d2 cmp.w (a0),d1 bge.s arp4 addq.l #2,a0 dbra d4,arploop rts arp4 move.w d2,$06(a3) rts getnew move.l save_module(pc),a0 ;lea data(pc),a0 lea $043C(a0),a0 lea -$043C+$0C(a0),a2 lea -$043C+$03B8(a0),a1 moveq #0,d0 move.l d0,d1 move.b songpos(pc),d0 move.w d0,song_position move.b 0(a1,d0.w),d1 asl.l #8,d1 asl.l #2,d1 add.w pattpos(pc),d1 clr.w dmacon lea aud1lc(pc),a3 lea voice1(pc),a4 bsr.s playvoice lea aud2lc(pc),a3 lea voice2(pc),a4 bsr.s playvoice lea aud3lc(pc),a3 lea voice3(pc),a4 bsr.s playvoice lea aud4lc(pc),a3 lea voice4(pc),a4 bsr.s playvoice bra setdma playvoice move.l 0(a0,d1.l),(a4) addq.l #4,d1 moveq #0,d2 move.b $02(a4),d2 and.b #$F0,d2 lsr.b #4,d2 move.b (a4),d0 and.b #$F0,d0 or.b d0,d2 tst.b d2 beq.s setregs moveq #0,d3 lea samplestarts(pc),a1 move.l d2,d4 subq.l #$01,d2 asl.l #2,d2 mulu #$1E,d4 move.l 0(a1,d2.l),$04(a4) move.w 0(a2,d4.l),$08(a4) move.w $02(a2,d4.l),$12(a4) move.w $04(a2,d4.l),d3 tst.w d3 beq.s noloop move.l $04(a4),d2 add.w d3,d3 add.l d3,d2 move.l d2,$0A(a4) move.w $04(a2,d4.l),d0 add.w $06(a2,d4.l),d0 move.w d0,8(a4) move.w $06(a2,d4.l),$0E(a4) move.w $12(a4),$08(a3) bra.s setregs noloop move.l $04(a4),d2 add.l d3,d2 move.l d2,$0A(a4) move.w $06(a2,d4.l),$0E(a4) move.w $12(a4),$08(a3) setregs move.w (a4),d0 and.w #$0FFF,d0 beq checkcom2 move.b $02(a4),d0 and.b #$0F,d0 cmp.b #$03,d0 bne.s setperiod bsr setmyport bra checkcom2 setperiod move.w (a4),$10(a4) andi.w #$0FFF,$10(a4) move.w $14(a4),d0 move.w d0,dmactrl clr.b $1B(a4) move.l $04(a4),(a3) move.w $08(a4),$04(a3) move.w $10(a4),d0 and.w #$0FFF,d0 move.w d0,$06(a3) move.w $14(a4),d0 or.w d0,dmacon bra checkcom2 setdma move.w dmacon(pc),d0 btst #0,d0 ;- beq.s wz_nch1 ; move.l aud1lc(pc),wiz1lc ; moveq #0,d1 ; moveq #0,d2 ; move.w aud1len(pc),d1 ; move.w voice1+$0E(pc),d2 ; add.l d2,d1 ; move.l d1,wiz1len ; move.w d2,wiz1rpt ; clr.w wiz1pos ; wz_nch1 btst #1,d0 ; beq.s wz_nch2 ; move.l aud2lc(pc),wiz2lc ; moveq #0,d1 ; moveq #0,d2 ; move.w aud2len(pc),d1 ; move.w voice2+$0E(pc),d2 ; add.l d2,d1 ; move.l d1,wiz2len ; move.w d2,wiz2rpt ; clr.w wiz2pos ; wz_nch2 btst #2,d0 ; beq.s wz_nch3 ; move.l aud3lc(pc),wiz3lc ; moveq #0,d1 ; moveq #0,d2 ; move.w aud3len(pc),d1 ; move.w voice3+$0E(pc),d2 ; add.l d2,d1 ; move.l d1,wiz3len ; move.w d2,wiz3rpt ; clr.w wiz3pos ; wz_nch3 btst #3,d0 ; beq.s wz_nch4 ; move.l aud4lc(pc),wiz4lc ; moveq #0,d1 ; moveq #0,d2 ; move.w aud4len(pc),d1 ; move.w voice4+$0E(pc),d2 ; add.l d2,d1 ; move.l d1,wiz4len ; move.w d2,wiz4rpt ; clr.w wiz4pos ;- wz_nch4 addi.w #$10,pattpos cmpi.w #$0400,pattpos bne.s endr nex clr.w pattpos clr.b break addq.b #1,songpos andi.b #$7F,songpos move.b songpos(pc),d1 move.l a0,-(a7) move.l save_module(pc),a0 cmp.b $03B6(a0),d1 bne.s no_ending move.b $03B7(a0),songpos no_ending: move.l (a7)+,a0 endr tst.b break bne.s nex rts setmyport move.w (a4),d2 and.w #$0FFF,d2 move.w d2,$18(a4) move.w $10(a4),d0 clr.b $16(a4) cmp.w d0,d2 beq.s clrport bge.s rt move.b #$01,$16(a4) rts clrport clr.w $18(a4) rt rts myport move.b $03(a4),d0 beq.s myslide move.b d0,$17(a4) clr.b $03(a4) myslide tst.w $18(a4) beq.s rt moveq #0,d0 move.b $17(a4),d0 tst.b $16(a4) bne.s mysub add.w d0,$10(a4) move.w $18(a4),d0 cmp.w $10(a4),d0 bgt.s myok move.w $18(a4),$10(a4) clr.w $18(a4) myok move.w $10(a4),$06(a3) rts mysub sub.w d0,$10(a4) move.w $18(a4),d0 cmp.w $10(a4),d0 blt.s myok move.w $18(a4),$10(a4) clr.w $18(a4) move.w $10(a4),$06(a3) rts vib move.b $03(a4),d0 beq.s vi move.b d0,$1A(a4) vi move.b $1B(a4),d0 lea sin(pc),a1 lsr.w #$02,d0 and.w #$1F,d0 moveq #0,d2 move.b 0(a1,d0.w),d2 move.b $1A(a4),d0 and.w #$0F,d0 mulu d0,d2 lsr.w #$06,d2 move.w $10(a4),d0 tst.b $1B(a4) bmi.s vibmin add.w d2,d0 bra.s vib2 vibmin sub.w d2,d0 vib2 move.w d0,$06(a3) move.b $1A(a4),d0 lsr.w #$02,d0 and.w #$3C,d0 add.b d0,$1B(a4) rts nop move.w $10(a4),$06(a3) rts checkcom move.w $02(a4),d0 and.w #$0FFF,d0 beq.s nop move.b $02(a4),d0 and.b #$0F,d0 tst.b d0 beq arpeggio cmp.b #$01,d0 beq.s portup cmp.b #$02,d0 beq portdown cmp.b #$03,d0 beq myport cmp.b #$04,d0 beq vib cmp.b #$05,d0 beq port_toneslide cmp.b #$06,d0 beq vib_toneslide move.w $10(a4),$06(a3) cmp.b #$0A,d0 beq.s volslide rts volslide moveq #0,d0 move.b $03(a4),d0 lsr.b #4,d0 tst.b d0 beq.s voldown add.w d0,$12(a4) cmpi.w #$40,$12(a4) bmi.s vol2 move.w #$40,$12(a4) vol2 move.w $12(a4),$08(a3) rts voldown moveq #0,d0 move.b $03(a4),d0 and.b #$0F,d0 sub.w d0,$12(a4) bpl.s vol3 clr.w $12(a4) vol3 move.w $12(a4),$08(a3) rts portup moveq #0,d0 move.b $03(a4),d0 sub.w d0,$10(a4) move.w $10(a4),d0 and.w #$0FFF,d0 cmp.w #$71,d0 bpl.s por2 andi.w #$F000,$10(a4) ori.w #$71,$10(a4) por2 move.w $10(a4),d0 and.w #$0FFF,d0 move.w d0,$06(a3) rts port_toneslide bsr myslide bra.s volslide vib_toneslide bsr vi bra.s volslide portdown clr.w d0 move.b $03(a4),d0 add.w d0,$10(a4) move.w $10(a4),d0 and.w #$0FFF,d0 cmp.w #$0358,d0 bmi.s por3 andi.w #$F000,$10(a4) ori.w #$0358,$10(a4) por3 move.w $10(a4),d0 and.w #$0FFF,d0 move.w d0,$06(a3) rts checkcom2 move.b $02(a4),d0 and.b #$0F,d0 cmp.b #$0D,d0 beq.s pattbreak cmp.b #$0B,d0 beq.s posjmp cmp.b #$0C,d0 beq.s setvol cmp.b #$0F,d0 beq.s setspeed rts pattbreak st break rts posjmp move.b $03(a4),d0 subq.b #$01,d0 move.b d0,songpos st break rts setvol moveq #0,d0 move.b $03(a4),d0 cmp.w #$40,d0 ble.s vol4 move.b #$40,$03(a4) vol4 move.b $03(a4),$09(a3) move.b $03(a4),$13(a4) rts setspeed cmpi.b #$1F,$03(a4) ble.s sets move.b #$1F,$03(a4) sets move.b $03(a4),d0 beq.s rts2 move.w d0,speed clr.w counter rts2 rts sin DC.B $00,$18,$31,$4A,$61,$78,$8D,$A1,$B4,$C5,$D4,$E0,$EB,$F4,$FA,$FD DC.B $FF,$FD,$FA,$F4,$EB,$E0,$D4,$C5,$B4,$A1,$8D,$78,$61,$4A,$31,$18 periods DC.W $0358,$0328,$02FA,$02D0,$02A6,$0280,$025C,$023A,$021A,$01FC,$01E0 DC.W $01C5,$01AC,$0194,$017D,$0168,$0153,$0140,$012E,$011D,$010D,$FE DC.W $F0,$E2,$D6,$CA,$BE,$B4,$AA,$A0,$97,$8F,$87 DC.W $7F,$78,$71,$00,$00 speed DC.W $06 counter DC.W $00 songpos DC.B $00 break DC.B $00 pattpos DC.W $00 dmacon DC.W $00 samplestarts DS.L $1F voice1 DS.W 10 DC.W $01 DS.W 3 voice2 DS.W 10 DC.W $02 DS.W 3 voice3 DS.W 10 DC.W $04 DS.W 3 voice4 DS.W 10 DC.W $08 DS.W 3 ds.l 30 user_stack: ;- ; The next three lines must follow each other! data INCBIN a:\module.mod ; name of module DS.l 30/4 ; Workspace workspc DS.W 1 ;- vtab DS.B 65*256 vtabend ds.b 256 D; This tracker is the same as 'tracker.s' but. ; this player uses NO permanent registers! ; ...and it is only very slightly slower. ; Same instructions as the other player, however with this ; player you must NOT use the soundchip yourself, e.g. for disk access ; However this program is very useful for tracker + 3D routines at ; the same time. ; No spread again, but use it as much (or as little!) as you like ; Enjoy. TAT ;- Cut here -; ; Rout to test replay. May omitted. ; final_stos=0 ifeq final_stos clr.l -(sp) move.w #$20,-(sp) trap #1 addq.w #6,sp move.l d0,-(sp) lea data,a0 lea workspc,a1 moveq #1,d0 bsr playback move.l #my_play_vbl,$70.w move.w #$2300,sr waitspc: btst #0,$FC00.w beq.s waitspc cmpi.b #$B9,$FC02.w bne.s waitspc * Fade music off: ;fading: ; moveq #3,d0 ;.wait1 bsr wait_vbl ; dbf d0,.wait1 ; subq.w #1,playback+8 ; bne fading move.w #$2700,sr lea data,a0 lea workspc,a1 moveq #0,d0 bsr playback+0 move.w #$20,-(sp) trap #1 addq.w #6,sp illegal pea $4C0 trap #1 endc wait_vbl: clr.l $466.w .wv tst.l $466.w beq .wv rts my_play_vbl: addq.l #1,$466.w jsr playback+4 rte ;-PLAYBACK ROUTINE- ; Call with: ; a0: start of module .l ; a1: END of workspace .l ; d0: 0=stop <>0 = start .b luvly pad_no equ 5 MVOL EQU $40 ; >= $40 ($60 recommended) FREQ EQU 1 ; 0=6.144, 1=8.192, 2=12.288 ; 3=16.384 4=10.240 ; IMPORTANT! THE VALUE OF 'LEN' *MUST* BE ODD IFEQ FREQ A_DATA EQU 40 ; 6.144 D_DATA EQU 164 PARTS EQU 3-1 LEN EQU 41 INC EQU $02469BC0 ; 3579546/6144*65536 ELSEIF IFEQ FREQ-1 A_DATA EQU 30 ; 8.192 D_DATA EQU 123 PARTS EQU 4-1 LEN EQU 41 INC EQU $01B4F4D0 ; 3579546/8192*65536 ELSEIF IFEQ FREQ-2 A_DATA EQU 20 ; 12.288 D_DATA EQU 164 PARTS EQU 6-1 5 LEN EQU 41 41 INC EQU $01234DE0 ; 3579546/12288*65536 ELSEIF IFEQ FREQ-3 A_DATA EQU 15 ; 16.384 D_DATA EQU 123 PARTS EQU 8-1 LEN EQU 41 INC EQU $00DA7A68 ; 3579546/16384*65536 ELSEIF IFEQ FREQ-4 A_DATA EQU 24 ; 10.240 D_DATA EQU 123 PARTS EQU 5-1 LEN EQU 41 INC EQU $015D90A6 ; 3579546/10240*65536 ELSEIF FAIL END ENDC ENDC ENDC ENDC ENDC playback: jmp start(pc) jmp play_vbl(pc) master_volume: dc.w 64 song_position: dc.w 0 beat_count: dc.w 0 ;- Cut here -; start: tst.b d0 bne muson bra musoff ;-4 Interrupts on/off -- muson move.l a0,save_module move.l a1,workspace_end bsr vol ; Calculate volume tables bsr incrcal ; Calculate tonetables bsr clearym ; Clear soundchip registers jsr init ; Initialize music jsr prepare ; Prepare samples move #$2700,sr move.l $FA06.w,s06 ; Save MFP registers move.l $FA12.w,s12 move.b $FA1D.w,s1d move.l #$FF00FF10,$FA06.w ; Timer D on move.l #$FF00FF10,$FA12.w bclr #3,$FA17.w ; Autovectors clr.b $FA1D.w move.b #A_DATA,$FA25.w move.b #$02,$FA1D.w move.l $0110.w,oldtimd move.l $70.w,oldvbl move.l qp1(pc),$0110.w move.l #dummy_vbl,$70.w ;lea sample1(pc),a6 ;lea $f8800.w,a5 move #$2300,sr rts musoff move #$2700,sr move.l oldtimd(pc),$0110.w ; Restore vectors move.l oldvbl(pc),$70.w move.l s06(pc),$FA06.w move.l s12(pc),$FAC12.w move.b s1d(pc),$FA1D.w move #$2300,sr rts s06 DC.L 0 s12 DC.L 0 s1d DC.B 0 EVEN oldtimd DC.L 0 oldvbl dc.l 0 dummy_vbl: rte ;-, Clear soundchip registers -- clearym move #$2700,sr moveq #$0A,d0 ._1 move.b d0,$F8800.w clr.b $F8802.w dbra d0,._1 ; Clear soundchip registers clr.b $F8800.w clr.b $F8802.w move.b #7,$F8800.w move.b #$FF,$F8802.w move.b #$a,$f8800.w move.b #$4,$f8802.w move.L #$08080,$f8800.w ;be careful! rts ;-/ Calculate volume table -- vol move.l #vtab+256,d1 sub.b d1,d1 move.l d1,a0 move.l d1,save_vtab lea 65*256(a0),a0 moveq #64,d0 ; 0-64 .ploop move.w #127,d1 .mloop move.w d1,d2 add.w d2,d2 ext.w d2 muls d0,d2 divs #MVOL,d2 ; <- Master volume add.b #$80,d2 ; sign it ;AND.W #$FF,D2 ;LSR.w #1,d2 ;convert to 7 bit ;lsl.w #1,d2 ; times 2 for table ; Boils down to. AND.W #$FE,D2 ;! move.w d2,-(a0) dbra d1,.mloop dbra d0,.ploop rts save_module: dc.l 0 workspace_end: dc.l 0 save_vtab: dc.l 0 save_usp: dc.l 0 save_usp2: dc.l 0 reached: dc.l 0 debug aid! ;-, Calculate increment-table -- incrcal lea stab(pc),a0 move.w #$30,d1 move.w #$039F-$30,d0 move.l #INC,d2 recalc swap d2 moveq #0,d3 move.w d2,d3 divu d1,d3 move.w d3,d4 swap d4 swap d2 move.w d2,d3 divu d1,d3 move.w d3,d4 move.l d4,(a0)+ addq.w #1,d1 dbra d0,recalc rts itab DS.L $30 stab DS.L $03A0-$30 ;-4 Samplecalculating -- play_vbl: move #$2500,sr clr.b $FA1D.w move.b #A_DATA,$FA25.w move.b #$02,$FA1D.w movem.l d0-d7/a0-a6,-(sp) move.l qp1(pc),d0 move.l qp2(pc),qp1 move.l d0,qp2 move.b #8,$f8800.w ;select channel 1 move.l qp1(pc),$110.w lea sample_table(pc),a5 move.l d0,a6 lea wiz1lc(pc),a0 lea big_routine+2(pc),a1 bsr self_modify lea wiz2lc(pc),a0 lea big_routine+10(pc),a1 bsr self_modify lea wiz3lc(pc),a0 lea big_routine+18(pc),a1 bsr self_modify lea wiz4lc(pc),a0 lea big_routine+26(pc),a1 bsr self_modify ; Set up registers for big_routine: ; Ones needed ; d0=volume 1 ; d1=volume 2 ; d2=volume 3 ; d3=volume 4 lea volume_handle(pc),a0 add.w master_volume(pc),a0 add.w master_volume(pc),a0 moveq #0,d0 moveq #0,d1 moveq #0,d2 moveq #0,d3 move.w aud1vol(pc),d0 add.w d0,d0 move.w (a0,d0.w),d0 add.l save_vtab(pc),d0 move.w aud2vol(pc),d1 add.w d1,d1 move.w (a0,d1.w),d1 add.l save_vtab(pc),d1 move.w aud3vol(pc),d2 add.w d2,d2 move.w (a0,d2.w),d2 add.l save_vtab(pc),d2 move.w aud4vol(pc),d3 add.w d3,d3 move.w (a0,d3.w),d3 add.l save_vtab(pc),d3 move.w #PARTS,d6 ; a0=sample 1 + position ; a1=sample 1 + position ; a2=sample 1 + position ; a3=sample 1 + position mainloop move.l wiz1lc(pc),a0 add.w wiz1pos(pc),a0 move.l wiz2lc(pc),a1 add.w wiz2pos(pc),a1 move.l wiz3lc(pc),a2 add.w wiz3pos(pc),a2 move.l wiz4lc(pc),a3 add.w wiz4pos(pc),a3 bsr do_big_routine movem.l d0-d3,-(a7) ; Add on movements, ; then check for repeats: moveq #0,d0 moveq #0,d1 moveq #0,d2 ; Voice 1 move.w wiz1pos(pc),d0 move.w wiz1frc(pc),d1 move.w bigadd1(pc),d2 add.w fracadd1(pc),d1 ;add fractions first addx.w d2,d0 cmp.l wiz1len(pc),d0 blt.s .norep1 sub.w wiz1rpt(pc),d0 .norep1 move.w d0,wiz1pos move.w d1,wiz1frc ; Voice 2 move.w wiz2pos(pc),d0 move.w wiz2frc(pc),d1 move.w bigadd2(pc),d2 add.w fracadd2(pc),d1 ;add fractions first addx.w d2,d0 cmp.l wiz2len(pc),d0 blt.s .norep2 sub.w wiz2rpt(pc),d0 .norep2 move.w d0,wiz2pos move.w d1,wiz2frc ; Voice 3 move.w wiz3pos(pc),d0 move.w wiz3frc(pc),d1 move.w bigadd3(pc),d2 add.w fracadd3(pc),d1 ;add fractions first addx.w d2,d0 cmp.l wiz3len(pc),d0 blt.s .norep3 sub.w wiz3rpt(pc),d0 .norep3 move.w d0,wiz3pos move.w d1,wiz3frc ; Voice 4 move.w wiz4pos(pc),d0 move.w wiz4frc(pc),d1 move.w bigadd4(pc),d2 add.w fracadd4(pc),d1 ;add fractions first addx.w d2,d0 cmp.l wiz4len(pc),d0 blt.s .norep4 sub.w wiz4rpt(pc),d0 .norep4 move.w d0,wiz4pos move.w d1,wiz4frc movem.l (a7)+,d0-d3 dbf d6,mainloop bsr music not.w $f8240.w not.w $f8240.w movem.l (a7)+,d0-d7/a0-a6 rts volume_handle: dcb.w 64,0 x set 0 rept 65 dc.w x x set x+256 endr ;-Paula emulat9or- do_big_routine: big_routine: ; Self modifies at +2 +10 +18 +26 ; Main rout is 34 bytes in length big_2: move.b 1(a0),d0 move.l d0,a4 move.w (a4),d4 move.b 1(a1),d1 move.l d1,a4 add.w (a4),d4 move.b 1(a2),d2 move.l d2,a4 add.w (a4),d4 move.b 1(a3),d3 move.l d3,a4 add.w (a4),d4 move.w (a5,d4.w),d4 ;get samtab data move.w d4,2(a6) ;MUST have a 0 here... move.b d4,10(a6) offie set 22 big_1: big_length set big_1-big_2 rept (LEN-1)/2 move.b 1(a0),d0 move.l d0,a4 move.w (a4),d4 move.b 1(a1),d1 move.l d1,a4 add.w (a4),d4 move.b 1(a2),d2 move.l d2,a4 add.w (a4),d4 move.b 1(a3),d3 move.l d3,a4 add.w (a4),d4 move.w (a5,d4.w),d4 ;get samtab data move.w d4,offie+2(a6) move.b d4,offie+10(a6) offie set offie+22 move.b 1(a0),d0 move.l d0,a4 move.w (a4),d4 move.b 1(a1),d1 move.l d1,a4 add.w (a4),d4 move.b 1(a2),d2 move.l d2,a4 add.w (a4),d4 move.b 1(a3),d3 move.l d3,a4 add.w (a4),d4 move.w (a5,d4.w),d4 ;get samtab data move.w d4,offie+10(a6) move.b d4,offie+2(a6) offie set offie+22 endr lea offie(a6),a6 rts ;-Sets up 'Paula'- ; Call with a0=voice data ; a1=area start of self_modify self_modify: move.w aud1per-wiz1lc(a0),d2 add.w d2,d2 add.w d2,d2 lea itab(pc),a2 move.w 2(a2,d2.w),d3 ;d3=frac add move.w (a2,d2.w),d2 ;d2=whole add moveq #0,d1 ;d1=frac pos moveq #0,d0 ;d0=whole pos ; Put it in there: o set 0 rept LEN add.w d3,d1 addx.w d2,d0 move.w d0,o(a1) o set o+big_length endr move.w d0,bigadd1-wiz1lc(a0) move.w d1,fracadd1-wiz1lc(a0) rts ;-, Hardware-registers & data -- wiz1lc DC.L dummy wiz1len DC.L 320 wiz1rpt DC.W 320 wiz1pos DC.W 0 wiz1frc DC.W 0 aud1lc DC.L dummy aud1len DC.W 0 aud1per DC.W 0 aud1vol DC.W 0 DS.W 3 bigadd1 dc.w 0 fracadd1 dc.w 0 wiz2lc DC.L dummysam wiz2len DC.L 320 wiz2rpt DC.W 320 wiz2pos DC.W 0 wiz2frc DC.W 0 aud2lc DC.L dummy aud2len DC.W 0 aud2per DC.W 0 aud2vol DC.W 0 DS.W 3 bigadd2 dc.w 0 fracadd2 dc.w 0 wiz3lc DC.L dummysam wiz3len DC.L 320 wiz3rpt DC.W 320 wiz3pos DC.W 0 wiz3frc DC.W 0 aud3lc DC.L dummy aud3len DC.W 0 aud3per DC.W 0 aud3vol DC.W 0 DS.W 3 bigadd3 dc.w 0 fracadd3 dc.w 0 wiz4lc DC.L dummysam wiz4len DC.L 320 wiz4rpt DC.W 320 wiz4pos DC.W 0 wiz4frc DC.W 0 aud4lc DC.L dummy aud4len DC.W 0 aud4per DC.W 0 aud4vol DC.W 0 ds.w 3 ;what the hell is this for??? bigadd4 dc.w 0 fracadd4 dc.w 0 dummy DC.L 0 dummysam dcb.w 640,$0 dmactrl DC.W 0 ;-3 Playback-interrupt -- ;playvec: ; move.w (a6)+,d7 ; move.l snd_tab+4(pc,d7.w),(a5) ; move.l snd_tab(pc,d7.w),d7 ; movep.l d7,0(a5) ; rte ;-- Sound data for soundchip -- digi2 MACRO dc.b (($\1>>8)&15),(($\1>>4)&15) dc.b (($\2>>8)&15),(($\2>>4)&15) dc.b (($\3>>8)&15),(($\3>>4)&15) dc.b (($\4>>8)&15),(($\4>>4)&15) dc.b (($\5>>8)&15),(($\5>>4)&15) dc.b (($\6>>8)&15),(($\6>>4)&15) dc.b (($\7>>8)&15),(($\7>>4)&15) dc.b (($\8>>8)&15),(($\8>>4)&15) ENDM * sample_table: snd_tab: rept 24*8 dc.w 0 endr digi2 000,000,200,300,400,500,510,600 digi2 600,620,700,720,730,800,800,820 digi2 830,900,910,920,930,940,950,951 digi2 A00,A20,A30,A40,A50,A50,A52,A60 digi2 A62,A70,A71,B00,B10,B30,B40,B40 digi2 B50,B52,B60,B61,B70,B71,B72,B73 digi2 B80,B81,B83,B84,B90,C00,C20,C30 digi2 C40,C50,C51,C52,C60,C62,C70,C72 digi2 C73,C80,C80,C82,C83,C90,C90,C92 digi2 c93,c94,c95,c95,ca0,d00,d20,d30 digi2 d40,d50,d50,d52,d60,d62,d70,d71 digi2 d73,d74,d80,d82,d83,d90,d90,d92 digi2 d93,d94,d95,d95,da0,da1,da3,da4 digi2 da4,da5,da5,da6,da6,da7,da7,db0 digi2 db1,db2,db3,db4,db5,db5,db6,e00 digi2 e10,e30,e40,e41,e50,e52,e60,e61 digi2 e70,e71,e73,e74,e80,e81,e83,e84 digi2 e90,e92,e93,e94,e95,e95,ea0,ea1 digi2 ea3,ea4,ea4,ea5,ea5,ea6,ea6,ea7 digi2 ea7,ea7,eb0,eb2,eb3,eb4,eb5,eb5 digi2 eb5,eb6,eb6,eb7,eb7,eb7,eb8,eb8 digi2 eb8,eb8,eb9,ec0,ec1,ec3,ec4,ec4 digi2 ec5,f00,f10,f30,f40,f41,f50,f52 digi2 f60,f61,f70,f71,f73,f74,f80,f82 digi2 f83,f84,f90,f92,f93,f94,f95,f95 digi2 fa0,fa1,fa3,fa4,fa4,fa5,fa5,fa6 digi2 fa6,fa7,fa7,fb0,fb0,fb2,fb3,fb4 digi2 fb5,fb5,fb6,fb6,fb6,fb7,fb7,fb7 digi2 fb8,fb8,fb8,fb8,fb9,fc0,fc1,fc3 digi2 fc4,fc4,fc5,fc5,fc6,fc6,fc7,fc7 digi2 fc7,fc7,fc8,fc8,fc8,fc8,fc9,fc9 digi2 fc9,fc9,fc9,fc9,fca,fd0,fd1,fd3 rept 32*8 dc.w $0f0d endr even snd_tab_end ;=9 EMULATOR END == prepare bsr prepare_timers move.l workspace_end(pc),a6 movea.l samplestarts(pc),a0 movea.l end_of_samples(pc),a1 tostack move.w -(a1),d1 and.w #$fefe,d1 ;convert to 7 bit format move.w d1,-(a6) cmpa.l a0,a1 ; Move all samples to stack bgt.s tostack lea samplestarts(pc),a2 move.l save_module(pc),a1 ; Module ;lea data(pc),a1 movea.l (a2),a0 ; Start of samples movea.l a0,a5 ; Save samplestart in a5 moveq #30,d7 roop move.l a0,(a2)+ ; Sampleposition tst.w $2A(a1) beq.s samplok ; Len=0 -> no sample tst.w $2E(a1) ; Test repstrt bne.s repne ; Jump if not zero repeq move.w $2A(a1),d0 ; Length of sample move.w d0,d4 subq.w #1,d0 movea.l a0,a4 fromstk move.w (a6)+,(a0)+ ; Move all samples back from stack dbra d0,fromstk bra.s rep repne move.w $2E(a1),d0 move.w d0,d4 subq.w #1,d0 movea.l a6,a4 get1st move.w (a4)+,(a0)+ ; Fetch first part dbra d0,get1st adda.w $2A(a1),a6 ; Move a6 to next sample adda.w $2A(a1),a6 rep movea.l a0,a5 moveq #0,d1 toosmal movea.l a4,a3 move.w $30(a1),d0 subq.w #1,d0 moverep move.w (a3)+,(a0)+ ; Repeatsample addq.w #2,d1 dbra d0,moverep cmp.w #320,d1 ; Must be > 320 blt.s toosmal move.w #320/2-1,d2 last320 move.w (a5)+,(a0)+ ; Safety 320 bytes dbra d2,last320 done add.w d4,d4 move.w d4,$2A(a1) ; length move.w d1,$30(a1) ; Replen clr.w $2E(a1) samplok lea $1E(a1),a1 dbra d7,roop cmp.l workspace_end(pc),a0 bgt.s .nospac rts .nospac illegal end_of_samples DC.L 0 ;-6 Main replayrout -- init move.l save_module(pc),a0 ;lea data(pc),a0 lea $03B8(a0),a1 moveq #$7F,d0 moveq #0,d1 loop move.l d1,d2 subq.w #1,d0 lop2 move.b (a1)+,d1 cmp.b d2,d1 bgt.s loop dbra d0,lop2 addq.b #1,d2 lea samplestarts(pc),a1 asl.l #8,d2 asl.l #2,d2 add.l #$043C,d2 add.l a0,d2 movea.l d2,a2 moveq #$1E,d0 lop3 clr.l (a2) move.l a2,(a1)+ moveq #0,d1 move.w 42(a0),d1 add.l d1,d1 adda.l d1,a2 adda.l #$1E,a0 dbra d0,lop3 move.l a2,end_of_samples ; rts music move.l save_module(pc),a0 ;lea data(pc),a0 move.w counter(pc),beat_count addq.w #$01,counter move.w counter(pc),d0 cmp.w speed(pc),d0 blt.s nonew clr.w counter bra getnew nonew lea voice1(pc),a4 lea aud1lc(pc),a3 bsr checkcom lea voice2(pc),a4 lea aud2lc(pc),a3 bsr checkcom lea voice3(pc),a4 lea aud3lc(pc),a3 bsr checkcom lea voice4(pc),a4 lea aud4lc(pc),a3 bsr checkcom bra endr arpeggio moveq #0,d0 move.w counter(pc),d0 divs #$03,d0 swap d0 tst.w d0 beq.s arp2 cmp.w #$02,d0 beq.s arp1 moveq #0,d0 move.b $03(a4),d0 lsr.b #4,d0 bra.s arp3 arp1 moveq #0,d0 move.b $03(a4),d0 and.b #$0F,d0 bra.s arp3 arp2 move.w $10(a4),d2 bra.s arp4 arp3 add.w d0,d0 moveq #0,d1 move.w $10(a4),d1 lea periods(pc),a0 moveq #$24,d4 arploop move.w 0(a0,d0.w),d2 cmp.w (a0),d1 bge.s arp4 addq.l #2,a0 dbra d4,arploop rts arp4 move.w d2,$06(a3) rts getnew move.l save_module(pc),a0 ;lea data(pc),a0 lea $043C(a0),a0 lea -$043C+$0C(a0),a2 lea -$043C+$03B8(a0),a1 moveq #0,d0 move.l d0,d1 move.b songpos(pc),d0 move.w d0,song_position move.b 0(a1,d0.w),d1 asl.l #8,d1 asl.l #2,d1 add.w pattpos(pc),d1 clr.w dmacon lea aud1lc(pc),a3 lea voice1(pc),a4 bsr.s playvoice lea aud2lc(pc),a3 lea voice2(pc),a4 bsr.s playvoice lea aud3lc(pc),a3 lea voice3(pc),a4 bsr.s playvoice lea aud4lc(pc),a3 lea voice4(pc),a4 bsr.s playvoice bra setdma playvoice move.l 0(a0,d1.l),(a4) addq.l #4,d1 moveq #0,d2 move.b $02(a4),d2 and.b #$F0,d2 lsr.b #4,d2 move.b (a4),d0 and.b #$F0,d0 or.b d0,d2 tst.b d2 beq.s setregs moveq #0,d3 lea samplestarts(pc),a1 move.l d2,d4 subq.l #$01,d2 asl.l #2,d2 mulu #$1E,d4 move.l 0(a1,d2.l),$04(a4) move.w 0(a2,d4.l),$08(a4) move.w $02(a2,d4.l),$12(a4) move.w $04(a2,d4.l),d3 tst.w d3 beq.s noloop move.l $04(a4),d2 add.w d3,d3 add.l d3,d2 move.l d2,$0A(a4) move.w $04(a2,d4.l),d0 add.w $06(a2,d4.l),d0 move.w d0,8(a4) move.w $06(a2,d4.l),$0E(a4) move.w $12(a4),$08(a3) bra.s setregs noloop move.l $04(a4),d2 add.l d3,d2 move.l d2,$0A(a4) move.w $06(a2,d4.l),$0E(a4) move.w $12(a4),$08(a3) setregs move.w (a4),d0 and.w #$0FFF,d0 beq checkcom2 move.b $02(a4),d0 and.b #$0F,d0 cmp.b #$03,d0 bne.s setperiod bsr setmyport bra checkcom2 setperiod move.w (a4),$10(a4) andi.w #$0FFF,$10(a4) move.w $14(a4),d0 move.w d0,dmactrl clr.b $1B(a4) move.l $04(a4),(a3) move.w $08(a4),$04(a3) move.w $10(a4),d0 and.w #$0FFF,d0 move.w d0,$06(a3) move.w $14(a4),d0 or.w d0,dmacon bra checkcom2 setdma move.w dmacon(pc),d0 btst #0,d0 ;- beq.s wz_nch1 ; move.l aud1lc(pc),wiz1lc ; moveq #0,d1 ; moveq #0,d2 ; move.w aud1len(pc),d1 ; move.w voice1+$0E(pc),d2 ; add.l d2,d1 ; move.l d1,wiz1len ; move.w d2,wiz1rpt ; clr.w wiz1pos ; wz_nch1 btst #1,d0 ; beq.s wz_nch2 ; move.l aud2lc(pc),wiz2lc ; moveq #0,d1 ; moveq #0,d2 ; move.w aud2len(pc),d1 ; move.w voice2+$0E(pc),d2 ; add.l d2,d1 ; move.l d1,wiz2len ; move.w d2,wiz2rpt ; clr.w wiz2pos ; wz_nch2 btst #2,d0 ; beq.s wz_nch3 ; move.l aud3lc(pc),wiz3lc ; moveq #0,d1 ; moveq #0,d2 ; move.w aud3len(pc),d1 ; move.w voice3+$0E(pc),d2 ; add.l d2,d1 ; move.l d1,wiz3len ; move.w d2,wiz3rpt ; clr.w wiz3pos ; wz_nch3 btst #3,d0 ; beq.s wz_nch4 ; move.l aud4lc(pc),wiz4lc ; moveq #0,d1 ; moveq #0,d2 ; move.w aud4len(pc),d1 ; move.w voice4+$0E(pc),d2 ; add.l d2,d1 ; move.l d1,wiz4len ; move.w d2,wiz4rpt ; clr.w wiz4pos ;- wz_nch4 addi.w #$10,pattpos cmpi.w #$0400,pattpos bne.s endr nex clr.w pattpos clr.b break addq.b #1,songpos andi.b #$7F,songpos move.b songpos(pc),d1 move.l a0,-(a7) move.l save_module(pc),a0 cmp.b $03B6(a0),d1 bne.s no_ending move.b $03B7(a0),songpos no_ending: move.l (a7)+,a0 endr tst.b break bne.s nex rts setmyport move.w (a4),d2 and.w #$0FFF,d2 move.w d2,$18(a4) move.w $10(a4),d0 clr.b $16(a4) cmp.w d0,d2 beq.s clrport bge.s rt move.b #$01,$16(a4) rts clrport clr.w $18(a4) rt rts myport move.b $03(a4),d0 beq.s myslide move.b d0,$17(a4) clr.b $03(a4) myslide tst.w $18(a4) beq.s rt moveq #0,d0 move.b $17(a4),d0 tst.b $16(a4) bne.s mysub add.w d0,$10(a4) move.w $18(a4),d0 cmp.w $10(a4),d0 bgt.s myok move.w $18(a4),$10(a4) clr.w $18(a4) myok move.w $10(a4),$06(a3) rts mysub sub.w d0,$10(a4) move.w $18(a4),d0 cmp.w $10(a4),d0 blt.s myok move.w $18(a4),$10(a4) clr.w $18(a4) move.w $10(a4),$06(a3) rts vib move.b $03(a4),d0 beq.s vi move.b d0,$1A(a4) vi move.b $1B(a4),d0 lea sin(pc),a1 lsr.w #$02,d0 and.w #$1F,d0 moveq #0,d2 move.b 0(a1,d0.w),d2 move.b $1A(a4),d0 and.w #$0F,d0 mulu d0,d2 lsr.w #$06,d2 move.w $10(a4),d0 tst.b $1B(a4) bmi.s vibmin add.w d2,d0 bra.s vib2 vibmin sub.w d2,d0 vib2 move.w d0,$06(a3) move.b $1A(a4),d0 lsr.w #$02,d0 and.w #$3C,d0 add.b d0,$1B(a4) rts nop move.w $10(a4),$06(a3) rts checkcom move.w $02(a4),d0 and.w #$0FFF,d0 beq.s nop move.b $02(a4),d0 and.b #$0F,d0 tst.b d0 beq arpeggio cmp.b #$01,d0 beq.s portup cmp.b #$02,d0 beq portdown cmp.b #$03,d0 beq myport cmp.b #$04,d0 beq vib cmp.b #$05,d0 beq port_toneslide cmp.b #$06,d0 beq vib_toneslide move.w $10(a4),$06(a3) cmp.b #$0A,d0 beq.s volslide rts volslide moveq #0,d0 move.b $03(a4),d0 lsr.b #4,d0 tst.b d0 beq.s voldown add.w d0,$12(a4) cmpi.w #$40,$12(a4) bmi.s vol2 move.w #$40,$12(a4) vol2 move.w $12(a4),$08(a3) rts voldown moveq #0,d0 move.b $03(a4),d0 and.b #$0F,d0 sub.w d0,$12(a4) bpl.s vol3 clr.w $12(a4) vol3 move.w $12(a4),$08(a3) rts portup moveq #0,d0 move.b $03(a4),d0 sub.w d0,$10(a4) move.w $10(a4),d0 and.w #$0FFF,d0 cmp.w #$71,d0 bpl.s por2 andi.w #$F000,$10(a4) ori.w #$71,$10(a4) por2 move.w $10(a4),d0 and.w #$0FFF,d0 move.w d0,$06(a3) rts port_toneslide bsr myslide bra.s volslide vib_toneslide bsr vi bra.s volslide portdown clr.w d0 move.b $03(a4),d0 add.w d0,$10(a4) move.w $10(a4),d0 and.w #$0FFF,d0 cmp.w #$0358,d0 bmi.s por3 andi.w #$F000,$10(a4) ori.w #$0358,$10(a4) por3 move.w $10(a4),d0 and.w #$0FFF,d0 move.w d0,$06(a3) rts checkcom2 move.b $02(a4),d0 and.b #$0F,d0 cmp.b #$0D,d0 beq.s pattbreak cmp.b #$0B,d0 beq.s posjmp cmp.b #$0C,d0 beq.s setvol cmp.b #$0F,d0 beq.s setspeed rts pattbreak st break rts posjmp move.b $03(a4),d0 subq.b #$01,d0 move.b d0,songpos st break rts setvol moveq #0,d0 move.b $03(a4),d0 cmp.w #$40,d0 ble.s vol4 move.b #$40,$03(a4) vol4 move.b $03(a4),$09(a3) move.b $03(a4),$13(a4) rts setspeed cmpi.b #$1F,$03(a4) ble.s sets move.b #$1F,$03(a4) sets move.b $03(a4),d0 beq.s rts2 move.w d0,speed clr.w counter rts2 rts sin DC.B $00,$18,$31,$4A,$61,$78,$8D,$A1,$B4,$C5,$D4,$E0,$EB,$F4,$FA,$FD DC.B $FF,$FD,$FA,$F4,$EB,$E0,$D4,$C5,$B4,$A1,$8D,$78,$61,$4A,$31,$18 periods DC.W $0358,$0328,$02FA,$02D0,$02A6,$0280,$025C,$023A,$021A,$01FC,$01E0 DC.W $01C5,$01AC,$0194,$017D,$0168,$0153,$0140,$012E,$011D,$010D,$FE DC.W $F0,$E2,$D6,$CA,$BE,$B4,$AA,$A0,$97,$8F,$87 DC.W $7F,$78,$71,$00,$00 speed DC.W $06 counter DC.W $00 songpos DC.B $00 break DC.B $00 pattpos DC.W $00 dmacon DC.W $00 samplestarts DS.L $1F voice1 DS.W 10 DC.W $01 DS.W 3 voice2 DS.W 10 DC.W $02 DS.W 3 voice3 DS.W 10 DC.W $04 DS.W 3 voice4 DS.W 10 DC.W $08 DS.W 3 ds.l 30 user_stack: * No register additions * qp1 dc.l quick_play qp2 dc.l quick_play2 LEN2=LEN*(PARTS+1) prepare_timers: bsr shunt_timers move.l qp1(pc),a2 move.w #LEN2-2,d0 bsr fill_in move.l qp2(pc),a2 move.w #LEN2-2,d0 bsr fill_in rts fill_in lea 22(a2),a0 lea 16(a2),a1 .write_in: move.l a0,d1 move.w d1,(a1) write in lower word only lea 22(a0),a0 lea 22(a1),a1 dbf d0,.write_in rts ;Make sure timers do not cross a 64K boundary: ;If either of the sets are, they are shunted ;to quick_play_end and onwards... shunt_timers: move.l #quick_play,d0 move.l #quick_play2,d1 clr.w d0 clr.w d1 cmp.l d0,d1 beq.s .ok_then lea quick_play(pc),a0 lea quick_play_end(pc),a1 move.w #(quick_play2-quick_play)/2-1,d0 .copy: move.w (a0)+,(a1)+ dbf d0,.copy move.l #quick_play_end,qp1 rts .ok_then: move.l #quick_play2,d0 move.l #quick_play_end,d1 and.l #$f0,d0 and.l #$f0,d1 cmp.l d0,d1 beq.s .ok_then2 lea quick_play2(pc),a0 lea quick_play_end(pc),a1 move.w #(quick_play_end-quick_play2)/2-1,d0 .copy2: move.w (a0)+,(a1)+ dbf d0,.copy2 move.l #quick_play_end,qp2 .ok_then2: rts quick_play: rept (LEN2+1/2)-1 move.l #$0900,$f8802.w move.w #$0,$f8802.w move.w #$1234,$112.w rte move.l #$0800,$f8802.w move.w #$0,$f8802.w move.w #$1234,$112.w rte endr move.l #$0900,$f8802.w move.w #$0,$f8802.w move.w #$1234,$112.w rte move.l #$0800,$f8802.w move.w #$0,$f8802.w rte quick_play2: rept (LEN2+1/2)-1 move.l #$0900,$f8802.w move.w #$0,$f8802.w move.w #$1234,$112.w rte move.l #$0800,$f8802.w move.w #$0,$f8802.w move.w #$1234,$112.w rte endr move.l #$0900,$f8802.w move.w #$0,$f8802.w move.w #$1234,$112.w rte move.l #$0800,$f8802.w move.w #$0,$f8802.w rte quick_play_end: ; This line must be here, nowhere else! ds.w (quick_play2-quick_play)/2+2 ;- data INCBIN b:\modules\powercat.mod DS.l 30/4 ; Workspace workspc DS.W 1 ;- vtab DS.B 65*256 vtabend ds.b 256  0@P"3DUww  @+@ _P+TX-P ?yV^!νC? z:Bz?P@O?k ] `0@p?`@?&&%LK4y09 >1/  /Brb}5@?ɋ|*ۇD'?&#WL^Pxp ?Q@#>$D %s'P/cYpe@30>ua~c||x?x1Tȇ?Ls3hk@0>0c|8@k@{/oH_@0>c|8@[0s/|8@0>lc|@¯0e 0@P|(K@0>a|@KWG_ 8?I|h@0>a|@F /|`@@4:viot@E?+Co@_2 o |`@@2@< Udy?@ު*&P~\A  |`@4@: hu?@뿡WF_.y-A P,]H@6@8 lq?@:fn~u /l= @6`8el`q1@H?gWk-kp:_ Pl=@@6 8@ mq@7h} B?-}@608@d mxq>@˳pc>a_Z ?-}@208@ dq@} m} 0}s@08` `q?{yl //0}@۬4O8p2 hquuHU?0 |k@6a8~qlqkuh5Q<U2<$ex_`[<(lQ`< s1>|a|78O<s$?b|R p  % !  \@0B@0 m{0@݀z0  p @ e>=` #Ƞ 5#I 4 hHX  @?o@H/ ? G~!~2> @Ou@7<@b 0V pC` 0@'" !X  'h`0 p0dlp b C h C<  ^ _bmx `_`?g@p@5@?(Àπd@>u<D">`\c0 @>pPV @&P;Hp:Dh ?B=>BlKJ1?9sϸ|1Z.f*=lyxF_?2AM>4,l@^`t)u)P y'">`` `&K{@ F8 !'kXJ@``-<@?t!?9  `,?, R]8 ?7. Ғ` 8 p .W p/0p@@= [p 0o x<@k @@?71? RJz 3 q?@Pp`?q $ ` < #<  pvI 0 H ?p>8 ~( _O p> ? REE@ K?绀   P xpֲVw?< 1 x|STO x|CDa\@S@ "?p@ ?? ; 8@? D06 ? fð@0  Ï??`,#< ǡ'k jÀ }?@h0G ?||Οs뿭P1V `K0`,8X 3 8 ޞ"PTxR ;  s? <@ `F\V#`KoT =fA? / 'y@? ~a ka w@<# 9pp`m`>kGπ 7 { xoڧ̳ͥ@K7p0$ 3bÏ<$x@B?x9W #t;`j`?8`Ex8`@??( F+'`v< KH۞j?p$pSp?Ǐ? |pa@px??`( )_{&{'^0Q,?3T8` Ϳ@08i1G? c 0ncB?%-w΀R8{q}__AH1c??` ?p V@8?-(2 M !+\m@(m1X   ?p`! n=zۂhp=" {`O RQ@ pxH30 ?a`c0 s tw alj Nq`"?wp08q @ pd??a?N >x ]ɏx N`c z10Ox8͡>s@0 ?3??p$P7,zpwG( ~w1&:66 y Fj1p. 8 ǀy Ǹ )w `:̿3M ǒy ™8` ƌx8p,3 ǀ:A /|?гG5@<Sxxy@Yi (G`@x94GǠ: xP ??>܉{PMe|OzP$dh`o$|@`# a$|\?Ã?oU%.hj6dJ]p83=``,9~`PA9~_`??0&m3_}Z{ao G Z]w ~}H??` <>??2_&n8/0=dw? * |6fk<? ?@?8g3 gYa'CPY(?/!  Tp䇀:|?P` `c T?3lC=>l:g6O0`#o8<o`~spF0;< ֆv OӅ@?]s81yG<P/p?$8Cp`??p@)UbrXO? ?$<F%!>h x}K!8O'  @9!Nň7,7 |d8 S/40/s8~Bg~ 17?%@iDmPAY@pOV@8rgW_p???/ ?04*N@ Pq_wYa7p?? }bǞy2ْLK@ EœÏ[8gBM|W*`<>|? ,?W O$~jsN9]@ , t~|hL0z1́3>| F -I~9X8LJXu` O }z00 `~B]6ڽGPi y:xXO=;!ɍF:4xuG< @O; k>Gπ 0x<w= ֕gi-<90  ͛ VqNg8ql.@ @<`q_G?8p8pȲ'ױꚛy( _  z!\x,0d qO  OU+6sH` ?   `\=sӞW"@58 tnf~Bf 3@ ~<?!rCg֯Ei(E S i7|@P0_G-y   wiפޗF$T (/Mp?y\lD@v |_f~>8À !!@D `F=ThzК/dq tWkYB_S > ܘ0x3?0cg@ @j>`XP!g'?Gy8Nǯi_щA? GP@>h`?g mt 7#LPI&9`_%af_#@dX8) bϟ4g`?g@/pg ?`Nx4$ nXl37, =8; 1 : ox=?|?x?@GZh<4¤5 MW < <m-@'8@3~ `G? pcb@\HCWfkǍVTxx,`|n΀0@/ރHe2xύ` /0Ng8( ?? `e X_)Z'!V7/`,0=ؐh301#~!Ӄ7 >0; >@$7GTX_Ot]m"Yؾ > 0@0j9c2<0@x6 ! ?0x?"+@q1;~U0b8_b'~8*F#3 0 "%^e- ۃ$@&5} 4wԁ??G@] 0 1?>w" yGfX<<FG=s"uQ 'a*@9s_? v@  w1|y"E =Pxk`ո lp -0o,e@kY(߯` C<i~?y@2+V ]>#0 0 *}NȪ g@c NO( ~g2ߐx'?9?L!0c@ JhG> [{(#0 Ic")?r"A7g+''0 #`9 !F0,00( d`G/!8K'0:{HS0 y|0G8gp'?1! 'a0` .P/g!(❀_@ 0m{H 0f?s0>gO8 `1?"!ƫP(7ޜ P-;+$0;N;pO9 x+0o0Ԉ7 ߡ? p 1?? "z64`؂~< L`NU+X(07`;x3Ug!3`(\1d /7s?a?qF3<{_ @  h d<@ 3:_ Oـ h$Z??><\<cxf"Nc2q?@L# XHO18#߱? s*0#c ؃ |xx xcgxAq:ļ^bbxj> >@cކHl w=#p x ?| p ~o5KZ"6P!MtJ 0(@ 2 ؃1"kM/39W  8!>{Ґ6`+7  `0? (q@ڬlf4 b T6` a  K ~7 (=&E՞'C3Ph/IGNE?П_B0O?oCO4 ~L! $ ; P9z8x.~Da 9O:'@|GLhODм ?0yG?P8P {{~(@q"5}P*A8c g|zp O`7{ sp??<"jO|EvmL0hd " K#KPoVX,1.; @v9o`ɐsz1( ?1*4 (Untn*)0`H HkșHO.yH d9/@@ ' ϐ   ??0=@g1VPG4?F B*7#go_?0 3z0  q82i@ň##/?и$?u,W/0q;О8?#F0dx/H<$"@ P[$z_`)o~?:$:g?&p!g?߀?$ 0@ @f D@t\G$  uS$ר;?0EWuS^װ_ wv?v0 88 (1F8B A "'@ rC_%ñ @=>'` ?zπp0< @8E0 ǿO4'cGoGA j $76oC  |sG |<#$aP:0 3\P;gpA` $o'Ư_>p  j?$On?Y.@`? >/ @8@XcPpsy$_?O <lt')_%?.?{@]s~  ?>!@hX!3W $ 3^ "3o_ RB^?Gۅg? ]~? ?{>p??%,wD"0!p/)Pj)U@%% ^_X ?#]4Pap`?> ? k^+Nw$S/`@EM? z} nM 2L%`?%|x =4YA00? $ gl eV0X'6O  R@%?>x ~ 2?/|p|?/1O  x  @XBtPdK;yi 0M6V%^Hh1 7< p|p;7Eqx? %X [C`Im3N  N3I Gg |z7 _^xހ~0o}Ɔ88߀~??$`#*@'(bP?pD$?0F?2 K'Nx 8~ ,z?x8?#Y@Ȱ @ `M $'_c@/ ? @`XO06c3A~`z| `& UPG@Pfp#*@ nA~'?a @  W"p,`2U%d_C#w`?t8G|΍g`?!2 @LB1  0$ hN@?? u&o c?Ape5 g@@` @8 ~ ah | @ ~|  s?` c1xh+[`?V~G~p z[ _ ۍ`z a0Npud x =(!@C|goC#h  gix>_t ` 8p v!pc^zDx\o   \_@` p?! @B2 ` @@.  ?  to 7 1~o@?hCp 88` ? & ?G/zC GHpـ0? T@AC@ D& fF&0 .}@m ?<p>? p **6A bN@  ,^] V, #|818>?P@$AC9sE} P =T 9 @S|Иp|KBw/g8 ?x0?@ aPL-0  >w* hp//['<0W'. _\;0~|?p7 #@(! =Ȁ>|_?WA܋z<Ix`#f?@ Hx !{(Wd>|< @ RɃk2v<?S0prx` ?|, `?~?0 [ k|(8c?0`(td&/6ap0͌|pὀ>~ yo<|8#^T@W '8>A x 8J`0={s ?x8xPd#^: POp-L]?BL0<`/ :0 8>E'@>(w tao/ Y?/Cx~_xt =x? ? n+ >   x$@?3< ??$ $@Q$8N<t /` $@ x@0 $@Q$8N</ Wst( & ⿻`?&$K ?8  0?& p`$K b0p. ?s| X%A~8T |o|<%A$K0  |%A ?p  $K0&$x8$B? ʨ28$B$N  n >@$Bp?$N s $)%}@$D$I `4 v$D$I .`f0x$D$I >$I  /KWo"Bz@$H'8I<0pҧp=$H'8I<\ p3>8$H'8I<? x< '8I<A~ ` ָB Bt Pp`0i|?@gp??LJ??0wpc{T( 6/*@?aqgp<?TaĨ `Z:0w:P^?k`Q    _` X_<`' k?  8 Lk ? Z| ?<`g5^ח>P( 3o ? 0_?~ ?  ??A????@| ? E?C?&&&PARADROID TIPS paradroi.doc = =Players Guide to Paradroid 90= = Ok, this article is about to give you hints, tips and startegic advice on how to get rid of every robot in Paradroid. I will off- course mention my favourite droid, and at the end I will reveal the fruits of my frenetical and stubborn efforts: my hiscore! Andrew Braybrook, famous for titles such as Uridium (on the 64), Simulcra, Fire n' ice plus others,really outdid himself when he created this ace game. The original 64 version (which I sadly haven't played...) was a success, so a 16-bit conversion was born. The game contains a great mix of pure action and strategy together with a tense feeling of 'who is there?', nice graphics and excellent programming, making it awesome if you're up to the challenge. Here we have the main problem with the game: It is damn hard, espe- cially in the beginning, putting people off before they really have started. This is where this article enters the scenario. First of all you should deselect the transfer-game, especially if you're a beginner. Actually I never play with the transfergame on (I'm too much of a lazy coward)and some Paradroidfreaks probably don't like that.(I don't care) Remember that my tips always assumes that you have deselected transfer-game! Here comes a list on how to kill/transfer any droid, and to use them to your advantage. 101-Influence device Your standard droid. Its weapon is headmounted, so you can quickly shoot in every direction you want. It got lousy armour and slow/weak shots, so change to at least a 302-Messenger quickly. Remeber:If the ID dies,then it's over! 123-Cleaner, 296-Servant Harmless (unarmed). Don't transfer to, unless you have to. 302-Messenger The best choice of the unarmed. Quick moving and quick accelerating. if using it make sure you keep on moving. 476-Maintenance To fight it: Keep a range becoz its flamethrower won't reach far. Only transfer to it if you're any of the droids above, or you are way down in power. It is pretty slow-turning, but got an OK topspeed. To control it: Fairly straightforward. Remember that it hasn't a headmounted weapon, but you can't see which way you're aiming. Transfer to another droid quickly. 614-Sentinel (Probably my favourite droid) To fight: This robot is often guarding important places on the later ships. It is then totally unmobile (but is quick when not on sentinel duty/but can still be transferred to) and shoots at you on sight. If you got a low-grade droid this Sentinel can be tough to get rid of. Its machinegun has quick muzzle speed and high firerate, but the shots are weak so when using, for example the 734-Battledroid the shots won't do any harm at all. Somehow I usually transfers to this droid, maybe just becoz I'm so fucking fond of it. Watch out on open spaces and near some elvators, and make sure that when you hear the machinegunnoise, you get the hell out of there fast!!!.Run around a corner,start the transfer beam, wait a little while (if it was far away when it shot at you) and then turn around the corner again with full speed to transfer to it. If you must transfer to it on an open space then run around it in an anticlockwise decreasing circle. To use: As I said this robot is quick moving and shooting so it is perfect for my fighting method: Shoot a few bullets, run around a corner, turn around,shoot a few more bullets etc. Be paranoid when using it; shoot a bullet every time you round a corner to make sure you're not stumbling onto anything. When meeting heavy armoured enemies then transfer to them with high speed. 683-Sentinel To fight: This one can be dangerous to meet if youre the ID for example.It has a weapon that looks like a gascloud, destroying low- armoured robots in no-time. It has bad eyes and is slow moving/ turning and the weapon is weak though. Attack on long range from behind. To use: I almost never use this droid. It is to slow for me, but if you have it you must attack on close range, hopefully from behind. Always be prepared to transfer to a new droid. This robot is disastrous to your hit rate.You'll waste several shots just to start the transfer beam. 729-Battle To fight: This tank is peculiar. Although it only has visual capa- bilities it only shoots at you if you're making any noise, so if using a droid with a low-powered weapon it might be wiser to sneak past it and trade to another droid before you try to kill it. It shoots in 3-shots intervals. To use:This robot can only move up or down, so you can't transfer to this droid. 742-Battle To fight: This one is easier to fight than you think, becoz of its slow weapon. So if you are a small and quick droid it is easy transferred to. This robot can only shoot in eight directions making it easier to avoid its shots. It moves slowly, but can turn around on a penny! To use:Try to be defensive so you won't end up in a head-on firefight. The triple laser is to slow for that,so it might end up with the enemy shooting your shots AND managing to fill you with lead. 783-Battle This is a 683 sentinel with the same flamethrower as the 476 droid. Use about the same tactics as when using the 683,but remeber that the flamethrower is more powerful, but slower. 734-Battle To fight:This robot tries to lay mines in your path,but they are pretty easy avoided. The problem is to kill a 734. They have fabulous armour, only the 999-command beats it. Therefore I usually transfers to it, as it is fairly easy to come close to becoz its lack of speed, but usually I 'trade' it for another droid later. To use: To actually plan ahead and lay mines in other droids way is awkward so i usually try to ram my enemies to death.(very useful on the 729 droid!) The 734 is slow, but can stand so much damage that you don't have to care when trying to transfer to other droids,making it a good platform for transferring. 852-Security (another fun droid) To fight: Transfer to the sucker fast, unless you have the 821 or the 999. Its weapon damages every droid on screen, and the droid is pretty quick moving, so be fast! It has a good armour. To use:Great fun! Of some reason you must see the robot you are shooting at, but otherwise you shouldn't have much problems. Raiders, 821:s and 999:s is unaffected of the disruptor. When eventually trying to transfer to another droid, try not to damage it first!!! 821-Security (a great droid) To fight: Pure hell usually!This robot is one of the few that moves and shoots simultaneously. It has a headmounted weapon that makes it possible for it to shoot at you when fleeing. I usually transfers to this robot. To transfer to this one isn't easy, you usually must flee from it to make it chase you,and suddenly make a quick turn-around at the spot with the transferbeam on to take it. Try to lure it round corners (like on the 614) To use: Try to make use of the headmounted electrobolt.It is extremly powerful and useful (even if you can't use the weapon as good as the computer). This robot is very fast but can be nervous to use at close quarters. Its shield is excellent. xxx-Raider To fight: If having a low-class droid, try to avoid it and transfer to something bigger. They remind of the 614-Sentinel, but with triple shots. They have weaker armour though. If using a 'heavy' droid, blow him to pieces. His shots won't hardly affect you. To use: He is a humanoid, so you can't control him. 999-Command To fight: Transfer to him, or die! Well,with the 821 you might have a chance to fight it if you have to, but I wouldn't recommend it. The 999 is rather easy to transfer to as long as you are quick and decesive, but beware of the extremly powerful shots. It is fast too! To use: It is fast, it has the perfect armour, so what more can you need? The answer is simple: A weapon that doesn't have to recharge when shooting, and longer lifetime! The robot burns out itself in no-time! Usually you don't have to care about enemyshots as the powermeter decreases in almost the same speed as enemydamage! The shots take too long to use, making the droid more unuseful than you think. It is not the ultimate killing machine, but the perfect plat- form to transfer to other droids, and to use for a while. Now to some major hints and tips: Always transfer to new, fresh robots. This fills the ID:s power, and resets the 'inner' powermeter. Don't harm robots that you're gonna transfer to. Remember that enemyrobots usually stands still when shooting, while yourself usually must move against your target. Try to use this to your advantage. Watch out for explosions, unless being the 614-sentinel or higher. (the 614 can be damaged by explosions, but usually no critical injuries) Learn the sounds from the various weapons, like the machinegun from the 614-Sentinel for example as it is hard to see the shots. As far as I know, any robot controlled by you can survive at least one shot from any enemy (if having full power). Keep that in mind when trying to transfer. (I am not sure about the combinations 123-Cleaner and 999-command, or 123-Cleaner and 852-Security though..) Study the layout of the ship,and note where the bridge is.Usually the bridge has the most powerful droids, normally including one 999-Command. Beware! Beware of the flames from the Spaceships onboard, and experiment with them yourself! (just touch the cockpit-panel to activate the engines) Remember that elevators may reach different floors, depending on right or left position on screen. Look for small (5x5?) keys lying on the floors on most ships. They give 5000 bonuspoints when completing a ship. (usually one per ship) For high scores try to keep the hitrate and killrate up. Off course try to memorize how the droids look, so you know what to expect from them. Enemydroids can only look forward,but yourself can also see behind yourself, as long as there are no walls blocking the vision.Attack droids from behind. Look and listen to the doors on the deck. You can see them opening even if you can't see the droid itself.(same thing with the energizer) Watch out for 'dead' robots rushing around and shooting after you have killed them. They self-destruct after a while, but if it gets to dangerous one shot should stop it. Memorize the positions of the transmat-points to make a clear and quick getaway when having completed a ship. Shooting the background-blocks gives you some points,if you haven't anything more important to do... Release the button after every shot you fire when standing still so you wont start the transferbeam instead! Try to clear the decks in some kind of logical order so you wont have to run through empty decks all the time. This can be disatrous if using a powerful droid as it will burn out before you reach new droids, and that means back to the ID again. Just a curiosity, but you can see the alarm status on the 742:s eyes, and on the 683 and 783:s back, just behind the head. Be patient,even if it can feel a bit impossible to get anywhere when you are a rookie. One life is little, but sufficient! Practice! Now here comes the exciting bit. Paradroid fans peer down at their jotted down hiscores,curious and excited."Is he good enough to write this article?","Am I better??" The questions varies... Here is the answer: Under a long session of playing I managed to complete all ships in a row (with transfer-game deselected) without dying, making up a score of: 241885. This score is not unbeatable in any way, but I don't think you can better it too much though... Anyone who wish to contact me for any reason should write to: Roger Wennstroem PL 5207 76176 Norrtaelje Sweden If you have tips yourself,or just love Paradroid then contact me! 7.  d`.. BDISTCURDAT `BLOMMA DAT `<BRAIN DAT `p<LOADER S `$7*SECREAD S `O16FONT1 DAT `TLOADER2 S `V#>LOADER3 S 3`f!>LOADER4 S `vmGOVERLORDTHK !LOADER4 BAK `4b DC.W 100 DC.W 100 DC.W 101 DC.W 102 DC.W 102 DC.W 103 DC.W 104 DC.W 104 DC.W 105 DC.W 106 DC.W 106 DC.W 107 DC.W 108 DC.W 109 DC.W 109 DC.W 110 DC.W 111 DC.W 111 DC.W 112 DC.W 113 DC.W 113 DC.W 114 DC.W 115 DC.W 115 DC.W 116 DC.W 117 DC.W 117 DC.W 118 DC.W 119 DC.W 120 DC.W 120 DC.W 121 DC.W 122 DC.W 122 DC.W 123 DC.W 124 DC.W 124 DC.W 125 DC.W 126 DC.W 126 DC.W 127 DC.W 128 DC.W 128 DC.W 129 DC.W 129 DC.W 130 DC.W 131 DC.W 131 DC.W 132 DC.W 133 DC.W 133 DC.W 134 DC.W 135 DC.W 135 DC.W 136 DC.W 136 DC.W 137 DC.W 138 DC.W 138 DC.W 139 DC.W 140 DC.W 140 DC.W 141 DC.W 141 DC.W 142 DC.W 142 DC.W 143 DC.W 144 DC.W 144 DC.W 145 DC.W 145 DC.W 146 DC.W 147 DC.W 147 DC.W 148 DC.W 148 DC.W 149 DC.W 149 DC.W 150 DC.W 150 DC.W 151 DC.W 151 DC.W 152 DC.W 153 DC.W 153 DC.W 154 DC.W 154 DC.W 155 DC.W 155 DC.W 156 DC.W 156 DC.W 157 DC.W 157 DC.W 158 DC.W 158 DC.W 158 DC.W 159 DC.W 159 DC.W 160 DC.W 160 DC.W 161 DC.W 161 DC.W 162 DC.W 162 DC.W 163 DC.W 163 DC.W 163 DC.W 164 DC.W 164 DC.W 165 DC.W 165 DC.W 165 DC.W 166 DC.W 166 DC.W 167 DC.W 167 DC.W 167 DC.W 168 DC.W 168 DC.W 168 DC.W 169 DC.W 169 DC.W 169 DC.W 170 DC.W 170 DC.W 170 DC.W 171 DC.W 171 DC.W 171 DC.W 172 DC.W 172 DC.W 172 DC.W 173 DC.W 173 DC.W 173 DC.W 173 DC.W 174 DC.W 174 DC.W 174 DC.W 174 DC.W 175 DC.W 175 DC.W 175 DC.W 175 DC.W 176 DC.W 176 DC.W 176 DC.W 176 DC.W 176 DC.W 177 DC.W 177 DC.W 177 DC.W 177 DC.W 177 DC.W 177 DC.W 178 DC.W 178 DC.W 178 DC.W 178 DC.W 178 DC.W 178 DC.W 178 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 180 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 179 DC.W 178 DC.W 178 DC.W 178 DC.W 178 DC.W 178 DC.W 178 DC.W 178 DC.W 177 DC.W 177 DC.W 177 DC.W 177 DC.W 177 DC.W 177 DC.W 176 DC.W 176 DC.W 176 DC.W 176 DC.W 176 DC.W 175 DC.W 175 DC.W 175 DC.W 175 DC.W 174 DC.W 174 DC.W 174 DC.W 174 DC.W 173 DC.W 173 DC.W 173 DC.W 173 DC.W 172 DC.W 172 DC.W 172 DC.W 171 DC.W 171 DC.W 171 DC.W 170 DC.W 170 DC.W 170 DC.W 169 DC.W 169 DC.W 169 DC.W 168 DC.W 168 DC.W 168 DC.W 167 DC.W 167 DC.W 167 DC.W 166 DC.W 166 DC.W 165 DC.W 165 DC.W 165 DC.W 164 DC.W 164 DC.W 163 DC.W 163 DC.W 163 DC.W 162 DC.W 162 DC.W 161 DC.W 161 DC.W 160 DC.W 160 DC.W 159 DC.W 159 DC.W 158 DC.W 158 DC.W 158 DC.W 157 DC.W 157 DC.W 156 DC.W 156 DC.W 155 DC.W 155 DC.W 154 DC.W 154 DC.W 153 DC.W 153 DC.W 152 DC.W 151 DC.W 151 DC.W 150 DC.W 150 DC.W 149 DC.W 149 DC.W 148 DC.W 148 DC.W 147 DC.W 147 DC.W 146 DC.W 145 DC.W 145 DC.W 144 DC.W 144 DC.W 143 DC.W 142 DC.W 142 DC.W 141 DC.W 141 DC.W 140 DC.W 140 DC.W 139 DC.W 138 DC.W 138 DC.W 137 DC.W 136 DC.W 136 DC.W 135 DC.W 135 DC.W 134 DC.W 133 DC.W 133 DC.W 132 DC.W 131 DC.W 131 DC.W 130 DC.W 129 DC.W 129 DC.W 128 DC.W 128 DC.W 127 DC.W 126 DC.W 126 DC.W 125 DC.W 124 DC.W 124 DC.W 123 DC.W 122 DC.W 122 DC.W 121 DC.W 120 DC.W 120 DC.W 119 DC.W 118 DC.W 117 DC.W 117 DC.W 116 DC.W 115 DC.W 115 DC.W 114 DC.W 113 DC.W 113 DC.W 112 DC.W 111 DC.W 111 DC.W 110 DC.W 109 DC.W 109 DC.W 108 DC.W 107 DC.W 106 DC.W 106 DC.W 105 DC.W 104 DC.W 104 DC.W 103 DC.W 102 DC.W 102 DC.W 101 DC.W 100 DC.W 100 DC.W 99 DC.W 98 DC.W 97 DC.W 97 DC.W 96 DC.W 95 DC.W 95 DC.W 94 DC.W 93 DC.W 93 DC.W 92 DC.W 91 DC.W 90 DC.W 90 DC.W 89 DC.W 88 DC.W 88 DC.W 87 DC.W 86 DC.W 86 DC.W 85 DC.W 84 DC.W 84 DC.W 83 DC.W 82 DC.W 82 DC.W 81 DC.W 80 DC.W 79 DC.W 79 DC.W 78 DC.W 77 DC.W 77 DC.W 76 DC.W 75 DC.W 75 DC.W 74 DC.W 73 DC.W 73 DC.W 72 DC.W 71 DC.W 71 DC.W 70 DC.W 70 DC.W 69 DC.W 68 DC.W 68 DC.W 67 DC.W 66 DC.W 66 DC.W 65 DC.W 64 DC.W 64 DC.W 63 DC.W 63 DC.W 62 DC.W 61 DC.W 61 DC.W 60 DC.W 60 DC.W 59 DC.W 58 DC.W 58 DC.W 57 DC.W 57 DC.W 56 DC.W 55 DC.W 55 DC.W 54 DC.W 54 DC.W 53 DC.W 52 DC.W 52 DC.W 51 DC.W 51 DC.W 50 DC.W 50 DC.W 49 DC.W 49 DC.W 48 DC.W 48 DC.W 47 DC.W 46 DC.W 46 DC.W 45 DC.W 45 DC.W 44 DC.W 44 DC.W 43 DC.W 43 DC.W 42 DC.W 42 DC.W 41 DC.W 41 DC.W 41 DC.W 40 DC.W 40 DC.W 39 DC.W 39 DC.W 38 DC.W 38 DC.W 37 DC.W 37 DC.W 36 DC.W 36 DC.W 36 DC.W 35 DC.W 35 DC.W 34 DC.W 34 DC.W 34 DC.W 33 DC.W 33 DC.W 32 DC.W 32 DC.W 32 DC.W 31 DC.W 31 DC.W 31 DC.W 30 DC.W 30 DC.W 30 DC.W 29 DC.W 29 DC.W 29 DC.W 28 DC.W 28 DC.W 28 DC.W 27 DC.W 27 DC.W 27 DC.W 26 DC.W 26 DC.W 26 DC.W 26 DC.W 25 DC.W 25 DC.W 25 DC.W 25 DC.W 24 DC.W 24 DC.W 24 DC.W 24 DC.W 23 DC.W 23 DC.W 23 DC.W 23 DC.W 23 DC.W 22 DC.W 22 DC.W 22 DC.W 22 DC.W 22 DC.W 22 DC.W 21 DC.W 21 DC.W 21 DC.W 21 DC.W 21 DC.W 21 DC.W 21 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 20 DC.W 21 DC.W 21 DC.W 21 DC.W 21 DC.W 21 DC.W 21 DC.W 21 DC.W 22 DC.W 22 DC.W 22 DC.W 22 DC.W 22 DC.W 22 DC.W 23 DC.W 23 DC.W 23 DC.W 23 DC.W 23 DC.W 24 DC.W 24 DC.W 24 DC.W 24 DC.W 25 DC.W 25 DC.W 25 DC.W 25 DC.W 26 DC.W 26 DC.W 26 DC.W 26 DC.W 27 DC.W 27 DC.W 27 DC.W 28 DC.W 28 DC.W 28 DC.W 29 DC.W 29 DC.W 29 DC.W 30 DC.W 30 DC.W 30 DC.W 31 DC.W 31 DC.W 31 DC.W 32 DC.W 32 DC.W 32 DC.W 33 DC.W 33 DC.W 34 DC.W 34 DC.W 34 DC.W 35 DC.W 35 DC.W 36 DC.W 36 DC.W 36 DC.W 37 DC.W 37 DC.W 38 DC.W 38 DC.W 39 DC.W 39 DC.W 40 DC.W 40 DC.W 41 DC.W 41 DC.W 41 DC.W 42 DC.W 42 DC.W 43 DC.W 43 DC.W 44 DC.W 44 DC.W 45 DC.W 45 DC.W 46 DC.W 46 DC.W 47 DC.W 48 DC.W 48 DC.W 49 DC.W 49 DC.W 50 DC.W 50 DC.W 51 DC.W 51 DC.W 52 DC.W 52 DC.W 53 DC.W 54 DC.W 54 DC.W 55 DC.W 55 DC.W 56 DC.W 57 DC.W 57 DC.W 58 DC.W 58 DC.W 59 DC.W 59 DC.W 60 DC.W 61 DC.W 61 DC.W 62 DC.W 63 DC.W 63 DC.W 64 DC.W 64 DC.W 65 DC.W 66 DC.W 66 DC.W 67 DC.W 68 DC.W 68 DC.W 69 DC.W 70 DC.W 70 DC.W 71 DC.W 71 DC.W 72 DC.W 73 DC.W 73 DC.W 74 DC.W 75 DC.W 75 DC.W 76 DC.W 77 DC.W 77 DC.W 78 DC.W 79 DC.W 79 DC.W 80 DC.W 81 DC.W 82 DC.W 82 DC.W 83 DC.W 84 DC.W 84 DC.W 85 DC.W 86 DC.W 86 DC.W 87 DC.W 88 DC.W 88 DC.W 89 DC.W 90 DC.W 90 DC.W 91 DC.W 92 DC.W 93 DC.W 93 DC.W 94 DC.W 95 DC.W 95 DC.W 96 DC.W 97 DC.W 97 DC.W 98 DC.W 99 #"_oC41@ R-.a.Bc("Rş|.C M="?@>2"Oж/C2"2%<~N<Aqb 2?.-*A-%ߥ U cD>>1@q#%? <"A n\%D޶]я# .VT?AO:# A.=#?#).P! ?$"C??5|3o ҫ\ ?tO!n_24?"#)3@Po+>!n^E1L2/@.1/q!= Q&C 2$.v??#?\-Ṭ2/A5b#τ$4#,N!/ dc.w 160,100 dc.w 163,100 dc.w 166,100 dc.w 169,100 dc.w 172,100 dc.w 175,100 dc.w 178,100 dc.w 181,100 dc.w 184,101 dc.w 187,101 dc.w 190,101 dc.w 193,102 dc.w 196,102 dc.w 199,102 dc.w 202,103 dc.w 204,103 dc.w 207,104 dc.w 210,104 dc.w 212,105 dc.w 215,106 dc.w 217,106 dc.w 219,107 dc.w 222,107 dc.w 224,108 dc.w 226,109 dc.w 228,109 dc.w 230,110 dc.w 231,111 dc.w 233,112 dc.w 235,112 dc.w 236,113 dc.w 238,114 dc.w 239,114 dc.w 240,115 dc.w 241,116 dc.w 242,117 dc.w 243,117 dc.w 244,118 dc.w 245,119 dc.w 245,119 dc.w 246,120 dc.w 246,121 dc.w 246,121 dc.w 246,122 dc.w 247,122 dc.w 246,123 dc.w 246,123 dc.w 246,124 dc.w 246,124 dc.w 245,125 dc.w 244,125 dc.w 244,125 dc.w 243,126 dc.w 242,126 dc.w 241,126 dc.w 240,126 dc.w 239,126 dc.w 237,126 dc.w 236,126 dc.w 234,126 dc.w 233,126 dc.w 231,126 dc.w 229,126 dc.w 227,126 dc.w 226,125 dc.w 224,125 dc.w 222,125 dc.w 219,124 dc.w 217,124 dc.w 215,123 dc.w 213,122 dc.w 210,122 dc.w 208,121 dc.w 205,120 dc.w 203,119 dc.w 200,119 dc.w 198,118 dc.w 195,117 dc.w 192,116 dc.w 190,114 dc.w 187,113 dc.w 184,112 dc.w 182,111 dc.w 179,110 dc.w 176,108 dc.w 173,107 dc.w 170,106 dc.w 168,104 dc.w 165,103 dc.w 162,101 dc.w 160,100 dc.w 157,98 dc.w 154,96 dc.w 151,95 dc.w 149,93 dc.w 146,91 dc.w 144,90 dc.w 141,88 dc.w 139,86 dc.w 136,84 dc.w 134,83 dc.w 131,81 dc.w 129,79 dc.w 127,77 dc.w 125,75 dc.w 123,74 dc.w 121,72 dc.w 119,70 dc.w 117,68 dc.w 115,67 dc.w 113,65 dc.w 111,63 dc.w 110,62 dc.w 108,60 dc.w 107,58 dc.w 105,57 dc.w 104,55 dc.w 103,54 dc.w 102,52 dc.w 101,51 dc.w 100,49 dc.w 99,48 dc.w 98,47 dc.w 97,46 dc.w 97,44 dc.w 96,43 dc.w 96,42 dc.w 96,41 dc.w 95,40 dc.w 95,39 dc.w 95,39 dc.w 95,38 dc.w 95,37 dc.w 95,37 dc.w 96,36 dc.w 96,36 dc.w 96,36 dc.w 97,35 dc.w 97,35 dc.w 98,35 dc.w 99,35 dc.w 99,35 dc.w 100,35 dc.w 101,36 dc.w 102,36 dc.w 103,36 dc.w 104,37 dc.w 106,37 dc.w 107,38 dc.w 108,39 dc.w 109,40 dc.w 111,41 dc.w 112,42 dc.w 114,43 dc.w 115,44 dc.w 117,45 dc.w 118,47 dc.w 120,48 dc.w 122,50 dc.w 123,51 dc.w 125,53 dc.w 127,55 dc.w 128,57 dc.w 130,59 dc.w 132,61 dc.w 134,63 dc.w 135,65 dc.w 137,67 dc.w 139,69 dc.w 141,71 dc.w 143,74 dc.w 144,76 dc.w 146,79 dc.w 148,81 dc.w 150,84 dc.w 151,86 dc.w 153,89 dc.w 155,91 dc.w 156,94 dc.w 158,97 dc.w 159,99 dc.w 161,102 dc.w 163,105 dc.w 164,108 dc.w 166,110 dc.w 167,113 dc.w 168,116 dc.w 170,119 dc.w 171,122 dc.w 172,124 dc.w 173,127 dc.w 174,130 dc.w 176,132 dc.w 177,135 dc.w 178,138 dc.w 179,140 dc.w 179,143 dc.w 180,145 dc.w 181,148 dc.w 182,150 dc.w 182,153 dc.w 183,155 dc.w 184,157 dc.w 184,159 dc.w 185,162 dc.w 185,164 dc.w 185,166 dc.w 186,167 dc.w 186,169 dc.w 186,171 dc.w 186,173 dc.w 186,174 dc.w 186,176 dc.w 186,177 dc.w 186,179 dc.w 186,180 dc.w 186,181 dc.w 186,182 dc.w 186,183 dc.w 185,184 dc.w 185,184 dc.w 185,185 dc.w 184,186 dc.w 184,186 dc.w 183,186 dc.w 183,186 dc.w 182,187 dc.w 182,186 dc.w 181,186 dc.w 181,186 dc.w 180,186 dc.w 179,185 dc.w 179,185 dc.w 178,184 dc.w 177,183 dc.w 177,182 dc.w 176,181 dc.w 175,180 dc.w 174,179 dc.w 174,178 dc.w 173,176 dc.w 172,175 dc.w 172,173 dc.w 171,171 dc.w 170,170 dc.w 169,168 dc.w 169,166 dc.w 168,164 dc.w 167,162 dc.w 167,159 dc.w 166,157 dc.w 166,155 dc.w 165,152 dc.w 164,150 dc.w 164,147 dc.w 163,144 dc.w 163,142 dc.w 162,139 dc.w 162,136 dc.w 162,133 dc.w 161,130 dc.w 161,127 dc.w 161,124 dc.w 160,121 dc.w 160,118 dc.w 160,115 dc.w 160,112 dc.w 160,109 dc.w 160,106 dc.w 160,103 dc.w 160,100 dc.w 160,96 dc.w 160,93 dc.w 160,90 dc.w 160,87 dc.w 160,84 dc.w 160,81 dc.w 160,78 dc.w 161,75 dc.w 161,72 dc.w 161,69 dc.w 162,66 dc.w 162,63 dc.w 162,60 dc.w 163,57 dc.w 163,55 dc.w 164,52 dc.w 164,49 dc.w 165,47 dc.w 166,44 dc.w 166,42 dc.w 167,40 dc.w 167,37 dc.w 168,35 dc.w 169,33 dc.w 169,31 dc.w 170,29 dc.w 171,28 dc.w 172,26 dc.w 172,24 dc.w 173,23 dc.w 174,21 dc.w 174,20 dc.w 175,19 dc.w 176,18 dc.w 177,17 dc.w 177,16 dc.w 178,15 dc.w 179,14 dc.w 179,14 dc.w 180,13 dc.w 181,13 dc.w 181,13 dc.w 182,13 dc.w 182,12 dc.w 183,13 dc.w 183,13 dc.w 184,13 dc.w 184,13 dc.w 185,14 dc.w 185,15 dc.w 185,15 dc.w 186,16 dc.w 186,17 dc.w 186,18 dc.w 186,19 dc.w 186,20 dc.w 186,22 dc.w 186,23 dc.w 186,25 dc.w 186,26 dc.w 186,28 dc.w 186,30 dc.w 186,32 dc.w 185,33 dc.w 185,35 dc.w 185,37 dc.w 184,40 dc.w 184,42 dc.w 183,44 dc.w 182,46 dc.w 182,49 dc.w 181,51 dc.w 180,54 dc.w 179,56 dc.w 179,59 dc.w 178,61 dc.w 177,64 dc.w 176,67 dc.w 174,69 dc.w 173,72 dc.w 172,75 dc.w 171,77 dc.w 170,80 dc.w 168,83 dc.w 167,86 dc.w 166,89 dc.w 164,91 dc.w 163,94 dc.w 161,97 dc.w 160,99 dc.w 158,102 dc.w 156,105 dc.w 155,108 dc.w 153,110 dc.w 151,113 dc.w 150,115 dc.w 148,118 dc.w 146,120 dc.w 144,123 dc.w 143,125 dc.w 141,128 dc.w 139,130 dc.w 137,132 dc.w 135,134 dc.w 134,136 dc.w 132,138 dc.w 130,140 dc.w 128,142 dc.w 127,144 dc.w 125,146 dc.w 123,148 dc.w 122,149 dc.w 120,151 dc.w 118,152 dc.w 117,154 dc.w 115,155 dc.w 114,156 dc.w 112,157 dc.w 111,158 dc.w 109,159 dc.w 108,160 dc.w 107,161 dc.w 106,162 dc.w 104,162 dc.w 103,163 dc.w 102,163 dc.w 101,163 dc.w 100,164 dc.w 99,164 dc.w 99,164 dc.w 98,164 dc.w 97,164 dc.w 97,164 dc.w 96,163 dc.w 96,163 dc.w 96,163 dc.w 95,162 dc.w 95,162 dc.w 95,161 dc.w 95,160 dc.w 95,160 dc.w 95,159 dc.w 96,158 dc.w 96,157 dc.w 96,156 dc.w 97,155 dc.w 97,153 dc.w 98,152 dc.w 99,151 dc.w 100,150 dc.w 101,148 dc.w 102,147 dc.w 103,145 dc.w 104,144 dc.w 105,142 dc.w 107,141 dc.w 108,139 dc.w 110,137 dc.w 111,136 dc.w 113,134 dc.w 115,132 dc.w 117,131 dc.w 119,129 dc.w 121,127 dc.w 123,125 dc.w 125,124 dc.w 127,122 dc.w 129,120 dc.w 131,118 dc.w 134,116 dc.w 136,115 dc.w 139,113 dc.w 141,111 dc.w 144,109 dc.w 146,108 dc.w 149,106 dc.w 151,104 dc.w 154,103 dc.w 157,101 dc.w 159,100 dc.w 162,98 dc.w 165,96 dc.w 168,95 dc.w 170,93 dc.w 173,92 dc.w 176,91 dc.w 179,89 dc.w 182,88 dc.w 184,87 dc.w 187,86 dc.w 190,85 dc.w 192,83 dc.w 195,82 dc.w 198,81 dc.w 200,80 dc.w 203,80 dc.w 205,79 dc.w 208,78 dc.w 210,77 dc.w 213,77 dc.w 215,76 dc.w 217,75 dc.w 219,75 dc.w 222,74 dc.w 224,74 dc.w 226,74 dc.w 227,73 dc.w 229,73 dc.w 231,73 dc.w 233,73 dc.w 234,73 dc.w 236,73 dc.w 237,73 dc.w 239,73 dc.w 240,73 dc.w 241,73 dc.w 242,73 dc.w 243,73 dc.w 244,74 dc.w 244,74 dc.w 245,74 dc.w 246,75 dc.w 246,75 dc.w 246,76 dc.w 246,76 dc.w 247,77 dc.w 246,77 dc.w 246,78 dc.w 246,78 dc.w 246,79 dc.w 245,80 dc.w 245,80 dc.w 244,81 dc.w 243,82 dc.w 242,82 dc.w 241,83 dc.w 240,84 dc.w 239,85 dc.w 238,85 dc.w 236,86 dc.w 235,87 dc.w 233,87 dc.w 231,88 dc.w 230,89 dc.w 228,90 dc.w 226,90 dc.w 224,91 dc.w 222,92 dc.w 219,92 dc.w 217,93 dc.w 215,93 dc.w 212,94 dc.w 210,95 dc.w 207,95 dc.w 204,96 dc.w 202,96 dc.w 199,97 dc.w 196,97 dc.w 193,97 dc.w 190,98 dc.w 187,98 dc.w 184,98 dc.w 181,99 dc.w 178,99 dc.w 175,99 dc.w 172,99 dc.w 169,99 dc.w 166,99 dc.w 163,99 dc.w 160,100 dc.w 156,99 dc.w 153,99 dc.w 150,99 dc.w 147,99 dc.w 144,99 dc.w 141,99 dc.w 138,99 dc.w 135,98 dc.w 132,98 dc.w 129,98 dc.w 126,97 dc.w 123,97 dc.w 120,97 dc.w 117,96 dc.w 115,96 dc.w 112,95 dc.w 109,95 dc.w 107,94 dc.w 104,93 dc.w 102,93 dc.w 100,92 dc.w 97,92 dc.w 95,91 dc.w 93,90 dc.w 91,90 dc.w 89,89 dc.w 88,88 dc.w 86,87 dc.w 84,87 dc.w 83,86 dc.w 81,85 dc.w 80,85 dc.w 79,84 dc.w 78,83 dc.w 77,82 dc.w 76,82 dc.w 75,81 dc.w 74,80 dc.w 74,80 dc.w 73,79 dc.w 73,78 dc.w 73,78 dc.w 73,77 dc.w 72,77 dc.w 73,76 dc.w 73,76 dc.w 73,75 dc.w 73,75 dc.w 74,74 dc.w 75,74 dc.w 75,74 dc.w 76,73 dc.w 77,73 dc.w 78,73 dc.w 79,73 dc.w 80,73 dc.w 82,73 dc.w 83,73 dc.w 85,73 dc.w 86,73 dc.w 88,73 dc.w 90,73 dc.w 92,73 dc.w 93,74 dc.w 95,74 dc.w 97,74 dc.w 100,75 dc.w 102,75 dc.w 104,76 dc.w 106,77 dc.w 109,77 dc.w 111,78 dc.w 114,79 dc.w 116,80 dc.w 119,80 dc.w 121,81 dc.w 124,82 dc.w 127,83 dc.w 129,85 dc.w 132,86 dc.w 135,87 dc.w 137,88 dc.w 140,89 dc.w 143,91 dc.w 146,92 dc.w 149,93 dc.w 151,95 dc.w 154,96 dc.w 157,98 dc.w 159,99 dc.w 162,101 dc.w 165,103 dc.w 168,104 dc.w 170,106 dc.w 173,108 dc.w 175,109 dc.w 178,111 dc.w 180,113 dc.w 183,115 dc.w 185,116 dc.w 188,118 dc.w 190,120 dc.w 192,122 dc.w 194,124 dc.w 196,125 dc.w 198,127 dc.w 200,129 dc.w 202,131 dc.w 204,132 dc.w 206,134 dc.w 208,136 dc.w 209,137 dc.w 211,139 dc.w 212,141 dc.w 214,142 dc.w 215,144 dc.w 216,145 dc.w 217,147 dc.w 218,148 dc.w 219,150 dc.w 220,151 dc.w 221,152 dc.w 222,153 dc.w 222,155 dc.w 223,156 dc.w 223,157 dc.w 223,158 dc.w 224,159 dc.w 224,160 dc.w 224,160 dc.w 224,161 dc.w 224,162 dc.w 224,162 dc.w 223,163 dc.w 223,163 dc.w 223,163 dc.w 222,164 dc.w 222,164 dc.w 221,164 dc.w 220,164 dc.w 220,164 dc.w 219,164 dc.w 218,163 dc.w 217,163 dc.w 216,163 dc.w 215,162 dc.w 213,162 dc.w 212,161 dc.w 211,160 dc.w 210,159 dc.w 208,158 dc.w 207,157 dc.w 205,156 dc.w 204,155 dc.w 202,154 dc.w 201,152 dc.w 199,151 dc.w 197,149 dc.w 196,148 dc.w 194,146 dc.w 192,144 dc.w 191,142 dc.w 189,140 dc.w 187,138 dc.w 185,136 dc.w 184,134 dc.w 182,132 dc.w 180,130 dc.w 178,128 dc.w 176,125 dc.w 175,123 dc.w 173,120 dc.w 171,118 dc.w 169,115 dc.w 168,113 dc.w 166,110 dc.w 164,108 dc.w 163,105 dc.w 161,102 dc.w 160,100 dc.w 158,97 dc.w 156,94 dc.w 155,91 dc.w 153,89 dc.w 152,86 dc.w 151,83 dc.w 149,80 dc.w 148,77 dc.w 147,75 dc.w 146,72 dc.w 145,69 dc.w 143,67 dc.w 142,64 dc.w 141,61 dc.w 140,59 dc.w 140,56 dc.w 139,54 dc.w 138,51 dc.w 137,49 dc.w 137,46 dc.w 136,44 dc.w 135,42 dc.w 135,40 dc.w 134,37 dc.w 134,35 dc.w 134,33 dc.w 133,32 dc.w 133,30 dc.w 133,28 dc.w 133,26 dc.w 133,25 dc.w 133,23 dc.w 133,22 dc.w 133,20 dc.w 133,19 dc.w 133,18 dc.w 133,17 dc.w 133,16 dc.w 134,15 dc.w 134,15 dc.w 134,14 dc.w 135,13 dc.w 135,13 dc.w 136,13 dc.w 136,13 dc.w 137,12 dc.w 137,13 dc.w 138,13 dc.w 138,13 dc.w 139,13 dc.w 140,14 dc.w 140,14 dc.w 141,15 dc.w 142,16 dc.w 142,17 dc.w 143,18 dc.w 144,19 dc.w 145,20 dc.w 145,21 dc.w 146,23 dc.w 147,24 dc.w 147,26 dc.w 148,28 dc.w 149,29 dc.w 150,31 dc.w 150,33 dc.w 151,35 dc.w 152,37 dc.w 152,40 dc.w 153,42 dc.w 153,44 dc.w 154,47 dc.w 155,49 dc.w 155,52 dc.w 156,55 dc.w 156,57 dc.w 157,60 dc.w 157,63 dc.w 157,66 dc.w 158,69 dc.w 158,72 dc.w 158,75 dc.w 159,78 dc.w 159,81 dc.w 159,84 dc.w 159,87 dc.w 159,90 dc.w 159,93 dc.w 159,96 dc.w 160,99 dc.w 159,103 dc.w 159,106 dc.w 159,109 dc.w 159,112 dc.w 159,115 dc.w 159,118 dc.w 159,121 dc.w 158,124 dc.w 158,127 dc.w 158,130 dc.w 157,133 dc.w 157,136 dc.w 157,139 dc.w 156,142 dc.w 156,144 dc.w 155,147 dc.w 155,150 dc.w 154,152 dc.w 153,155 dc.w 153,157 dc.w 152,159 dc.w 152,162 dc.w 151,164 dc.w 150,166 dc.w 150,168 dc.w 149,170 dc.w 148,171 dc.w 147,173 dc.w 147,175 dc.w 146,176 dc.w 145,178 dc.w 145,179 dc.w 144,180 dc.w 143,181 dc.w 142,182 dc.w 142,183 dc.w 141,184 dc.w 140,185 dc.w 140,185 dc.w 139,186 dc.w 138,186 dc.w 138,186 dc.w 137,186 dc.w 137,187 dc.w 136,186 dc.w 136,186 dc.w 135,186 dc.w 135,186 dc.w 134,185 dc.w 134,184 dc.w 134,184 dc.w 133,183 dc.w 133,182 dc.w 133,181 dc.w 133,180 dc.w 133,179 dc.w 133,177 dc.w 133,176 dc.w 133,174 dc.w 133,173 dc.w 133,171 dc.w 133,169 dc.w 133,167 dc.w 134,166 dc.w 134,164 dc.w 134,162 dc.w 135,159 dc.w 135,157 dc.w 136,155 dc.w 137,153 dc.w 137,150 dc.w 138,148 dc.w 139,145 dc.w 140,143 dc.w 140,140 dc.w 141,138 dc.w 142,135 dc.w 143,132 dc.w 145,130 dc.w 146,127 dc.w 147,124 dc.w 148,122 dc.w 149,119 dc.w 151,116 dc.w 152,113 dc.w 153,110 dc.w 155,108 dc.w 156,105 dc.w 158,102 dc.w 159,100 dc.w 161,97 dc.w 163,94 dc.w 164,91 dc.w 166,89 dc.w 168,86 dc.w 169,84 dc.w 171,81 dc.w 173,79 dc.w 175,76 dc.w 176,74 dc.w 178,71 dc.w 180,69 dc.w 182,67 dc.w 184,65 dc.w 185,63 dc.w 187,61 dc.w 189,59 dc.w 191,57 dc.w 192,55 dc.w 194,53 dc.w 196,51 dc.w 197,50 dc.w 199,48 dc.w 201,47 dc.w 202,45 dc.w 204,44 dc.w 205,43 dc.w 207,42 dc.w 208,41 dc.w 210,40 dc.w 211,39 dc.w 212,38 dc.w 213,37 dc.w 215,37 dc.w 216,36 dc.w 217,36 dc.w 218,36 dc.w 219,35 dc.w 220,35 dc.w 220,35 dc.w 221,35 dc.w 222,35 dc.w 222,35 dc.w 223,36 dc.w 223,36 dc.w 223,36 dc.w 224,37 dc.w 224,37 dc.w 224,38 dc.w 224,39 dc.w 224,39 dc.w 224,40 dc.w 223,41 dc.w 223,42 dc.w 223,43 dc.w 222,44 dc.w 222,46 dc.w 221,47 dc.w 220,48 dc.w 219,49 dc.w 218,51 dc.w 217,52 dc.w 216,54 dc.w 215,55 dc.w 214,57 dc.w 212,58 dc.w 211,60 dc.w 209,62 dc.w 208,63 dc.w 206,65 dc.w 204,67 dc.w 202,68 dc.w 200,70 dc.w 198,72 dc.w 196,74 dc.w 194,75 dc.w 192,77 dc.w 190,79 dc.w 188,81 dc.w 185,83 dc.w 183,84 dc.w 180,86 dc.w 178,88 dc.w 175,90 dc.w 173,91 dc.w 170,93 dc.w 168,95 dc.w 165,96 dc.w 162,98 dc.w 160,100 dc.w 157,101 dc.w 154,103 dc.w 151,104 dc.w 149,106 dc.w 146,107 dc.w 143,108 dc.w 140,110 dc.w 137,111 dc.w 135,112 dc.w 132,113 dc.w 129,114 dc.w 127,116 dc.w 124,117 dc.w 121,118 dc.w 119,119 dc.w 116,119 dc.w 114,120 dc.w 111,121 dc.w 109,122 dc.w 106,122 dc.w 104,123 dc.w 102,124 dc.w 100,124 dc.w 97,125 dc.w 95,125 dc.w 93,125 dc.w 92,126 dc.w 90,126 dc.w 88,126 dc.w 86,126 dc.w 85,126 dc.w 83,126 dc.w 82,126 dc.w 80,126 dc.w 79,126 dc.w 78,126 dc.w 77,126 dc.w 76,126 dc.w 75,125 dc.w 75,125 dc.w 74,125 dc.w 73,124 dc.w 73,124 dc.w 73,123 dc.w 73,123 dc.w 72,122 dc.w 73,122 dc.w 73,121 dc.w 73,121 dc.w 73,120 dc.w 74,119 dc.w 74,119 dc.w 75,118 dc.w 76,117 dc.w 77,117 dc.w 78,116 dc.w 79,115 dc.w 80,114 dc.w 81,114 dc.w 83,113 dc.w 84,112 dc.w 86,112 dc.w 88,111 dc.w 89,110 dc.w 91,109 dc.w 93,109 dc.w 95,108 dc.w 97,107 dc.w 100,107 dc.w 102,106 dc.w 104,106 dc.w 107,105 dc.w 109,104 dc.w 112,104 dc.w 115,103 dc.w 117,103 dc.w 120,102 dc.w 123,102 dc.w 126,102 dc.w 129,101 dc.w 132,101 dc.w 135,101 dc.w 138,100 dc.w 141,100 dc.w 144,100 dc.w 147,100 dc.w 150,100 dc.w 153,100 dc.w 156,100 CWζK^euheWxV4OT]{Gx3Կ4>3UCDލ64=28\VeHsjCE6UEVea;V}2iFIY4ļqUugvxυ\^㴺zUw3{5224TA쮮H3#BMS2tKŦlUvvHNjLDEEfe63BgilTvVUZjkjVwl~KVVegzD̫7*~Yv%vgљVgED%gzUw}~NYDNbE>SfUYg!kyugzdf4wjX/v*fej]K94DdfʼJdk[eSrjdܸzXTd\=CKˬ;ǫvUTYexzui㹛jƍ]3dU3/VGCu;_yWgeDCKTUqeZfx<-hE>TC*c3^NVKU纪ZpG5 gpQXieWxMR43>c giHyV5D}h؅WO%YtEUs7r3c3\;\C68̌Twvf^`dxyj-f{hdUywY43Z7/CVECZd̜T?GxV;Veii4}z.&4eDfdžO34jDC?B9<|kޫefv6UehV^q,NFEnc?E4I'ṩ&V-ViUxm!yT JSR SETSUPER JSR SETSCREEN JSR CLEARSCREENS JSR SETPREDISTTEXT JSR FIXCURVE JSR FIXSINCURVE JSR INIT SETVAR: MOVE.L #SINCURVE,SINCURVEPTR MOVE.L #SINCURVE,OLDSCURVEPTR MOVE.L #SINCURVE_2,SINCURVEPTR_2 MOVE.L #SINCURVE_2,OLDSCURVEPTR_2 MOVE.L #$0777,$FF8240 MOVE.L #$00070777,$FF8244 MOVE.L #$00060777,$FF8248 MOVE.L #$02270777,$FF824C * RTS MOVE.W #5120-32*16,DISTTEXTPTRP DEMOLOOP: JSR WAITVBL CMP.B #$4D,$FC02.W BNE NOA MOVE.W #0,DISTTEXTPTRP NOA: CMP.B #$4B,$FC02.W BNE NOB MOVE.W #5120-32*16,DISTTEXTPTRP NOB: JMP DEMOLOOP * * SUB - ROUTS * * SETSUPER: CLR.L -(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP MOVE.L D0,SAVESUPER RTS ENDSUPER: MOVE.L SAVESUPER,-(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP RTS * SETSCREEN: MOVE.W #0,-(SP) MOVE.L #$78000,-(SP) MOVE.L #$78000,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP RTS * SCREENSWAP: MOVE.W #-1,-(SP) MOVE.L $44E,-(SP) MOVE.L $44E,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP CMP.L #$70,$44E BEQ SCREENSWAP2 MOVE.L #$70,$44E RTS SCREENSWAP2: MOVE.L #$78000,$44E RTS * INIT: MOVE.W #$2700,SR MOVE.L #NEWVBL,$70.W MOVE.L #NEWHBL,$120.W CLR.B $FA07.W CLR.B $FA09.W ORI.B #1,$FA07.W ORI.B #1,$FA13.W CLR.B $FA1B.W MOVE.W #$2300,SR RTS * CLEARSCREENS: MOVE.L #$70,A0 MOVE.L #$78000,A1 MOVE.W #7999,D0 CLEARSCREENSLOOP: CLR.L (A0)+ CLR.L (A1)+ DBF.W D0,CLEARSCREENSLOOP RTS * WAITVBL: CMP.W #1,WFNC BNE.S WAITVBL MOVE.W #0,WFNC RTS * * FIX SINUS CURVE TO SCR.FORM * * FIXSINCURVE: MOVE.L #SINCURVE,A0 MOVE.L #SINCURVE,A1 MOVE.L #NIBBLES,A2 MOVE.L #(1080*2*2)-1,D3 FIXSINCURVELOOP: CLR.L D0 CLR.L D1 CLR.L D2 MOVE.W (A0)+,D0 MOVE.W (A0)+,D1 MULS #160,D1 MOVE.W D0,D2 AND.W #$FFF0,D2 ASR.W D2 ADD.W D2,D1 AND.W #$000F,D0 ASL.W D0 MOVE.W (A2,D0.W),D0 MOVE.W D1,(A1)+ MOVE.W D0,(A1)+ DBF.W D3,FIXSINCURVELOOP RTS * * PUT SINUSCURVE ON SCREEN * * CLRSINCURVE: CLR.L D1 CLR.L D2 MOVE.L OLDSCURVEPTR2,A0 MOVE.L $44E,A1 MOVE.L #359,D0 CLRSINCURVELOOP: MOVE.W (A0),D1 CLR.W 2(A1,D1.W) ADD.W #4,A0 DBF.W D0,CLRSINCURVELOOP RTS * CLRSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L OLDSCURVEPTR2_2,A0 MOVE.L $44E,A1 MOVE.L #359,D0 CLRSINCURVELOOP_2: MOVE.W (A0),D1 CLR.W 4(A1,D1.W) ADD.W #4,A0 DBF.W D0,CLRSINCURVELOOP_2 RTS * SHOWSINCURVE: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR,A0 MOVE.L $44E,A1 MOVE.L #359,D0 SHOWSINCURVELOOP: MOVE.W (A0),D1 MOVE.W 2(A0),D2 OR.W D2,2(A1,D1.W) ADD.W #4,A0 DBF.W D0,SHOWSINCURVELOOP RTS * SHOWSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR_2,A0 MOVE.L $44E,A1 MOVE.L #359,D0 SHOWSINCURVELOOP_2: MOVE.W (A0),D1 MOVE.W 2(A0),D2 OR.W D2,4(A1,D1.W) ADD.W #4,A0 DBF.W D0,SHOWSINCURVELOOP_2 RTS * * 1 - PIXEL DISTING LOGO * * FIXCURVE: LEA SLOGOCURVE,A0 MOVE.W #720*2-1,D0 FIXCURVELOOP: CLR.L D1 MOVE.W (A0),D1 MULS #160,D1 MOVE.W D1,(A0)+ DBF.W D0,FIXCURVELOOP * GETNEWCURVEP: ADDQ.L #2,SLOGOCURVEPTR CMP.L #SLOGOCURVEEND,SLOGOCURVEPTR BNE GETNEWCURVEPEND MOVE.L #SLOGOCURVE,SLOGOCURVEPTR GETNEWCURVEPEND: RTS * SETPREDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 MOVE.L #DISTTEXT,DISTTEXTPTR MOVE.L #1,D7 SETPREDISTTEXTLOOP: CLR.L D0 MOVE.L DISTTEXTPTR,A1 MOVE.B (A1)+,D0 CMP.B #$FF,D0 BEQ SETPREDISTWRAP MOVE.L A1,DISTTEXTPTR SUB.W #32,D0 MULS.W #16*2,D0 MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%00010 ,D1 "MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 1000,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 100,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%01,D1 MOVE.W D1,(A0)+ ENDR BRA SETPREDISTTEXTLOOP SETPREDISTWRAP: MOVE.L #DISTTEXT2,DISTTEXTPTR DBF.W D7,SETPREDISTTEXTLOOP RTS * SETDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLR.L D0 SETDISTTEXTLOOP: REPT 16 MOVE.W (A2)+,D0 MOVE.L A1,A3 ADD.W D0,A3 MOVE.W (A0)+,D1 OR.W D1,(A3) MOVE.W (A0)+,D1 OR.W D1,160(A3) MOVE.W (A0)+,D1 OR.W D1,2*160(A3) MOVE.W (A0)+,D1 OR.W D1,3*160(A3) MOVE.W (A0)+,D1 OR.W D1,4*160(A3) MOVE.W (A0)+,D1 OR.W D1,5*160(A3) MOVE.W (A0)+,D1 OR.W D1,6*160(A3) MOVE.W (A0)+,D1 OR.W D1,7*160(A3) MOVE.W (A0)+,D1 OR.W D1,8*160(A3) MOVE.W (A0)+,D1 OR.W D1,9*160(A3) MOVE.W (A0)+,D1 OR.W D1,10*160(A3) MOVE.W (A0)+,D1 OR.W D1,11*160(A3) MOVE.W (A0)+,D1 OR.W D1,12*160(A3) MOVE.W (A0)+,D1 OR.W D1,13*160(A3) MOVE.W (A0)+,D1 OR.W D1,14*160(A3) MOVE.W (A0)+,D1 OR.W D1,15*160(A3) ENDR ADDQ.W #8,A1 DBF.W D7,SETDISTTEXTLOOP RTS * CLRDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLRDISTTEXTLOOP: MOVE.W (A2),D0 MOVE.W 32(A2),D1 MOVE.L A1,A3 MOVE.L A1,A4 ADD.W #32,A2 ADD.W D0,A3 ADD.W D1,A4 CLR.W -160*5(A3) CLR.W -160*4(A3) CLR.W -160*3(A3) CLR.W -160*2(A3) CLR.W -160(A3) CLR.W (A3) CLR.W 160(A3) CLR.W 160*2(A3) CLR.W 160*3(A3) CLR.W 160*4(A3) CLR.W 160*5(A3) CLR.W 160*6(A3) CLR.W 160*7(A3) CLR.W 160*8(A3) CLR.W 160*9(A3) CLR.W 160*10(A3) CLR.W 160*11(A3) CLR.W 160*12(A3) CLR.W 160*13(A3) CLR.W 160*14(A3) CLR.W 160*15(A3) CLR.W 160*16(A3) CLR.W 160*17(A3) CLR.W 160*18(A3) CLR.W 160*19(A3) CLR.W 160*20(A3) CLR.W -160*5(A4) CLR.W -160*4(A4) CLR.W -160*3(A4) CLR.W -160*2(A4) CLR.W -160(A4) CLR.W (A4) CLR.W 160(A4) CLR.W 160*2(A4) CLR.W 160*3(A4) CLR.W 160*4(A4) CLR.W 160*5(A4) CLR.W 160*6(A4) CLR.W 160*7(A4) CLR.W 160*8(A4) CLR.W 160*9(A4) CLR.W 160*10(A4) CLR.W 160*11(A4) CLR.W 160*12(A4) CLR.W 160*13(A4) CLR.W 160*14(A4) CLR.W 160*15(A4) CLR.W 160*16(A4) CLR.W 160*17(A4) CLR.W 160*18(A4) CLR.W 160*19(A4) CLR.W 160*20(A4) ADDQ.W #8,A1 DBF.W D7,CLRDISTTEXTLOOP RTS * * VBL * * NEWVBL: MOVE.W #$000,$FF8240 MOVE.L #NEWHBL,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W JSR CLRDISTTEXT JSR SETDISTTEXT JSR GETNEWCURVEP JSR GETNEWCURVEP JSR GETNEWCURVEP MOVE.L OLDSCURVEPTR,OLDSCURVEPTR2 MOVE.L SINCURVEPTR,OLDSCURVEPTR MOVE.L OLDSCURVEPTR_2,OLDSCURVEPTR2_2 MOVE.L SINCURVEPTR_2,OLDSCURVEPTR_2 ADDQ.L #4,SINCURVEPTR CMP.L #SINCURVEEND,SINCURVEPTR BNE NORESTORESINCURVE MOVE.L #SINCURVE,SINCURVEPTR NORESTORESINCURVE: ADDQ.L #4,SINCURVEPTR_2 CMP.L #SINCURVEEND_2,SINCURVEPTR_2 BNE NORESTORESINCURVE_2 MOVE.L #SINCURVE_2,SINCURVEPTR_2 NORESTORESINCURVE_2: JSR CLRSINCURVE JSR CLRSINCURVE_2 JSR SHOWSINCURVE JSR SHOWSINCURVE_2 JSR SCREENSWAP MOVE.W #1,WFNC RTE * NEWHBL: CLR.B $FA1B.W MOVE.W #$227,$FF8240 MOVE.L #NEWHBL2,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL2: MOVE.W #$004,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL3,$120.W MOVE.B #197,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL3: MOVE.W #$227,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL4,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL4: MOVE.W #$000,$FF8240 CLR.B $FA1B.W BCLR #0,$FA0F.W RTE * * VARIABLES * * SAVESUPER: DC.L 0 OLDVBL: DC.L 0 WFNC: DC.W 0 DISTTEXTPTR: DC.L 0 DISTTEXTPTRP: DC.W 0 DISTTEXT: DC.B ' LOADING ',$FF DISTTEXT2: DC.B 'DEPACKING',$FF FONT: INCBIN B:\16FONT1.DAT NIBBLES: DC.W $8000,$4000,$2000,$1000,$800,$400,$200,$100,$80,$40,$20,$10,$8,$4,$2,$1 SLOGOCURVEPTR: DC.L SLOGOCURVE SLOGOCURVE: INCLUDE A:\BDISTCUR.DAT SLOGOCURVEEND: INCLUDE A:\BDISTCUR.DAT SINCURVEPTR: DC.L 0 OLDSCURVEPTR: DC.L 0 OLDSCURVEPTR2: DC.L 0 SINCURVEPTR_2: DC.L 0 OLDSCURVEPTR_2: DC.L 0 OLDSCURVEPTR2_2:DC.L 0 SINCURVE: INCLUDE A:\BRAIN.DAT SINCURVEEND: INCLUDE A:\BRAIN.DAT SINCURVE_2: INCLUDE A:\BLOMMA.DAT SINCURVEEND_2: INCLUDE A:\BLOMMA.DAT EVEN DISTTEXTBUFF: DS.B 5120 DISTTEXTBUFF2: DS.B 5120  h"Y/ӈ##}_#K^4Y^4>&-.⊈G4="? #RB/$Ρ=MM=.2>/0=?@{VUU{EDUv7TWYDTjxUU{TDezYDdݽVVDuUhVUZDDgkDuxޜeUDjVeiUFܼUDTjfZDkUEThWeWUU̫DDeZSJvDdeVfVUe{DDeixETUWDefUfxVUZDDvgfEݽUUDwUUwffUIDTvUD|eET{hUUxVUU̼VDT{geYDg\wETw$$$6BwqWDr3  b "r'>|ExW}<<`6(@@ETET[A@"'*@@EPTETUA@" "gpE09Dבqx#"`1G" )H@AQE"" )DQD"@H1P@AQE"" 1DQ8r r'=|E"r D^>"qσ  e(6"e(  U(*U} b("b R(""R b(""b>q|<r(>Ȣr<V@I"(@"V@"@"Vyȼ >#, /KOY9  %/?FF?.򰋈,=5" %=L]V' "+7?GG?!ޣ)4* ,?S[H$/7?DD7ˡ '*#/GTV: */7>B=&"# $8IUO.$,/8>?6㽰  +=MVC!(-3:>:'ҷ "2DOO8 $+/5<;/˼  '9GOH. '*/794'   -=IM="  CLR.L -(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP JSR READSECTOR MOVE.L #$10,A0 JSR ice_decrunch_2 JSR RELOCATE JSR $10 JSR READSECTOR2 MOVE.L #$10,A0 JSR ice_decrunch_2 JSR RELOCATE JSR $10 CLR.W -(SP) TRAP #1 *K READSECTOR: MOVE.W #0,-(SP) * ENHET MOVE.W #246,-(SP) * STARTSEKTOR MOVE.W #54,-(SP) * ANTAL MOVE.L #$10,-(SP) * BUFFERT ADDRESS MOVE.W #0,-(SP) * SKRIV MOVE.W #4,-(SP) TRAP #13 LEA 14(SP),SP RTS READSECTOR2: MOVE.W #0,-(SP) * ENHET MOVE.W #20,-(SP) * STARTSEKTOR MOVE.W #117,-(SP) * ANTAL MOVE.L #$10,-(SP) * BUFFERT ADDRESS MOVE.W #0,-(SP) * SKRIV MOVE.W #4,-(SP) TRAP #13 LEA 14(SP),SP RTS *K RELOCATE: MOVE.L #$10,A0 MOVE.L 2(A0),D0 ADD.L 6(A0),D0 ADD.L 14(A0),D0 ADD.L #$1C,A0 MOVE.L A0,A1  MOVE.L A1,A2  MOVE.L #$10,d1 ADD.W #$1c,D1 ADD.L D0,A1  MOVE.L (A1)+,D0 ADD.L D0,A2  ADD.L D1,(A2) CLR.L D0  RELO: MOVE.B (A1)+,D0 BEQ RELEND  CMP.B #1,D0  BEQ RELOJUMP  ADD.L D0,A2  ADD.L D1,(A2) BRA RELO  RELOJUMP: ADD.L #254,A2 BRA RELO  RELEND: RTS * ;*- Unpacking routine of PACK-ICE ; a0 = Adress of packed data ; "bsr" or "jsr" to ice_decrunch_2 with register a0 prepared. ice_decrunch_2: link a3,#-120 movem.l d0-a6,-(sp) lea 120(a0),a4 move.l a4,a6 bsr .getinfo cmpi.l #'ICE!',d0 bne .not_packed bsr.s .getinfo lea.l -8(a0,d0.l),a5 bsr.s .getinfo move.l d0,(sp) adda.l d0,a6 move.l a6,a1 moveq #119,d0 .save: move.b -(a1),-(a3) dbf d0,.save move.l a6,a3 move.b -(a5),d7 bsr.s .normal_bytes move.l a3,a5 bsr .get_1_bit bcc.s .no_picture move.w #$0f9f,d7 bsr .get_1_bit bcec.s .ice_00 moveq #15,d0 bsr .get_d0_bits move.w d1,d7 .ice_00: moveq #3,d6 .ice_01: move.w -(a3),d4 moveq #3,d5 .ice_02: add.w d4,d4 addx.w d0,d0 add.w d4,d4 addx.w d1,d1 add.w d4,d4 addx.w d2,d2 add.w d4,d4 addx.w d3,d3 dbra d5,.ice_02 dbra d6,.ice_01 movem.w d0-d3,(a3) dbra d7,.ice_00 .no_picture movem.l (sp),d0-a3 .move move.b (a4)+,(a0)+ subq.l #1,d0 bne.s .move moveq #119,d0 .rest move.b -(a3),-(a5) dbf d0,.rest .not_packed: movem.l (sp)+,d0-a6 unlk a3 rts .getinfo: moveq #3,d1 .getbytes: lsl.l #8,d0 move.b (a0)+,d0 dbf d1,.getbytes rts .normal_bytes: bsr.s .get_1_bit bcc.s .test_if_end moveq.l #0,d1 bsr.s .get_1_bit bcc.s .copy_direkt lea.l .direkt_tab+20(pc),a1 moveq.l #4,d3 .nextgb: move.l -(a1),d0 bsr.s .get_d0_bits swap.w d0 cmp.w d0,d1 dbne d3,.nextgb .no_more: add.l 20(a1),d1 .copy_direkt: move.b -(a5),-(a6) dbf d1,.copy_direkt .test_if_end: cmpa.l a4,a6 bgt.s .strings rts .get_1_bit: add.b d7,d7 bne.s .bitfound move.b -(a5),d7 addx.b d7,d7 .bitfound: rts .get_d0_bits: moveq.l #0,d1 .hole_bit_loop: add.b d7,d7 bne.s .on_d0 move.b -(a5),d7 addx.b d7,d7 .on_d0: addx.w d1,d1 dbf d0,.hole_bit_loop rts .strings: lea.l .length_tab(pc),a1 moveq.l #3,d2 .get_length_bit: bsr.s .get_1_bit dbcc d2,.get_length_bit .no_length_bit: moveq.l #0,d4 moveq.l #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bmi.s .no_ber .get_ber: bsr.s .get_d0_bits .no_ber: move.b 6(a1,d2.w),d4 add.w d1,d4 beq.s .get_offset_2 lea.l .more_offset(pc),a1 moveq.l #1,d2 .getoffs: bsr.s .get_1_bit dbcc d2,.getoffs moveq.l #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bsr.s .get_d0_bits add.w d2,d2 add.w 6(a1,d2.w),d1 bpl.s .depack_bytes sub.w d4,d1 bra.s .depack_bytes .get_offset_2: moveq.l #0,d1 moveq.l #5,d0 moveq.l #-1,d2 bsr.s .get_1_bit bcc.s .less_40 moveq.l #8,d0 moveq.l #$3f,d2 .less_40: bsr.s .get_d0_bits add.w d2,d1 .depack_bytes: lea.l 2(a6,d4.w),a1 adda.w d1,a1 move.b -(a1),-(a6) .dep_b: move.b -(a1),-(a6) dbf d4,.dep_b bra .normal_bytes .direkt_tab: dc.l $7fff000e,$00ff0007,$00070002,$00030001,$00030001 dc.l 270-1, 15-1, 8-1, 5-1, 2-1 .length_tab: dc.b 9,1,0,-1,-1 dc.b 8,4,2,1,0 .more_offset: dc.b 11, 4, 7, 0 ; Bits lesen dc.w $11f, -1, $1f ; Standard Offset ende_ice_decrunch_2: ;*2 end of unpacking routine       !"      !                                                      w#8Lxxl(@P?TU* @P?TU* @P?TU* @P?TU* @P?TU* ~~@P?TU* @P?TU* @P?TU* /~@P?TU* >>>>>>>~~?>p>>p>>>x<>>>>>>>>><>>>>>>~>>x>>>>>p>>    @P?TU* @P?TU* @P?TU* ~q@@ʬj**jʰ>>>>>>>>>><<>>><<>|>>>>>>>x<>>>>>>>>>><>>>>>x>>>>>x>>>~~>>>x>xx<~>>>>>>>>>x<>>>>>>>>>>>x<>>>>>>>>>>>>>v>>>~>>>>p>>>>>>>>>>><x<>>>>>>>>>>>x<>>>>>>>~~?x<>>>>>>>>>~x<x<>>>~~??~>>>x<>>>>>>>q?>".  ծóe1H%=;.=66=9;>==>>>Ux]eobeece^-  ʪûeLOADER: MOVE.W D0,PART * JSR SETSUPER JSR SETSCREEN JSR CLEARSCREENS JSR SETPREDISTTEXT JSR FIXCURVE JSR FIXSINCURVE JSR INIT JSR SETVAR JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR MOVE.W #4608,DISTTEXTPTRP MOVE.L #$20,A0 JSR ice_decrunch_2 JSR RELOCATE JSR RETINIT JSR $20 MOVE.W #0,D0 JMP LOADER *K READSECTOR: MOVE.W #0,-(SP) * ENHET MOVE.W START,-(SP) * STARTSEKTOR MOVE.W ANTAL,-(SP) * ANTAL MOVE.L #$20,-(SP) * BUFFERT ADDRESS MOVE.W #0,-(SP) * SKRIV MOVE.W #4,-(SP) TRAP #13 LEA 14(SP),SP RTS *K CHOOSEPART: MOVE.L #SECTORS,A0 CLR.L D0 MOVE.W PART,D0 MULS #4,D0 ADD.W D0,A0 MOVE.W (A0)+,START MOVE.W (A0)+,ANTAL RTS * * SUB - ROUTS * * SETSUPER: CLR.L -(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP MOVE.L D0,SAVESUPER RTS ENDSUPER: MOVE.L SAVESUPER,-(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP RTS * SETVAR: MOVE.L #SINCURVE,SINCURVEPTR MOVE.L #SINCURVE,OLDSCURVEPTR MOVE.L #SINCURVE_2,SINCURVEPTR_2 MOVE.L #SINCURVE_2,OLDSCURVEPTR_2 MOVE.L #$0777,$FF8240 MOVE.L #$00070777,$FF8244 MOVE.L #$00060777,$FF8248 MOVE.L #$02270777,$FF824C RTS * SETSCREEN: MOVE.W #0,-(SP) MOVE.L #$78000,-(SP) MOVE.L #$78000,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP RTS * SCREENSWAP: MOVE.W #-1,-(SP) MOVE.L $44E,-(SP) MOVE.L $44E,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP CMP.L #$70,$44E BEQ SCREENSWAP2 MOVE.L #$70,$44E RTS SCREENSWAP2: MOVE.L #$78000,$44E RTS * INIT: MOVE.W #$2700,SR MOVE.L $70.W,OLDVBL MOVE.L $120.W,OLDHBL MOVE.B $FA07.W,OLD07 MOVE.B $FA09.W,OLD09 MOVE.B $FA13.W,OLD13 MOVE.B $FA1B.W,OLD1B MOVE.L #NEWVBL,$70.W MOVE.L #NEWHBL,$120.W CLR.B $FA07.W CLR.B $FA09.W ORI.B #1,$FA07.W ORI.B #1,$FA13.W CLR.B $FA1B.W MOVE.W #$2300,SR RTS RETINIT: MOVE.W #$2700,SR MOVE.L OLDVBL,$70.W MOVE.L OLDHBL,$120.W MOVE.B OLD07,$FA07.W MOVE.B OLD09,$FA09.W MOVE.B OLD13,$FA13.W MOVE.B OLD1B,$FA1B.W MOVE.W #$2300,SR RTS * CLEARSCREENS: MOVE.L #$70,A0 MOVE.L #$78000,A1 MOVE.W #7999,D0 CLEARSCREENSLOOP: CLR.L (A0)+ CLR.L (A1)+ DBF.W D0,CLEARSCREENSLOOP RTS * WAITVBL: CMP.W #1,WFNC BNE.S WAITVBL MOVE.W #0,WFNC RTS * * FIX SINUS CURVE TO SCR.FORM * * FIXSINCURVE: MOVE.L #SINCURVE,A0 MOVE.L #SINCURVE,A1 MOVE.L #NIBBLES,A2 MOVE.L #(1080*2*2)-1,D3 FIXSINCURVELOOP: CLR.L D0 CLR.L D1 CLR.L D2 MOVE.W (A0)+,D0 MOVE.W (A0)+,D1 MULS #160,D1 MOVE.W D0,D2 AND.W #$FFF0,D2 ASR.W D2 ADD.W D2,D1 AND.W #$000F,D0 ASL.W D0 MOVE.W (A2,D0.W),D0 MOVE.W D1,(A1)+ MOVE.W D0,(A1)+ DBF.W D3,FIXSINCURVELOOP RTS * * PUT SINUSCURVE ON SCREEN * * CLRSINCURVE: CLR.L D1 CLR.L D2 MOVE.L OLDSCURVEPTR2,A0 MOVE.L $44E,A1 MOVE.L #359,D0 CLRSINCURVELOOP: MOVE.W (A0),D1 CLR.W 2(A1,D1.W) ADD.W #4,A0 DBF.W D0,CLRSINCURVELOOP RTS * CLRSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L OLDSCURVEPTR2_2,A0 MOVE.L $44E,A1 MOVE.L #359,D0 CLRSINCURVELOOP_2: MOVE.W (A0),D1 CLR.W 4(A1,D1.W) ADD.W #4,A0 DBF.W D0,CLRSINCURVELOOP_2 RTS * SHOWSINCURVE: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR,A0 MOVE.L $44E,A1 MOVE.L #359,D0 SHOWSINCURVELOOP: MOVE.W (A0),D1 MOVE.W 2(A0),D2 OR.W D2,2(A1,D1.W) ADD.W #4,A0 DBF.W D0,SHOWSINCURVELOOP RTS *  SHOWSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR_2,A0 MOVE.L $44E,A1 MOVE.L #359,D0 SHOWSINCURVELOOP_2: MOVE.W (A0),D1 MOVE.W 2(A0),D2 OR.W D2,4(A1,D1.W) ADD.W #4,A0 DBF.W D0,SHOWSINCURVELOOP_2 RTS * * 1 - PIXEL DISTING LOGO * * FIXCURVE: LEA SLOGOCURVE,A0 MOVE.W #720*2-1,D0 FIXCURVELOOP: CLR.L D1 MOVE.W (A0),D1 MULS #160,D1 MOVE.W D1,(A0)+ DBF.W D0,FIXCURVELOOP * GETNEWCURVEP: ADDQ.L #2,SLOGOCURVEPTR CMP.L #SLOGOCURVEEND,SLOGOCURVEPTR BNE GETNEWCURVEPEND MOVE.L #SLOGOCURVE,SLOGOCURVEPTR GETNEWCURVEPEND: RTS * SETPREDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 MOVE.L #DISTTEXT,DISTTEXTPTR MOVE.L #1,D7 SETPREDISTTEXTLOOP: CLR.L D0 MOVE.L DISTTEXTPTR,A1 MOVE.B (A1)+,D0 CMP.B #$FF,D0 BEQ SETPREDISTWRAP MOVE.L A1,DISTTEXTPTR SUB.W #32,D0 MULS.W #16*2,D0 MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%00010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 1000,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 100,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%01,D1 MOVE.W D1,(A0)+ ENDR BRA SETPREDISTTEXTLOOP SETPREDISTWRAP: MOVE.L #DISTTEXT2,DISTTEXTPTR DBF.W D7,SETPREDISTTEXTLOOP RTS * SETDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLR.L D0 SETDISTTEXTLOOP: REPT 16 MOVE.W (A2)+,D0 MOVE.L A1,A3 ADD.W D0,A3 MOVE.W (A0)+,D1 OR.W D1,(A3) MOVE.W (A0)+,D1 OR.W D1,160(A3) MOVE.W (A0)+,D1 OR.W D1,2*160(A3) MOVE.W (A0)+,D1 OR.W D1,3*160(A3) MOVE.W (A0)+,D1 OR.W D1,4*160(A3) MOVE.W (A0)+,D1 OR.W D1,5*160(A3) MOVE.W (A0)+,D1 OR.W D1,6*160(A3) MOVE.W (A0)+,D1 OR.W D1,7*160(A3) MOVE.W (A0)+,D1 OR.W D1,8*160(A3) MOVE.W (A0)+,D1 OR.W D1,9*160(A3) MOVE.W (A0)+,D1 OR.W D1,10*160(A3) MOVE.W (A0)+,D1 OR.W D1,11*160(A3) MOVE.W (A0)+,D1 OR.W D1,12*160(A3) MOVE.W (A0)+,D1 OR.W D1,13*160(A3) MOVE.W (A0)+,D1 OR.W D1,14*160(A3) MOVE.W (A0)+,D1 OR.W D1,15*160(A3) ENDR ADDQ.W #8,A1 DBF.W D7,SETDISTTEXTLOOP RTS * CLRDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLRDISTTEXTLOOP: MOVE.W (A2),D0 MOVE.W 32(A2),D1 MOVE.L A1,A3 MOVE.L A1,A4 ADD.W #32,A2 ADD.W D0,A3 ADD.W D1,A4 CLR.W -160*5(A3) CLR.W -160*4(A3) CLR.W -160*3(A3) CLR.W -160*2(A3) CLR.W -160(A3) CLR.W (A3) CLR.W 160(A3) CLR.W 160*2(A3) CLR.W 160*3(A3) CLR.W 160*4(A3) CLR.W 160*5(A3) CLR.W 160*6(A3) CLR.W 160*7(A3) CLR.W 160*8(A3) CLR.W 160*9(A3) CLR.W 160*10(A3) CLR.W 160*11(A3) CLR.W 160*12(A3) CLR.W 160*13(A3) CLR.W 160*14(A3) CLR.W 160*15(A3) CLR.W 160*16(A3) CLR.W 160*17(A3) CLR.W 160*18(A3) CLR.W 160*19(A3) CLR.W 160*20(A3) CLR.W -160*5(A4) CLR.W -160*4(A4) CLR.W -160*3(A4) CLR.W -160*2(A4) CLR.W -160(A4) CLR.W (A4) CLR.W 160(A4) CLR.W 160*2(A4) CLR.W 160*3(A4) CLR.W 160*4(A4) CLR.W 160*5(A4) CLR.W 160*6(A4) CLR.W 160*7(A4) CLR.W 160*8(A4) CLR.W 160*9(A4) CLR.W 160*10(A4) CLR.W 160*11(A4) CLR.W 160*12(A4) CLR.W 160*13(A4) CLR.W 160*14(A4) CLR.W 160*15(A4) CLR.W 160*16(A4) CLR.W 160*17(A4) CLR.W 160*18(A4) CLR.W 160*19(A4) CLR.W 160*20(A4) ADDQ.W #8,A1 DBF.W D7,CLRDISTTEXTLOOP RTS * * VBL * * NEWVBL: MOVE.W #$000,$FF8240 MOVE.L #NEWHBL,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W JSR CLRDISTTEXT JSR SETDISTTEXT JSR GETNEWCURVEP JSR GETNEWCURVEP JSR GETNEWCURVEP MOVE.L OLDSCURVEPTR,OLDSCURVEPTR2 MOVE.L SINCURVEPTR,OLDSCURVEPTR MOVE.L OLDSCURVEPTR_2,OLDSCURVEPTR2_2 MOVE.L SINCURVEPTR_2,OLDSCURVEPTR_2 ADDQ.L #4,SINCURVEPTR CMP.L #SINCURVEEND,SINCURVEPTR BNE NORESTORESINCURVE MOVE.L #SINCURVE,SINCURVEPTR NORESTORESINCURVE: ADDQ.L #4,SINCURVEPTR_2 CMP.L #SINCURVEEND_2,SINCURVEPTR_2 BNE NORESTORESINCURVE_2 MOVE.L #SINCURVE_2,SINCURVEPTR_2 NORESTORESINCURVE_2: JSR CLRSINCURVE JSR CLRSINCURVE_2 JSR SHOWSINCURVE JSR SHOWSINCURVE_2 JSR SCREENSWAP MOVE.W #1,WFNC RTE * NEWHBL: CLR.B $FA1B.W MOVE.W #$227,$FF8240 MOVE.L #NEWHBL2,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL2: MOVE.W #$004,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL3,$120.W MOVE.B #197,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL3: MOVE.W #$227,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL4,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL4: MOVE.W #$000,$FF8240 CLR.B $FA1B.W BCLR #0,$FA0F.W RTE *K RELOCATE: MOVE.L #$20,A0 MOVE.L 2(A0),D0 ADD.L 6(A0),D0 ADD.L 14(A0),D0 ADD.L #$1C,A0 MOVE.L A0,A1  MOVE.L A1,A2  MOVE.L #$20,d1 ADD.W #$1c,D1 ADD.L D0,A1  MOVE.L (A1)+,D0 ADD.L D0,A2  ADD.L D1,(A2) CLR.L D0  RELO: MOVE.B (A1)+,D0 BEQ RELEND  CMP.B #1,D0  BEQ RELOJUMP  ADD.L D0,A2  ADD.L D1,(A2) BRA RELO  RELOJUMP: ADD.L #254,A2 BRA RELO  RELEND: RTS * ;*- Unpacking routine of PACK-ICE ; a0 = Adress of packed data ; "bsr" or "jsr" to ice_decrunch_2 with register a0 prepared. ice_decrunch_2: link a3,#-120 movem.l d0-a6,-(sp) lea 120(a0),a4 move.l a4,a6 bsr .getinfo cmpi.l #'ICE!',d0 bne .not_packed bsr.s .getinfo lea.l -8(a0,d0.l),a5 bsr.s .getinfo move.l d0,(sp) adda.l d0,a6 move.l a6,a1 moveq #119,d0 .save: move.b -(a1),-(a3) dbf d0,.save move.l a6,a3 move.b -(a5),d7 bsr.s .normal_bytes move.l a3,a5 bsr .get_1_bit bcc.s .no_picture move.w #$0f9f,d7 bsr .get_1_bit bcc.s .ice_00 moveq #15,d0 bsr .get_d0_bits move.w d1,d7 .ice_00: moveq #3,d6 .ice_01: move.w -(a3),d4 moveq #3,d5 .ice_02: add.w d4,d4 addx.w d0,d0 add.w d4,d4 addx.w d1,d1 add.w d4,d4 addx.w d2,d2 add.w d4,d4 addx.w d3,d3 dbra d5,.ice_02 dbra d6,.ice_01 movem.w d0-d3,(a3) dbra d7,.ice_00 .no_picture movem.l (sp),d0-a3 .move move.b (a4)+,(a0)+ subq.l #1,d0 bne.s .move moveq #119,d0 .rest move.b -(a3),-(a5) dbf d0,.rest .not_packed: movem.l (sp)+,d0-a6 unlk a3 rts .getinfo: moveq #3,d1 .getbytes: lsl.l #8,d0 move.b (a0)+,d0 dbf d1,.getbytes rts .normal_bytes: bsr.s .get_1_bit bcc.s .test_if_end moveq.l #0,d1 bsr.s .get_1_bit bcc.s .copy_direkt lea.l .direkt_tab+20(pc),a1 moveq.l #4,d3 .nextgb: move.l -(a1),d0 bsr.s .get_d0_bits swap.w d0 cmp.w d0,d1 dbne d3,.nextgb .no_more: add.l 20(a1),d1 .copy_direkt: move.b -(a5),-(a6) dbf d1,.copy_direkt .test_if_end: cmpa.l a4,a6 bgt.s .strings rts .get_1_bit: add.b d7,d7 bne.s .bitfound move.b -(a5),d7 addx.b d7,d7 .bitfound: rts  .get_d0_bits: moveq.l #0,d1 .hole_bit_loop: add.b d7,d7 bne.s .on_d0 move.b -(a5),d7 addx.b d7,d7 .on_d0: addx.w d1,d1 dbf d0,.hole_bit_loop rts .strings: lea.l .length_tab(pc),a1 moveq.l #3,d2 .get_length_bit: bsr.s .get_1_bit dbcc d2,.get_length_bit .no_length_bit: moveq.l #0,d4 moveq.l #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bmi.s .no_ber .get_ber: bsr.s .get_d0_bits .no_ber: move.b 6(a1,d2.w),d4 add.w d1,d4 beq.s .get_offset_2 lea.l .more_offset(pc),a1 moveq.l #1,d2 .getoffs: bsr.s .get_1_bit dbcc d2,.getoffs moveq.l #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bsr.s .get_d0_bits add.w d2,d2 add.w 6(a1,d2.w),d1 bpl.s .depack_bytes sub.w d4,d1 bra.s .depack_bytes .get_offset_2: moveq.l #0,d1 moveq.l #5,d0 moveq.l #-1,d2 bsr.s .get_1_bit bcc.s .less_40 moveq.l #8,d0 moveq.l #$3f,d2 .less_40: bsr.s .get_d0_bits add.w d2,d1 .depack_bytes: lea.l 2(a6,d4.w),a1 adda.w d1,a1 move.b -(a1),-(a6) .dep_b: move.b -(a1),-(a6) dbf d4,.dep_b bra .normal_bytes .direkt_tab: dc.l $7fff000e,$00ff0007,$00070002,$00030001,$00030001 dc.l 270-1, 15-1, 8-1, 5-1, 2-1 .length_tab: dc.b 9,1,0,-1,-1 dc.b 8,4,2,1,0 .more_offset: dc.b 11, 4, 7, 0 ; Bits lesen dc.w $11f, -1, $1f ; Standard Offset ende_ice_decrunch_2: ;*2 end of unpacking routine * * VARIABLES * * SAVESUPER: DC.L 0 OLDVBL: DC.L 0 OLDHBL: DC.L 0 OLD07: DC.B 0 OLD09: DC.B 0 OLD13: DC.B 0 OLD1B: DC.B 0 WFNC: DC.W 0 PART: DC.W 0 START: DC.W 0 ANTAL: DC.W 0 SECTORS: DC.W 246,6 * ALTERNATIVE MENU DC.W 20,117 * 1STINTRO DC.W 138,22 * INTRO DC.W 161,84 * MAGGOT MASTER DC.W 253,77 * OB GUESTSCREEN 1 DISTTEXTPTR: DC.L 0 DISTTEXTPTRP: DC.W 0 DISTTEXT: DC.B ' LOADING ',$FF DISTTEXT2: DC.B 'DEPACKING',$FF FONT: INCBIN A:\LOADER\16FONT1.DAT NIBBLES: DC.W $8000,$4000,$2000,$1000,$800,$400,$200,$100,$80,$40,$20,$10,$8,$4,$2,$1 SLOGOCURVEPTR: DC.L SLOGOCURVE SLOGOCURVE: INCLUDE A:\LOADER\BDISTCUR.DAT SLOGOCURVEEND: INCLUDE A:\LOADER\BDISTCUR.DAT SINCURVEPTR: DC.L 0 OLDSCURVEPTR: DC.L 0 OLDSCURVEPTR2: DC.L 0 SINCURVEPTR_2: DC.L 0 OLDSCURVEPTR_2: DC.L 0 OLDSCURVEPTR2_2:DC.L 0 SINCURVE: INCLUDE A:\LOADER\BRAIN.DAT SINCURVEEND: INCLUDE A:\LOADER\BRAIN.DAT SINCURVE_2: INCLUDE A:\LOADER\BLOMMA.DAT SINCURVEEND_2: INCLUDE A:\LOADER\BLOMMA.DAT EVEN DISTTEXTBUFF: DCB.B 5120,0 DISTTEXTBUFF2: DCB.B 5120,0    #      '05/++-9Rb?              (04.().>Yb7䭭               )00)&*0D^b$          " +0,%&-6HibLOADER: MOVE.W D0,PART * JSR SETSUPER JSR SETSCREEN JSR CLEARSCREENS JSR SETPREDISTTEXT JSR FIXCURVE JSR FIXSINCURVE JSR INIT JSR SETVAR * JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR * MOVE.W #4608,DISTTEXTPTRP JSR RETINIT MOVE.L #$19000,A0 JSR ice_decrunch_2 JSR RELOCATE JSR $19000 MOVE.W #0,D0 JMP LOADER *K READSECTOR: MOVE.W #0,-(SP) * ENHET MOVE.W #246,-(SP) * STARTSEKTOR MOVE.W #6,-(SP) * ANTAL MOVE.L #$19000,-(SP) * BUFFERT ADDRESS MOVE.W #0,-(SP) * SKRIV MOVE.W #4,-(SP) TRAP #13 LEA 14(SP),SP RTS *K CHOOSEPART: MOVE.L #SECTORS,A0 CLR.L D0 MOVE.W PART,D0 MULS #4,D0 ADD.W D0,A0 MOVE.W (A0)+,START MOVE.W (A0)+,ANTAL RTS * * SUB - ROUTS * * SETSUPER: CLR.L -(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP MOVE.L D0,SAVESUPER RTS ENDSUPER: MOVE.L SAVESUPER,-(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP RTS * SETVAR: MOVE.L #SINCURVE,SINCURVEPTR MOVE.L #SINCURVE,OLDSCURVEPTR MOVE.L #SINCURVE_2,SINCURVEPTR_2 MOVE.L #SINCURVE_2,OLDSCURVEPTR_2 MOVE.L #$0777,$FF8240 MOVE.L #$00070777,$FF8244 MOVE.L #$00060777,$FF8248 MOVE.L #$02270777,$FF824C RTS * SETSCREEN: MOVE.W #0,-(SP) MOVE.L #$78000,-(SP) MOVE.L #$78000,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP RTS * SCREENSWAP: MOVE.W #-1,-(SP) MOVE.L $44E,-(SP) MOVE.L $44E,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP CMP.L #$70,$44E BEQ SCREENSWAP2 MOVE.L #$70,$44E RTS SCREENSWAP2: MOVE.L #$78000,$44E RTS * INIT: MOVE.W #$2700,SR MOVE.L $70.W,OLDVBL MOVE.L $120.W,OLDHBL MOVE.B $FA07.W,OLD07 MOVE.B $FA09.W,OLD09 MOVE.B $FA13.W,OLD13 MOVE.B $FA1B.W,OLD1B MOVE.L #NEWVBL,$70.W MOVE.L #NEWHBL,$120.W CLR.B $FA07.W CLR.B $FA09.W ORI.B #1,$FA07.W ORI.B #1,$FA13.W CLR.B $FA1B.W MOVE.W #$2300,SR RTS RETINIT: MOVE.W #$2700,SR MOVE.L OLDVBL,$70.W MOVE.L OLDHBL,$120.W MOVE.B OLD07,$FA07.W MOVE.B OLD09,$FA09.W MOVE.B OLD13,$FA13.W MOVE.B OLD1B,$FA1B.W MOVE.W #$2300,SR RTS * CLEARSCREENS: MOVE.L #$70,A0 MOVE.L #$78000,A1 MOVE.W #7999,D0 CLEARSCREENSLOOP: CLR.L (A0)+ CLR.L (A1)+ DBF.W D0,CLEARSCREENSLOOP RTS * WAITVBL: CMP.W #1,WFNC BNE.S WAITVBL MOVE.W #0,WFNC RTS * * FIX SINUS CURVE TO SCR.FORM * * FIXSINCURVE: MOVE.L #SINCURVE,A0 MOVE.L #SINCURVE,A1 MOVE.L #NIBBLES,A2 MOVE.L #(1080*2*2)-1,D3 FIXSINCURVELOOP: CLR.L D0 CLR.L D1 CLR.L D2 MOVE.W (A0)+,D0 MOVE.W (A0)+,D1 MULS #160,D1 MOVE.W D0,D2 AND.W #$FFF0,D2 ASR.W D2 ADD.W D2,D1 AND.W #$000F,D0 ASL.W D0 MOVE.W (A2,D0.W),D0 MOVE.W D1,(A1)+ MOVE.W D0,(A1)+ DBF.W D3,FIXSINCURVELOOP RTS * * PUT SINUSCURVE ON SCREEN * * CLRSINCURVE: CLR.L D1 CLR.L D2 MOVE.L OLDSCURVEPTR2,A0 MOVE.L $44E,A1 MOVE.L #359,D0 CLRSINCURVELOOP: MOVE.W (A0),D1 CLR.W 2(A1,D1.W) ADD.W #4,A0 DBF.W D0,CLRSINCURVELOOP RTS * CLRSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L OLDSCURVEPTR2_2,A0 MOVE.L $44E,A1 MOVE.L #359,D0 CLRSINCURVELOOP_2: MOVE.W (A0),D1 CLR.W 4(A1,D1.W) ADD.W #4,A0 DBF.W D0,CLRSINCURVELOOP_2 RTS * SHOWSINCURVE: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR,A0 MOVE.L $44E,A1 MOVE.L #359,D0 SHOWSINCURVELOOP: MOVE.W (A0),D1 MOVE.W 2(A0),D2 OR.W D2,2(A1,D1.W) ADD.W #4,A0 DBF.W D0,SHOWSINCURVELOOP RTS * SHOWSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR_2,A0 MOVE.L $44E,A1 MOVE.L #359,D0 SHOWSINCURVELOOP_2: MOVE.W (A0),D1 MOVE.W 2(A0),D2 OR.W D2,4(A1,D1.W) ADD.W #4,A0 DBF.W D0,SHOWSINCURVELOOP_2 RTS * * 1 - PIXEL DISTING LOGO * * FIXCURVE: LEA SLOGOCURVE,A0 MOVE.W #720*2-1,D0 FIXCURVELOOP: CLR.L D1 MOVE.W (A0),D1 MULS #160,D1 MOVE.W D1,(A0)+ DBF.W D0,FIXCURVELOOP * GETNEWCURVEP: ADDQ.L #2,SLOGOCURVEPTR CMP.L #SLOGOCURVEEND,SLOGOCURVEPTR BNE GETNEWCURVEPEND MOVE.L #SLOGOCURVE,SLOGOCURVEPTR GETNEWCURVEPEND: RTS * SETPREDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 MOVE.L #DISTTEXT,DISTTEXTPTR MOVE.L #1,D7 SETPREDISTTEXTLOOP: CLR.L D0 MOVE.L DISTTEXTPTR,A1 MOVE.B (A1)+,D0 CMP.B #$FF,D0 BEQ SETPREDISTWRAP MOVE.L A1,DISTTEXTPTR SUB.W #32,D0 MULS.W #16*2,D0 MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%00010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 1000,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 100,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%01,D1 MOVE.W D1,(A0)+ ENDR BRA SETPREDISTTEXTLOOP SETPREDISTWRAP: MOVE.L #DISTTEXT2,DISTTEXTPTR DBF.W D7,SETPREDISTTEXTLOOP RTS * SETDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLR.L D0 SETDISTTEXTLOOP: REPT 16 MOVE.W (A2)+,D0 MOVE.L A1,A3 ADD.W D0,A3 MOVE.W (A0)+,D1 OR.W D1,(A3) MOVE.W (A0)+,D1 OR.W D1,160(A3) MOVE.W (A0)+,D1 OR.W D1,2*160(A3) MOVE.W (A0)+,D1 OR.W D1,3*160(A3) MOVE.W (A0)+,D1 OR.W D1,4*160(A3) MOVE.W (A0)+,D1 OR.W D1,5*160(A3) MOVE.W (A0)+,D1 OR.W D1,6*160(A3) MOVE.W (A0)+,D1 OR.W D1,7*160(A3) MOVE.W (A0)+,D1 OR.W D1,8*160(A3) MOVE.W (A0)+,D1 OR.W D1,9*160(A3) MOVE.W (A0)+,D1 OR.W D1,10*160(A3) MOVE.W (A0)+,D1 OR.W D1,11*160(A3) MOVE.W (A0)+,D1 OR.W D1,12*160(A3) MOVE.W (A0)+,D1 OR.W D1,13*160(A3) MOVE.W (A0)+,D1 OR.W D1,14*160(A3) MOVE.W (A0)+,D1 OR.W D1,15*160(A3) ENDR ADDQ.W #8,A1 DBF.W D7,SETDISTTEXTLOOP RTS * CLRDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLRDISTTEXTLOOP: MOVE.W (A2),D0 MOVE.W 32(A2),D1 MOVE.L A1,A3 MOVE.L A1,A4 ADD.W #32,A2 ADD.W D0,A3 ADD.W D1,A4 CLR.W -160*5(A3) CLR.W -160*4(A3) CLR.W -160*3(A3) CLR.W -160*2(A3) CLR.W -160(A3) CLR.W (A3) CLR.W 160(A3) CLR.W 160*2(A3) CLR.W 160*3(A3) CLR.W 160*4(A3) CLR.W 160*5(A3) CLR.W 160*6(A3) CLR.W 160*7(A3) CLR.W 160*8(A3) CLR.W 160*9(A3) CLR.W 160*10(A3) CLR.W 160*11(A3) CLR.W 160*12(A3) CLR.W 160*13(A3) CLR.W 160*14(A3) CLR.W 160*15(A3) CLR.W 160*16(A3) CLR.W 160*17(A3) CLR.W 160*18(A3) CLR.W 160*19(A3) CLR.W 160*20(A3) CLR.W -160*5(A4) CLR.W -160*4(A4) CLR.W -160*3(A4) CLR.W -160*2(A4) CLR.W -160(A4) CLR.W (A4) CLR.W 160(A4) CLR.W 160*2(A4) CLR.W 160*3(A4) CLR.W 160*4(A4) CLR.W 160*5(A4) CLR.W 160*6(A4) CLR.W 160*7(A4) CLR.W 160*8(A4) CLR.W 160*9(A4) CLR.W 160*10(A4) CLR.W 160*11(A4) CLR.W 160*12(A4) CLR.W 160*13(A4) CLR.W 160*14(A4) CLR.W 160*15(A4) CLR.W 160*16(A4) CLR.W 160*17(A4) CLR.W 160*18(A4) CLR.W 160*19(A4) CLR.W 160*20(A4) ADDQ.W #8,A1 DBF.W D7,CLRDISTTEXTLOOP RTS * * VBL * * NEWVBL: MOVE.W #$000,$FF8240 MOVE.L #NEWHBL,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W JSR CLRDISTTEXT JSR SETDISTTEXT JSR GETNEWCURVEP JSR GETNEWCURVEP JSR GETNEWCURVEP MOVE.L OLDSCURVEPTR,OLDSCURVEPTR2 MOVE.L SINCURVEPTR,OLDSCURVEPTR MOVE.L OLDSCURVEPTR_2,OLDSCURVEPTR2_2 MOVE.L SINCURVEPTR_2,OLDSCURVEPTR_2 ADDQ.L #4,SINCURVEPTR CMP.L #SINCURVEEND,SINCURVEPTR BNE NORESTORESINCURVE MOVE.L #SINCURVE,SINCURVEPTR NORESTORESINCURVE: ADDQ.L #4,SINCURVEPTR_2 CMP.L #SINCURVEEND_2,SINCURVEPTR_2 BNE NORESTORESINCURVE_2 MOVE.L #SINCURVE_2,SINCURVEPTR_2 NORESTORESINCURVE_2: JSR CLRSINCURVE JSR CLRSINCURVE_2 JSR SHOWSINCURVE JSR SHOWSINCURVE_2 JSR SCREENSWAP MOVE.W #1,WFNC RTE * NEWHBL: CLR.B $FA1B.W MOVE.W #$227,$FF8240 MOVE.L #NEWHBL2,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL2: MOVE.W #$004,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL3,$120.W MOVE.B #197,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL3: MOVE.W #$227,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL4,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL4: MOVE.W #$000,$FF8240 CLR.B $FA1B.W BCLR #0,$FA0F.W RTE *K RELOCATE: MOVE.L #$19000,A0 MOVE.L 2(A0),D0 ADD.L 6(A0),D0 ADD.L 14(A0),D0 ADD.L #$1C,A0 MOVE.L A0,A1  MOVE.L A1,A2  MOVE.L #$19000,d1 ADD.W #$1c,D1 ADD.L D0,A1  MOVE.L (A1)+,D0 ADD.L D0,A2  ADD.L D1,(A2) CLR.L D0  RELO: MOVE.B (A1)+,D0 BEQ RELEND  CMP.B #1,D0  BEQ RELOJUMP  ADD.L D0,A2  ADD.L D1,(A2) BRA RELO  RELOJUMP: ADD.L #254,A2 BRA RELO  RELEND: RTS * ;*- Unpacking routine of PACK-ICE ; a0 = Adress of packed data ; "bsr" or "jsr" to ice_decrunch_2 with register a0 prepared. ice_decrunch_2: link a3,#-120 movem.l d0-a6,-(sp) lea 120(a0),a4 move.l a4,a6 bsr .getinfo cmpi.l #'ICE!',d0 bne .not_packed bsr.s .getinfo lea.l -8(a0,d0.l),a5 bsr.s .getinfo move.l d0,(sp) adda.l d0,a6 move.l a6,a1 moveq #119,d0 .save: move.b -(a1),-(a3) dbf d0,.save move.l a6,a3 move.b -(a5),d7 bsr.s .normal_bytes move.l a3,a5 bsr .get_1_bit bcc.s .no_picture move.w #$0f9f,d7 bsr .get_1_bit bcc.s .ice_00 moveq #15,d0 bsr .get_d0_bits move.w d1,d7 .ice_00: moveq #3,d6 .ice_01: move.w -(a3),d4 moveq #3,d5 .ice_02: add.w d4,d4 addx.w d0,d0 add.w d4,d4 addx.w d1,d1 add.w d4,d4 addx.w d2,d2 add.w d4,d4 addx.w d3,d3 dbra d5,.ice_02 dbra d6,.ice_01 movem.w d0-d3,(a3) dbra d7,.ice_00 .no_picture movem.l (sp),d0-a3 .move move.b (a4)+,(a0)+ subq.l #1,d0 bne.s .move moveq #119,d0 .rest move.b -(a3),-(a5) dbf d0,.rest .not_packed: movem.l (sp)+,d0-a6 unlk a3 rts .getinfo: moveq #3,d1 .getbytes: lsl.l #8,d0 move.b (a0)+,d0 dbf d1,.getbytes rts .normal_bytes: bsr.s .get_1_bit bcc.s .test_if_end moveq.l #0,d1 bsr.s .get_1_bit bcc.s .copy_direkt lea.l .direkt_tab+20(pc),a1 moveq.l #4,d3 .nextgb: move.l -(a1),d0 bsr.s .get_d0_bits swap.w d0 cmp.w d0,d1 dbne d3,.nextgb .no_more: add.l 20(a1),d1 .copy_direkt: move.b -(a5),-(a6) dbf d1,.copy_direkt .test_if_end: cmpa.l a4,a6 bgt.s .strings rts .get_1_bit: add.b d7,d7 bne.s .bitfound move.b -(a5),d7 addx.b d7,d7 .bitfound: rts .get_d0_bits: moveq.l #0,d1 .hole_bit_loop: add.b d7,d7 bne.s .on_d0 move.b -(a5),d7 addx.b d7,d7 .on_d0: addx.w d1,d1 dbf d0,.hole_bit_loop rts .strings: lea.l .length_tab(pc),a1 moveq.l #3,d2 .get_length_bit: bsr.s .get_1_bit dbcc d2,.get_length_bit .no_length_bit: moveq.l #0,d4 moveq.l #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bmi.s .no_ber .get_ber: bsr.s .get_d0_bits .no_ber: move.b 6(a1,d2.w),d4 add.w d1,d4 beq.s .get_offset_2 lea.l .more_offset(pc),a1 moveq.l #1,d2 .getoffs: bsr.s .get_1_bit dbcc d2,.getoffs moveq.l #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bsr.s .get_d0_bits add.w d2,d2 add.w 6(a1,d2.w),d1 bpl.s .depack_bytes sub.w d4,d1 bra.s .depack_bytes .get_offset_2: moveq.l #0,d1 moveq.l #5,d0 moveq.l #-1,d2 bsr.s .get_1_bit bcc.s .less_40 moveq.l #8,d0 moveq.l #$3f,d2 .less_40: bsr.s .get_d0_bits add.w d2,d1 .depack_bytes: lea.l 2(a6,d4.w),a1 adda.w d1,a1 move.b -(a1),-(a6) .dep_b: move.b -(a1),-(a6) dbf d4,.dep_b bra .normal_bytes .direkt_tab: dc.l $7fff000e,$00ff0007,$00070002,$00030001,$00030001 dc.l 270-1, 15-1, 8-1, 5-1, 2-1 .length_tab: dc.b 9,1,0,-1,-1 dc.b 8,4,2,1,0 .more_offset: dc.b 11, 4, 7, 0 ; Bits lesen dc.w $11f, -1, $1f ; Standard Offset ende_ice_decrunch_2: ;*2 end of unpacking routine * * VARIABLES * * SAVESUPER: DC.L 0 OLDVBL: DC.L 0 OLDHBL: DC.L 0 OLD07: DC.B 0 OLD09: DC.B 0 OLD13: DC.B 0 OLD1B: DC.B 0 WFNC: DC.W 0 PART: DC.W 0 START: DC.W 0 ANTAL: DC.W 0 SECTORS: DC.W 246,6 * ALTERNATIVE MENU DC.W 20,117 * 1STINTRO DC.W 138,22 * INTRO DC.W 161,84 * MAGGOT MASTER DC.W 253,77 * OB GUESTSCREEN 1 DISTTEXTPTR: DC.L 0 DISTTEXTPTRP: DC.W 0 DISTTEXT: DC.B ' LOADING ',$FF DISTTEXT2: DC.B 'DEPACKING',$FF FONT: INCBIN A:\LOADER\16FONT1.DAT NIBBLES: DC.W $8000,$4000,$2000,$10v00,$800,$400,$200,$100,$80,$40,$20,$10,$8,$4,$2,$1 SLOGOCURVEPTR: DC.L SLOGOCURVE SLOGOCURVE: INCLUDE A:\LOADER\BDISTCUR.DAT SLOGOCURVEEND: INCLUDE A:\LOADER\BDISTCUR.DAT SINCURVEPTR: DC.L 0 OLDSCURVEPTR: DC.L 0 OLDSCURVEPTR2: DC.L 0 SINCURVEPTR_2: DC.L 0 OLDSCURVEPTR_2: DC.L 0 OLDSCURVEPTR2_2:DC.L 0 SINCURVE: INCLUDE A:\LOADER\BRAIN.DAT SINCURVEEND: INCLUDE A:\LOADER\BRAIN.DAT SINCURVE_2: INCLUDE A:\LOADER\BLOMMA.DAT SINCURVEEND_2: INCLUDE A:\LOADER\BLOMMA.DAT EVEN DISTTEXTBUFF: DCB.B 5120,0 DISTTEXTBUFF2: DCB.B 5120,0 ǧ(COluW8ڹ>wxV4丒(Y~_"湠8O\~jJ*ư (ZjJ)ը;jL Ӫ$EXm}];ط?w}]=šMxt6 5O_~tO,*_nO/ ᴐ&\^ᰓE]mg?ұ Oz|_D$Х;lL ̡.Sh~Y3GnoV9N{x7󹔈?_ovL$а ?_x|fL2㵑%]e$ૌ%On~j>Ҽ 6 move.w d0,minne move.w d1,meny move.w d2,stste * JSR SETSUPER JSR SETPREDISTTEXT JSR FIXCURVE JSR FIXSINCURVE LOADER: JSR BLACKOUT JSR LOADMENU CMP.W #6,PART BNE NOFRACTAL JSR PREPARE JSR LOADPART2 JMP LOADER NOFRACTAL: JSR PREPARE JSR LOADPART JMP LOADER BLACKOUT: MOVE.L #$ff8240,a0 REPT 8 CLR.L (a0)+ ENDR RTS LOADMENU: CMP.W #0,meny bne altmeny JSR PREPARE jsr LOADMAINMENU MOVE.W D0,PART RTS altmeny: jsr LOADALTMENU MOVE.W D0,PART RTS *K READSECTOR: MOVE.W #0,-(SP) * ENHET MOVE.W START,-(SP) * STARTSEKTOR MOVE.W ANTAL,-(SP) * ANTAL MOVE.L #$19000,-(SP) * BUFFERT ADDRESS MOVE.W #0,-(SP) * SKRIV MOVE.W #4,-(SP) TRAP #13 LEA 14(SP),SP RTS *K CHOOSEPART: MOVE.L #SECTORS,A0 CLR.L D0 MOVE.W PART,D0 MULS #4,D0 ADD.W D0,A0 MOVE.W (A0)+,START MOVE.W (A0)+,ANTAL RTS *K PREPARE: JSR SETSCREEN JSR CLEARSCREENS MOVE.L #SLOGOCURVE,SLOGOCURVEPTR CLR.L SINCURVEPTR CLR.L OLDSCURVEPTR CLR.L OLDSCURVEPTR2 CLR.L SINCURVEPTR_2 CLR.L OLDSCURVEPTR_2 CLR.L OLDSCURVEPTR2_2 CLR.L DISTTEXTPTR CLR.W DISTTEXTPTRP JSR SETVAR MOVE.W #299,D6 PRELOOP: JSR INCREASESINCURVES JSR CLRSINCURVE JSR SHOWSINCURVE JSR CLRSINCURVE_2 JSR SHOWSINCURVE_2 DBRA D6,PRELOOP JSR INIT RTS *K LOADPART: JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR MOVE.W #4608,DISTTEXTPTRP MOVE.L #$19000,A0 JSR ice_decrunch_2 JSR RELOCATE JSR RETINIT JSR $19000 RTS *K LOADMAINMENU: MOVE.W #11,PART JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR MOVE.W #4608,DISTTEXTPTRP MOVE.L #$19000,A0 JSR ice_decrunch_2 JSR RELOCATE JSR RETINIT MOVE.W minne,d0 MOVE.W stste,d1 JSR $19000 RTS *K LOADALTMENU: CLR.W PART JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR MOVE.W #4608,DISTTEXTPTRP MOVE.L #$19000,A0 JSR ice_decrunch_2 JSR RELOCATE move.w minne,d0 move.w stste,d1 JSR $19000 RTS *K LOADPART2: JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR JSR RETINIT MOVE.L #$19000,A0 JSR ice_decrunch_2 JSR RELOCATE JSR $19000 RTS * * SUB - ROUTS * * SETSUPER: CLR.L -(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP MOVE.L D0,SAVESUPER RTS ENDSUPER: MOVE.L SAVESUPER,-(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP RTS * SETVAR: MOVE.L #SINCURVE,SINCURVEPTR MOVE.L #SINCURVE,OLDSCURVEPTR MOVE.L #SINCURVE_2,SINCURVEPTR_2 MOVE.L #SINCURVE_2,OLDSCURVEPTR_2 MOVE.L #$0777,$FF8240 MOVE.L #$00060777,$FF8244 MOVE.L #$00060777,$FF8248 MOVE.L #$00070777,$FF824C RTS * SETSCREEN: MOVE.W #0,-(SP) MOVE.L #$78000,-(SP) MOVE.L #$78000,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP RTS * SCREENSWAP: MOVE.W #-1,-(SP) MOVE.L $44E,-(SP) MOVE.L $44E,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP CMP.L #$70,$44E BEQ* SCREENSWAP2 MOVE.L #$70,$44E RTS SCREENSWAP2: MOVE.L #$78000,$44E RTS * INIT: jsr music MOVE.W #$2700,SR MOVE.L $70.W,OLDVBL MOVE.L $120.W,OLDHBL MOVE.B $FA07.W,OLD07 MOVE.B $FA09.W,OLD09 MOVE.B $FA13.W,OLD13 MOVE.B $FA1B.W,OLD1B MOVE.L #NEWVBL,$70.W MOVE.L #NEWHBL,$120.W CLR.B $FA07.W CLR.B $FA09.W ORI.B #1,$FA07.W ORI.B #1,$FA13.W CLR.B $FA1B.W MOVE.W #$2300,SR RTS RETINIT: MOVE.W #$2700,SR MOVE.L OLDVBL,$70.W MOVE.L OLDHBL,$120.W MOVE.B OLD07,$FA07.W MOVE.B OLD09,$FA09.W MOVE.B OLD13,$FA13.W MOVE.B OLD1B,$FA1B.W MOVE.W #$2300,SR move.l #$08080,$ff8800 move.l #$09090,$ff8800 move.l #$0a0a0,$ff8800 MOVE.L #$ff8240,a0 rept 8 clr.l (a0)+ endr RTS * CLEARSCREENS: MOVE.L #$70,A0 MOVE.L #$78000,A1 MOVE.W #7999,D0 CLEARSCREENSLOOP: CLR.L (A0)+ CLR.L (A1)+ DBF.W D0,CLEARSCREENSLOOP RTS * WAITVBL: CMP.W #1,WFNC BNE.S WAITVBL MOVE.W #0,WFNC RTS * * FIX SINUS CURVE TO SCR.FORM * * FIXSINCURVE: MOVE.L #SINCURVE,A0 MOVE.L #SINCURVE,A1 MOVE.L #NIBBLES,A2 MOVE.L #(1080*2*2)-1,D3 FIXSINCURVELOOP: CLR.L D0 CLR.L D1 CLR.L D2 MOVE.W (A0)+,D0 MOVE.W (A0)+,D1 MULS #160,D1 MOVE.W D0,D2 AND.W #$FFF0,D2 ASR.W D2 ADD.W D2,D1 AND.W #$000F,D0 ASL.W D0 MOVE.W (A2,D0.W),D0 MOVE.W D1,(A1)+ MOVE.W D0,(A1)+ DBF.W D3,FIXSINCURVELOOP RTS * * PUT SINUSCURVE ON SCREEN * * INCREASESINCURVES: ADDQ.L #4,SINCURVEPTR CMP.L #SINCURVEEND,SINCURVEPTR BNE NORESTORESINCURVE MOVE.L #SINCURVE,SINCURVEPTR NORESTORESINCURVE: ADDQ.L #4,SINCURVEPTR_2 CMP.L #SINCURVEEND_2,SINCURVEPTR_2 BNE NORESTORESINCURVE_2 MOVE.L #SINCURVE_2,SINCURVEPTR_2 NORESTORESINCURVE_2: RTS * SHOWSINCURVE: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR,A0 MOVE.L #$70,A1 MOVE.L #$78000,A2 MOVE.W 1200(A0),D1 MOVE.W 1202(A0),D2 MOVE.W 2(A1,D1.W),D3 BSET D2,D3 MOVE.W D3,2(A1,D1.W) MOVE.W D3,2(A2,D1.W) RTS * CLRSINCURVE: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR,A0 MOVE.L #$70,A1 MOVE.L #$78000,A2 MOVE.W (A0),D1 MOVE.W 2(A0),D2 MOVE.W 2(A1,D1.W),D3 BCLR D2,D3 MOVE.W D3,2(A1,D1.W) MOVE.W D3,2(A2,D1.W) RTS * SHOWSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR_2,A0 MOVE.L #$70,A1 MOVE.L #$78000,A2 MOVE.W 1200(A0),D1 MOVE.W 1202(A0),D2 MOVE.W 4(A1,D1.W),D3 BSET D2,D3 MOVE.W D3,4(A1,D1.W) MOVE.W D3,4(A2,D1.W) RTS * CLRSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR_2,A0 MOVE.L #$70,A1 MOVE.L #$78000,A2 MOVE.W (A0),D1 MOVE.W 2(A0),D2 MOVE.W 4(A1,D1.W),D3 BCLR D2,D3 MOVE.W D3,4(A1,D1.W) MOVE.W D3,4(A2,D1.W) RTS * * 1 - PIXEL DISTING LOGO * * FIXCURVE: LEA SLOGOCURVE,A0 MOVE.W #720*2-1,D0 FIXCURVELOOP: CLR.L D1 MOVE.W (A0),D1 MULS #160,D1 MOVE.W D1,(A0)+ DBF.W D0,FIXCURVELOOP * GETNEWCURVEP: ADDQ.L #2,SLOGOCURVEPTR CMP.L #SLOGOCURVEEND,SLOGOCURVEPTR BNE GETNEWCURVEPEND MOVE.L #SLOGOCURVE,SLOGOCURVEPTR GETNEWCURVEPEND: RTS * SETPREDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 MOVE.L #DISTTEXT,DISTTEXTPTR MOVE.L #1,D7 SETPREDISTTEXTLOOP: CLR.L D0 MOVE.L DISTTEXTPTR,A1 MOVE.B (A1)+,D0 CMP.B #$FF,D0 BEQ SETPREDISTWRAP MOVE.L A1,DISTTEXTPTR SUB.W #32,D0 MULS.W #16*2,D0 MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%00010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L  #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 1000,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 100,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%01,D1 MOVE.W D1,(A0)+ ENDR BRA SETPREDISTTEXTLOOP SETPREDISTWRAP: MOVE.L #DISTTEXT2,DISTTEXTPTR DBF.W D7,SETPREDISTTEXTLOOP RTS * SETDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLR.L D0 SETDISTTEXTLOOP: REPT 16 MOVE.W (A2)+,D0 MOVE.L A1,A3 ADD.W D0,A3 MOVE.W (A0)+,D1 OR.W D1,(A3) MOVE.W (A0)+,D1 OR.W D1,160(A3) MOVE.W (A0)+,D1 OR.W D1,2*160(A3) MOVE.W (A0)+,D1 OR.W D1,3*160(A3) MOVE.W (A0)+,D1 OR.W D1,4*160(A3) MOVE.W (A0)+,D1 OR.W D1,5*160(A3) MOVE.W (A0)+,D1 OR.W D1,6*160(A3) MOVE.W (A0)+,D1 OR.W D1,7*160(A3) MOVE.W (A0)+,D1 OR.W D1,8*160(A3) MOVE.W (A0)+,D1 OR.W D1,9*160(A3) MOVE.W (A0)+,D1 OR.W D1,10*160(A3) MOVE.W (A0)+,D1 OR.W D1,11*160(A3) MOVE.W (A0)+,D1 OR.W D1,12*160(A3) MOVE.W (A0)+,D1 OR.W D1,13*160(A3) MOVE.W (A0)+,D1 OR.W D1,14*160(A3) MOVE.W (A0)+,D1 OR.W D1,15*160(A3) ENDR ADDQ.W #8,A1 DBF.W D7,SETDISTTEXTLOOP RTS * CLRDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLRDISTTEXTLOOP: MOVE.W (A2),D0 MOVE.W 32(A2),D1 MOVE.L A1,A3 MOVE.L A1,A4 ADD.W #32,A2 ADD.W D0,A3 ADD.W D1,A4 CLR.W -160*5(A3) CLR.W -160*4(A3) CLR.W -160*3(A3) CLR.W -160*2(A3) CLR.W -160(A3) CLR.W (A3) CLR.W 160(A3) CLR.W 160*2(A3) CLR.W 160*3(A3) CLR.W 160*4(A3) CLR.W 160*5(A3) CLR.W 160*6(A3) CLR.W 160*7(A3) CLR.W 160*8(A3) CLR.W 160*9(A3) CLR.W 160*10(A3) CLR.W 160*11(A3) CLR.W 160*12(A3) CLR.W 160*13(A3) CLR.W 160*14(A3) CLR.W 160*15(A3) CLR.W 160*16(A3) CLR.W 160*17(A3) CLR.W 160*18(A3) CLR.W 160*19(A3) CLR.W 160*20(A3) CLR.W -160*5(A4) CLR.W -160*4(A4) CLR.W -160*3(A4) CLR.W -160*2(A4) CLR.W -160(A4) CLR.W (A4) CLR.W 160(A4) CLR.W 160*2(A4) CLR.W 160*3(A4) CLR.W 160*4(A4) CLR.W 160*5(A4) CLR.W 160*6(A4) CLR.W 160*7(A4) CLR.W 160*8(A4) CLR.W 160*9(A4) CLR.W 160*10(A4) CLR.W 160*11(A4) CLR.W 160*12(A4) CLR.W 160*13(A4) CLR.W 160*14(A4) CLR.W 160*15(A4) CLR.W 160*16(A4) CLR.W 160*17(A4) CLR.W 160*18(A4) CLR.W 160*19(A4) CLR.W 160*20(A4) ADDQ.W #8,A1 DBF.W D7,CLRDISTTEXTLOOP RTS * * VBL * * NEWVBL: MOVEM.L d0-d7/a0-a6,-(sp) MOVE.W #$000,$FF8240 jsr music+8 MOVE.L #NEWHBL,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W JSR CLRDISTTEXT JSR SETDISTTEXT JSR GETNEWCURVEP JSR GETNEWCURVEP JSR GETNEWCURVEP JSR INCREASESINCURVES JSR CLRSINCURVE JSR SHOWSINCURVE JSR CLRSINCURVE_2 JSR SHOWSINCURVE_2 JSR SCREENSWAP MOVE.W #1,WFNC MOVEM.L (sp)+,d0-d7/a0-a6 RTE * NEWHBL: CLR.B $FA1B.W MOVE.W #$227,$FF8240 MOVE.L #NEWHBL2,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL2: MOVE.W #$004,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL3,$120.W MOVE.B #197,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL3: MOVE.W #$227,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL4,$120.W MOVE.B #1,$FA21.W  MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL4: MOVE.W #$000,$FF8240 CLR.B $FA1B.W BCLR #0,$FA0F.W RTE *K RELOCATE: MOVE.L #$19000,A0 MOVE.L 2(A0),D0 ADD.L 6(A0),D0 ADD.L 14(A0),D0 ADD.L #$1C,A0 MOVE.L A0,A1  MOVE.L A1,A2  MOVE.L #$19000,d1 ADD.W #$1c,D1 ADD.L D0,A1  MOVE.L (A1)+,D0 ADD.L D0,A2  ADD.L D1,(A2) CLR.L D0  RELO: MOVE.B (A1)+,D0 BEQ RELEND  CMP.B #1,D0  BEQ RELOJUMP  ADD.L D0,A2  ADD.L D1,(A2) BRA RELO  RELOJUMP: ADD.L #254,A2 BRA RELO  RELEND: RTS * ;*- Unpacking routine of PACK-ICE ; a0 = Adress of packed data ; "bsr" or "jsr" to ice_decrunch_2 with register a0 prepared. ice_decrunch_2: link a3,#-120 movem.l d0-a6,-(sp) lea 120(a0),a4 move.l a4,a6 bsr .getinfo cmpi.l #'ICE!',d0 bne .not_packed bsr.s .getinfo lea.l -8(a0,d0.l),a5 bsr.s .getinfo move.l d0,(sp) adda.l d0,a6 move.l a6,a1 moveq #119,d0 .save: move.b -(a1),-(a3) dbf d0,.save move.l a6,a3 move.b -(a5),d7 bsr.s .normal_bytes move.l a3,a5 bsr .get_1_bit bcc.s .no_picture move.w #$0f9f,d7 bsr .get_1_bit bcc.s .ice_00 moveq #15,d0 bsr .get_d0_bits move.w d1,d7 .ice_00: moveq #3,d6 .ice_01: move.w -(a3),d4 moveq #3,d5 .ice_02: add.w d4,d4 addx.w d0,d0 add.w d4,d4 addx.w d1,d1 add.w d4,d4 addx.w d2,d2 add.w d4,d4 addx.w d3,d3 dbra d5,.ice_02 dbra d6,.ice_01 movem.w d0-d3,(a3) dbra d7,.ice_00 .no_picture movem.l (sp),d0-a3 .move move.b (a4)+,(a0)+ subq.l #1,d0 bne.s .move moveq #119,d0 .rest move.b -(a3),-(a5) dbf d0,.rest .not_packed: movem.l (sp)+,d0-a6 unlk a3 rts .getinfo: moveq #3,d1 .getbytes: lsl.l #8,d0 move.b (a0)+,d0 dbf d1,.getbytes rts .normal_bytes: bsr.s .get_1_bit bcc.s .test_if_end moveq.l #0,d1 bsr.s .get_1_bit bcc.s .copy_direkt lea.l .direkt_tab+20(pc),a1 moveq.l #4,d3 .nextgb: move.l -(a1),d0 bsr.s .get_d0_bits swap.w d0 cmp.w d0,d1 dbne d3,.nextgb .no_more: add.l 20(a1),d1 .copy_direkt: move.b -(a5),-(a6) dbf d1,.copy_direkt .test_if_end: cmpa.l a4,a6 bgt.s .strings rts .get_1_bit: add.b d7,d7 bne.s .bitfound move.b -(a5),d7 addx.b d7,d7 .bitfound: rts .get_d0_bits: moveq.l #0,d1 .hole_bit_loop: add.b d7,d7 bne.s .on_d0 move.b -(a5),d7 addx.b d7,d7 .on_d0: addx.w d1,d1 dbf d0,.hole_bit_loop rts .strings: lea.l .length_tab(pc),a1 moveq.l #3,d2 .get_length_bit: bsr.s .get_1_bit dbcc d2,.get_length_bit .no_length_bit: moveq.l #0,d4 moveq.l #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bmi.s .no_ber .get_ber: bsr.s .get_d0_bits .no_ber: move.b 6(a1,d2.w),d4 add.w d1,d4 beq.s .get_offset_2 lea.l .more_offset(pc),a1 moveq.l #1,d2 .getoffs: bsr.s .get_1_bit dbcc d2,.getoffs moveq.l #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bsr.s .get_d0_bits add.w d2,d2 add.w 6(a1,d2.w),d1 bpl.s .depack_bytes sub.w d4,d1 bra.s .depack_bytes .get_offset_2: moveq.l #0,d1 moveq.l #5,d0 moveq.l #-1,d2 bsr.s .get_1_bit bcc.s .less_40 moveq.l #8,d0 moveq.l #$3f,d2 .less_40: bsr.s .get_d0_bits add.w d2,d1 .depack_bytes: lea.l 2(a6,d4.w),a1 adda.w d1,a1 move.b -(a1),-(a6) .dep_b: move.b -(a1),-(a6) dbf d4,.dep_b bra .normal_bytes .direkt_tab: dc.l $7fff000e,$00ff0007,$00070002,$00030001,$00030001 dc.l 270-1, 15-1, 8-1, 5-1, 2-1 .length_tab: dc.b 9,1,0,-1,-1 dc.b 8,4,2,1,0 .more_offset: dc.b 11, 4, 7, 0 ; Bits lesen dc.w $11f, -1, $1f ; Standard Offset ende_ice_decrunch_2: ;*2 end of unpacking routine * * VARIABLES * * SAVESUPER: DC.L 0 OLDVBL: DC.L 0 OLDHBL: DC.L 0 OLD07: DC.B 0 OLD09: DC.B 0 OLD13: DC.B 0 OLD1B: DC.B 0 WFNC: DC.W 0 PART: DC.W 0 START: DC.W 0 ANTAL: DC.W 0 minne: DC.W 0 meny: DC.W 0 stste: DC.W 0 SINCURVEPTR: DC.L 0 OLDSCURVEPTR: DC.L 0 OLDSCURVEPTR2: DC.L 0 SINCURVEPTR_2: DC.L 0 OLDSCURVEPTR_2: DC.L 0 OLDSCURVEPTR2_2:DC.L 0 DISTTEXTPTR: DC.L 0 DISTTEXTPTRP: DC.W 0 SLOGOCURVEPTR: DC.L SLOGOCURVE NIBBLES: DC.W 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 DC.W $8000,$4000,$2000,$1000,$800,$400,$200,$100,$T80,$40,$20,$10,$8,$4,$2,$1 SECTORS: DC.W 222,42 * ALTERNATIVE MENU DC.W 265,86 * CHROME CORNY DC.W 352,77 * ALWAYS ULTRA DC.W 508,35 * MAGGOT MASTER DC.W 508,35 * WHY NOT DC.W 430,77 * MIXTURE DC.W 661,130 * BANAL FRACTAL DC.W 543,117 * EXHUMAN DC.W 508,35 * BOBO SCREEN 2 DC.W 508,35 * IQ PQ SCREEN DC.W 508,35 * TOILET DEMO 2 DC.W 1390,109 * MAIN MENU DISTTEXT: DC.B ' LOADING ',$FF DISTTEXT2: DC.B 'DEPACKING',$FF FONT: INCBIN A:\LOADER\16FONT1.DAT SLOGOCURVE: INCLUDE A:\LOADER\BDISTCUR.DAT SLOGOCURVEEND: INCLUDE A:\LOADER\BDISTCUR.DAT SINCURVE: INCLUDE A:\LOADER\BRAIN.DAT SINCURVEEND: INCLUDE A:\LOADER\BRAIN.DAT SINCURVE_2: INCLUDE A:\LOADER\BLOMMA.DAT SINCURVEEND_2: INCLUDE A:\LOADER\BLOMMA.DAT EVEN music: incbin a:\loader\overlord.thk DISTTEXTBUFF: DCB.B 5120,0 DISTTEXTBUFF2: DCB.B 5120,0 TUV- _TP*UWUWUWPP@@ T Uu_9DPPOP Ma_G-HHa KfR,a KfR-H  A C n zJ"z $zG(zKprtvxz|~`HPAB         _NuHL?MQJ@frM=|BnQ"z e,<N.;hNxfPB,~MeDM}MG>6pM r<`M drAM#`DMK`~M AA#`VA`LpS@ gM e:,<N.;hNx*,2@d$``.`. `Y`~"z`~PY Q O_3Q`:M bPYM>G>6pMQO` MQPKY>GM\>6pM O`MFPQp~>G>6pM<NF|dRGGOG`,zHpH?MA26G:HMVV<: FgJGkFe2zBVQ`Fd`2MA26)HG:]HMZVVMIA2`M2Y:7HG?`M*QJBfM =|BnQv&z e,<N.;hNxfPB,~MeDMMG>6pM<`MvCM0#`DM`|M2CC#0`VE`LtSB gM e8,<N.;hNx*,2@b$``.`.`[`~&z`~P[QO_3Q`:MP[M>G>6pMCQO` M1QPM[>GM>6pM`O`MPQq~>G>6pM:<NF|dRGGOG`,z$HpH?M>C660G:HMVV<: FgJGkFe6zBVQ`Fd`6MC660+HG:HMVVMBKC6`M26[:HG?`MsQJDfMk=|BnQz*zJ e,<N.;hNxfPB,~M&eDMMHG>6pM<`MzEMP#`DM`|M|EE#P`VI`LxSD gMR e8,<N.;hNx*,2@b$``.`.$`]`~*z`~P]QO_3Q`:MP]M(>G>6pMQO` M{QPL]>GM>6pMO`MPQr~>G>6pM<NF|dRGGOG`,zrHpH?ME:6PG:?HM>VV<:8 FgJGkFe:z&BVQ`Fd`:MDE:6P-HG:HMVVMME:`M~:]:HG?`MnJ.Ng =zJ.Pg =zJ.Og =z~ M)LjQMH?LNuZMuzak-driverdonebySectorOnefromTheHeavyKillers M / haw GGp1S$~Z8{fR?- wqjd_YTPKGC?<852/-*(&$"        FanouIloveya!-Jedi-formybaby...PfZ86ZTHK   THK&"  THK   THKTHK THK THKC" Y  C "  Y # %C '" )*Y++C+"*)Y'%C#" YC"  YTH?                                                                                                     THK THK@  ##!!!!##!!!!########THKEndofthemuzak-file ^TUU UU_@?XڼiSt_U[E(toMxE.ս.[=ʽ_w%ЪU|/z*_RWU?U __*UZUPx=W+XU݂׀5pҧzyU6]G lp_iK[^AUUUU@Z_ @?TU move.w d0,minne move.w d1,meny move.w d2,stste * JSR SETSUPER JSR SETPREDISTTEXT JSR FIXCURVE JSR FIXSINCURVE LOADER: JSR BLACKOUT JSR LOADMENU CMP.W #6,PART BNE NOFRACTAL JSR PREPARE JSR LOADPART2 JMP LOADER NOFRACTAL: JSR PREPARE JSR LOADPART JMP LOADER BLACKOUT: MOVE.L #$ff8240,a0 REPT 8 CLR.L (a0)+ ENDR RTS LOADMENU: CMP.W #0,meny bne altmeny JSR PREPARE jsr LOADMAINMENU MOVE.W D0,PART RTS altmeny: jsr LOADALTMENU MOVE.W D0,PART RTS *K READSECTOR: MOVE.W #0,-(SP) * ENHET MOVE.W START,-(SP) * STARTSEKTOR MOVE.W ANTAL,-(SP) * ANTAL MOVE.L #$19000,-(SP) * BUFFERT ADDRESS MOVE.W #0,-(SP) * SKRIV MOVE.W #4,-(SP) TRAP #13 LEA 14(SP),SP RTS *K CHOOSEPART: MOVE.L #SECTORS,A0 CLR.L D0 MOVE.W PART,D0 MULS #4,D0 ADD.W D0,A0 MOVE.W (A0)+,START MOVE.W (A0)+,ANTAL RTS *K PREPARE: JSR SETSCREEN JSR CLEARSCREENS MOVE.L #SLOGOCURVE,SLOGOCURVEPTR CLR.L SINCURVEPTR CLR.L OLDSCURVEPTR CLR.L OLDSCURVEPTR2 CLR.L SINCURVEPTR_2 CLR.L OLDSCURVEPTR_2 CLR.L OLDSCURVEPTR2_2 CLR.L DISTTEXTPTR CLR.W DISTTEXTPTRP JSR INIT JSR SETVAR RTS *K LOADPART: JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR MOVE.W #4608,DISTTEXTPTRP MOVE.L #$19000,A0 JSR ice_decrunch_2 JSR RELOCATE JSR RETINIT JSR $19000 RTS *K LOADMAINMENU: MOVE.W #11,PART JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR MOVE.W #4608,DISTTEXTPTRP MOVE.L #$19000,A0 JSR ice_decrunch_2 JSR RELOCATE JSR RETINIT MOVE.W minne,d0 MOVE.W stste,d1 JSR $19000 RTS *K LOADALTMENU: CLR.W PART JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR MOVE.W #4608,DISTTEXTPTRP MOVE.L #$19000,A0 JSR ice_decrunch_2 JSR RELOCATE move.w minne,d0 move.w stste,d1 JSR $19000 RTS *K LOADPART2: JSR CHOOSEPART MOVE.W #0,DISTTEXTPTRP JSR READSECTOR JSR RETINIT MOVE.L #$19000,A0 JSR ice_decrunch_2 JSR RELOCATE JSR $19000 RTS * * SUB - ROUTS * * SETSUPER: CLR.L -(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP MOVE.L D0,SAVESUPER RTS ENDSUPER: MOVE.L SAVESUPER,-(SP) MOVE.W #$20,-(SP) TRAP #1 ADDQ.L #6,SP RTS * SETVAR: MOVE.L #SINCURVE,SINCURVEPTR MOVE.L #SINCURVE,OLDSCURVEPTR MOVE.L #SINCURVE_2,SINCURVEPTR_2 MOVE.L #SINCURVE_2,OLDSCURVEPTR_2 MOVE.L #$0777,$FF8240 MOVE.L #$00060777,$FF8244 MOVE.L #$00060777,$FF8248 MOVE.L #$00070777,$FF824C RTS * SETSCREEN: MOVE.W #0,-(SP) MOVE.L #$78000,-(SP) MOVE.L #$78000,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP RTS * SCREENSWAP: MOVE.W #-1,-(SP) MOVE.L $44E,-(SP) MOVE.L $44E,-(SP) MOVE.W #$5,-(SP) TRAP #14 ADD.L #12,SP CMP.L #$70,$44E BEQ SCREENSWAP2 MOVE.L #$70,$44E RTS SCREENSWAP2: MOVE.L #$78000,$44E RTS * INIT: jsr music MOVE.W #$2700,SR MOVE.L $70.W,OLDVBL MOVE.L $120.W,OLDHBL MOVE.B $FA07.W,OLD07 MOVE.B $FA09.W,OLD09 MOVE.B $FA13.W,OLD13 MOVE.B $FA1B.W,OLD1B MOVE.L #NEWVBL,$70.W MOVE.L #NEWHBL,$120.W CLR.B $FA07.W CLR.B $FA09.W ORI.B #1,$FA07.W ORI.B #1,$FA13.W CLR.B $FA1B.W MOVE.W #$2300,SR RTS RETINIT: MOVE.W #$2700,SR MOVE.L OLDVBL,$70.W MOVE.L OLDHBL,$120.W MOVE.B OLD07,$FA07.W MOVE.B OLD09,$FA09.W MOVE.B OLD13,$FA13.W MOVE.B OLD1B,$FA1B.W MOVE.W #$2300,SR move.l #$08080,$ff8800 move.l #$09090,$ff8800 move.l #$0a0a0,$ff8800 MOVE.L #$ff8240,a0 rept 8 clr.l (a0)+ endr RTS * CLEARSCREENS: MOVE.L #$70,A0 MOVE.L #$78000,A1 MOVE.W #7999,D0 CLEARSCREENSLOOP: CLR.L (A0)+ CLR.L (A1)+ DBF.W D0,CLEARSCREENSLOOP RTS * WAITVBL: CMP.W #1,WFNC BNE.S WAITVBL MOVE.W #0,WFNC RTS * * FIX SINUS CURVE TO SCR.FORM * * FIXSINCURVE: MOVE.L #SINCURVE,A0 MOVE.L #SINCURVE,A1 MOVE.L #NIBBLES,A2 MOVE.L #(1080*2*2)-1,D3 FIXSINCURVELOOP: CLR.L D0 CLR.L D1 CLR.L D2 MOVE.W (A0)+,D0 MOVE.W (A0)+,D1 MULS #160,D1 MOVE.W D0,D2 AND.W #$FFF0,D2 ASR.W D2 ADD.W D2,D1 AND.W #$000F,D0 ASL.W D0 MOVE.W (A2,D0.W),D0 MOVE.W D1,(A1)+ MOVE.W D0,(A1)+ DBF.W D3,FIXSINCURVELOOP RTS * * PUT SINUSCURVE ON SCREEN * * * SHOWSINCURVE: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR,A0 MOVE.L #$70,A1 MOVE.L #$78000,A2 MOVE.W 400(A0),D1 MOVE.W 402(A0),D2 MOVE.W 2(A1,D1.W),D3 BSET D2,D3 MOVE.W D3,2(A1,D1.W) MOVE.W D3,2(A2,D1.W) RTS * CLRSINCURVE: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR,A0 MOVE.L #$70,A1 MOVE.L #$78000,A2 MOVE.W (A0),D1 MOVE.W 2(A0),D2 MOVE.W 2(A1,D1.W),D3 BCLR D2,D3 MOVE.W D3,2(A1,D1.W) MOVE.W D3,2(A2,D1.W) RTS * SHOWSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR_2,A0 MOVE.L #$70,A1 MOVE.L #$78000,A2 MOVE.W 400(A0),D1 MOVE.W 402(A0),D2 MOVE.W 4(A1,D1.W),D3 BSET D2,D3 MOVE.W D3,4(A1,D1.W) MOVE.W D3,4(A2,D1.W) RTS * CLRSINCURVE_2: CLR.L D1 CLR.L D2 MOVE.L SINCURVEPTR_2,A0 MOVE.L #$70,A1 MOVE.L #$78000,A2 MOVE.W (A0),D1 MOVE.W 2(A0),D2 MOVE.W 4(A1,D1.W),D3 BCLR D2,D3 MOVE.W D3,4(A1,D1.W) MOVE.W D3,4(A2,D1.W) RTS * * 1 - PIXEL DISTING LOGO * * FIXCURVE: LEA SLOGOCURVE,A0 MOVE.W #720*2-1,D0 FIXCURVELOOP: CLR.L D1 MOVE.W (A0),D1 MULS #160,D1 MOVE.W D1,(A0)+ DBF.W D0,FIXCURVELOOP * GETNEWCURVEP: ADDQ.L #2,SLOGOCURVEPTR CMP.L #SLOGOCURVEEND,SLOGOCURVEPTR BNE GETNEWCURVEPEND MOVE.L #SLOGOCURVE,SLOGOCURVEPTR GETNEWCURVEPEND: RTS *,* SETPREDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 MOVE.L #DISTTEXT,DISTTEXTPTR MOVE.L #1,D7 SETPREDISTTEXTLOOP: CLR.L D0 MOVE.L DISTTEXTPTR,A1 MOVE.B (A1)+,D0 CMP.B #$FF,D0 BEQ SETPREDISTWRAP MOVE.L A1,DISTTEXTPTR SUB.W #32,D0 MULS.W #16*2,D0 MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%00010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010 ,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 10,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 1000,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%0 100,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%010,D1 MOVE.W D1,(A0)+ ENDR MOVE.L #FONT+34,A1 ADD.W D0,A1 REPT 16 CLR.L D1 MOVE.W (A1)+,D1 AND.W #%01,D1 MOVE.W D1,(A0)+ ENDR BRA SETPREDISTTEXTLOOP SETPREDISTWRAP: MOVE.L #DISTTEXT2,DISTTEXTPTR DBF.W D7,SETPREDISTTEXTLOOP RTS * SETDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLR.L D0 SETDISTTEXTLOOP: REPT 16 MOVE.W (A2)+,D0 MOVE.L A1,A3 ADD.W D0,A3 MOVE.W (A0)+,D1 OR.W D1,(A3) MOVE.W (A0)+,D1 OR.W D1,160(A3) MOVE.W (A0)+,D1 OR.W D1,2*160(A3) MOVE.W (A0)+,D1 OR.W D1,3*160(A3) MOVE.W (A0)+,D1 OR.W D1,4*160(A3) MOVE.W (A0)+,D1 OR.W D1,5*160(A3) MOVE.W (A0)+,D1 OR.W D1,6*160(A3) MOVE.W (A0)+,D1 OR.W D1,7*160(A3) MOVE.W (A0)+,D1 OR.W D1,8*160(A3) MOVE.W (A0)+,D1 OR.W D1,9*160(A3) MOVE.W (A0)+,D1 OR.W D1,10*160(A3) MOVE.W (A0)+,D1 OR.W D1,11*160(A3) MOVE.W (A0)+,D1 OR.W D1,12*160(A3) MOVE.W (A0)+,D1 OR.W D1,13*160(A3) MOVE.W (A0)+,D1 OR.W D1,14*160(A3) MOVE.W (A0)+,D1 OR.W D1,15*160(A3) ENDR ADDQ.W #8,A1 DBF.W D7,SETDISTTEXTLOOP RTS * CLRDISTTEXT: MOVE.L #DISTTEXTBUFF,A0 ADD.W DISTTEXTPTRP,A0 MOVE.L $44E,A1 SUB.W #160*5+120,A1 MOVE.L SLOGOCURVEPTR,A2 MOVE.W #8,D7 CLRDISTTEXTLOOP: MOVE.W (A2),D0 MOVE.W 32(A2),D1 MOVE.L A1,A3 MOVE.L A1,A4 ADD.W #32,A2 ADD.W D0,A3 ADD.W D1,A4 CLR.W -160*5(A3) CLR.W -160*4(A3) CLR.W -160*3(A3) CLR.W -160*2(A3) CLR.W -160(A3) CLR.W (A3) CLR.W 160(A3) CLR.W 160*2(A3) CLR.W 160*3(A3) CLR.W 160*4(A3) CLR.W 160*5(A3) CLR.W 160*6(A3) CLR.W 160*7(A3) CLR.W 160*8(A3) CLR.W 160*9(A3) CLR.W 160*10(A3) CLR.W 160*11(A3) CLR.W 160*12(A3) CLR.W 160*13(A3) CLR.W 160*14(A3) CLR.W 160*15(A3) CLR.W 160*16(A3) CLR.W 160*17(A3) CLR.W 160*18(A3) CLR.W 160*19(A3) CLR.W 160*20(A3) CLR.W -160*5(A4) CLR.W -160*4(A4) CLR.W -160*3(A4) CLR.W -160*2(A4) CLR.W -160(A4) CLR.W (A4) CLR.W 160(A4) CLR.W 160*2(A4) CLR.W 160*3(A4) CLR.W 160*4(A4) CLR.W 160*5(A4) CLR.W 160*6(A4) CLR.W 160*7(A4) CLR.W 160*8(A4) CLR.W 160*9(A4) CLR.W 160*10(A4) CLR.W 160*11(A4) CLR.W 160*12(A4) CLR.W 160*13(A4) CLR.W 160*14(A4) CLR.W 160*15(A4) CLR.W 160*16(A4) CLR.W 160*17(A4) CLR.W 160*18(A4) CLR.W 160*19(A4) CLR.W 160*20(A4) ADDQ.W #8,A1 DBF.W D7,CLRDISTTEXTLOOP RTS * * VBL * * NEWVBL: MOVEM.L d0-d7/a0-a6,-(sp) MOVE.W #$000,$FF8240 jsr music+8 MOVE.L #NEWHBL,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W JSR CLRDISTTEXT JSR SETDISTTEXT JSR GETNEWCURVEP JSR GETNEWCURVEP JSR GETNEWCURVEP ADDQ.L #4,SINCURVEPTR CMP.L #SINCURVEEND,SINCURVEPTR BNE NORESTORESINCURVE MOVE.L #SINCURVE,SINCURVEPTR NORESTORESINCURVE: ADDQ.L #4,SINCURVEPTR_2 CMP.L #SINCURVEEND_2,SINCURVEPTR_2 BNE NORESTORESINCURVE_2 MOVE.L #SINCURVE_2,SINCURVEPTR_2 NORESTORESINCURVE_2: JSR CLRSINCURVE JSR SHOWSINCURVE JSR CLRSINCURVE_2 JSR SHOWSINCURVE_2 JSR SCREENSWAP MOVE.W #1,WFNC MOVEM.L (sp)+,d0-d7/a0-a6 RTE * NEWHBL: CLR.B $FA1B.W MOVE.W #$227,$FF8240 MOVE.L #NEWHBL2,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL2: MOVE.W #$004,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL3,$120.W MOVE.B #197,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL3: MOVE.W #$227,$FF8240 CLR.B $FA1B.W MOVE.L #NEWHBL4,$120.W MOVE.B #1,$FA21.W MOVE.B #8,$FA1B.W BCLR #0,$FA0F.W RTE NEWHBL4: MOVE.W #$000,$FF8240 CLR.B $FA1B.W BCLR #0,$FA0F.W RTE *K RELOCATE: MOVE.L #$19000,A0 MOVE.L 2(A0),D0 ADD.L 6(A0),D0 ADD.L 14(A0),D0 ADD.L #$1C,A0 MOVE.L A0,A1  MOVE.L A1,A2  MOVE.L #$19000,d1 ADD.W #$1c,D1 ADD.L D0,A1  MOVE.L (A1)+,D0 ADD.L D0,A2  ADD.L D1,(A2) CLR.L D0  RELO: MOVE.B (A1)+,D0 BEQ RELEND  CMP.B #1,D0  BEQ RELOJUMP  ADD.L D0,A2  ADD.L D1,(A2) BRA RELO  RELOJUMP: ADD.L #254* * Demot till * * Crystalics * * partydemo * * rader equ 100 k equ 64*160 l equ 128*160 m equ 192*160 section text move.l 4(sp),a6 move.l 12(a6),d0 add.l 20(a6),d0 add.l 28(a6),d0 add.l #4000,d0 add.l #256,d0 move.l a6,d1 add.l d0,d1 bclr #0,d1 move.l d1,sp move.l d0,-(sp) move.l a6,-(sp) pea $4a0 trap #1 lea 12(sp),sp jmp hvve * * init * * init * clr.l -(sp) * move.w #$20,-(sp) * trap #1 * addq.l #6,sp * move.l d0,ustk move.w #2,-(sp) trap #14 addq.l #2,sp move.l d0,oldphys move.w #3,-(sp) trap #14 addq.l #2,sp move.w d0,oldrez movem.l $f8240.w,d0-d7 movem.l d0-d7,savepal move.w #0,-(sp) pea screen pea -1 move.w #5,-(sp) trap #14 lea 12(sp),sp moveq #1,d0 jsr music move.l #nysin,nysinad move.l #nysin2,nysinad2 add.l #2*180,nysinad2 move.l #distlist+rader-1,distad move.w #1,x_rot_inc move.w #0,y_rot_inc move.w #4,z_rot_inc move.w #44,scale_factor move.w #4-1,num_points move.w #2,num_surf move.w #4-1,num_surf_points move.l #screen,scrad move.l #text,textad rts * * fix poly * * init_poly lea parameters,a0 jsr polygon_mupp move.l a0,variables move.l a1,hoppa move.l a2,hoppa3 move.l a3,hoppa4 rts * * Init bild * * init_bild lea $f8240.w,a0 move.l #7,d0 svrta move.l #0,(a0)+ dbf d0,svrta lea bild+34,a0 move.l #screen,a1 move.l #7999,d0 pic_rit move.l (a0)+,(a1)+ dbf d0,pic_rit movem.l bild+2,d0-d7 movem.l d0-d7,$f8240.w rts * * precalc sin * * presin lea sin_tab,a0 lea nysin,a1 move.w #180-1,d1 presin1 moveq #0,d0 move.w (a0),d0 addq.l #4,a0 add.w #16384,d0 divu #331,d0 mulu #160,d0 move.w d0,(a1)+ dbf d1,presin1 lea sin_tab,a0 move.w #rader-1-1,d1 presin2 moveq #0,d0 move.w (a0),d0 addq.l #4,a0 add.w #16384,d0 divu #331,d0 mulu #160,d0 move.w d0,(a1)+ dbf d1,presin2 move.w #-1,(a1) lea nysin2,a1 move.w #-1,(a1)+ move.w #4-1,d2 presin4 lea sin_tab,a0 move.w #90-1,d1 presin3 moveq #0,d0 move.w (a0),d0 addq.l #8,a0 add.w #16384,d0 divu #331,d0 mulu #160,d0 move.w d0,(a1)+ dbf d1,presin3 dbf d2,presin4 rts * * init mfp * * initmfp move.b $fa07.w,mfp move.b $fa09.w,mfp+1 move.b $fa13.w,mfp+2 move.b $fa1b.w,mfp+3 move.b $fa21.w,mfp+4 mrove.l $70.w,svbi move.l $120.w,shbi move.w #37,-(sp) trap #14 addq.l #2,sp move.w #$2700,sr move.b #1,$fa07.w move.b #0,$fa09.w move.b #1,$fa13.w bclr #3,$fa17.w move.b #8,$fa1b.w move.b #53,$fa21.w move.l #vbi,$70.w move.l #hbi,$120.w move.w #$2300,sr clr.b $f820f.w rts * * hvve * * hvve jsr init jsr init_poly jsr presin jsr init_bild jsr initmfp hvve2 jsr rkoblit jsr calculate_3d jsr vridskrik jsr erase_screen movem.l d0-d7/a0-a6,-(sp) jsr music+8 movem.l (sp)+,d0-d7/a0-a6 vsync tst.w vflag beq.s vsync clr.w vflag cmp.b #57,$fc02.w bne.s hvve2 jmp end * * vbi o hbi * * vbi movem.l bild+2,d0-d7 movem.l d0-d7,$f8240.w move.w #1,vflag clr.w ccount clr.b $fa1b.w move.b #53,$fa21.w move.b #8,$fa1b.w move.l #hbi,$120.w move.l distad,a0 cmp.b #-1,(a0) bne.s vbihupp lea distlist+rader+1,a0 vbihupp sub.l #rader+1,a0 move.b (a0)+,$f8265.w move.l a0,distad clr.b $f8265.w clr.w $f820e.w move.l #collist,collad rte * hbi clr.b $fa1b.w move.b #1,$fa21.w move.l #hbi_2,$120.w move.b #8,$fa1b.w movem.l d0-d7,-(sp) movem.l sbild+2,d0-d7 movem.l d0-d7,$f8240.w movem.l (sp)+,d0-d7 clr.w ccount rte * hbi_2 move.l a0,-(sp) move.l distad,a0 move.b (a0)+,$f8265.w move.l a0,distad move.l (sp)+,a0 addq.w #1,ccount cmp.w #rader+1,ccount beq.s hbihupp rte hbihupp clr.b $fa1b.w move.b #8,$fa21.w move.b #8,$fa1b.w move.l #hbi_3,$120.w movem.l d0-d7,-(sp) movem.l bild+2,d0-d7 movem.l d0-d7,$f8240.w movem.l (sp)+,d0-d7 clr.b $f8265.w rte * hbi_3 clr.b $fa1b.w move.b #1,$fa21.w move.b #8,$fa1b.w move.l #hbi_4,$120.w clr.w ccount rte * hbi_4 move.l a0,-(sp) move.l collad,a0 move.w (a0)+,$f8240.w move.w 78(a0),$f8242.w move.l a0,collad move.l (sp)+,a0 addq.w #1,ccount cmp.w #32,ccount bne.s forts clr.b $fa1b.w jsr make_surf forts rte * * blitta slime * * rkoblit lea $f8a00.w,a0 move.w #2,$20(a0) move.w #2+64,$22(a0) move.l #sbild+34+32,$24(a0) move.w #$f,$28(a0) move.w #$f,$2a(a0) move.w #$f,$2c(a0) move.w #2,$2e(a0) move.w #2+64+8,$30(a0) move.w #80-32,$36(a0) move.w #1,$38(a0) move.l #$02034000,$3a(a0) move.l nysinad,a1 move.l nysinad2,a2 move.l #screen+32+54*160,$f8a32.w move.w #rader-1,d1 rko1 lea sbild+34+32,a0 add.w (a1)+,a0 add.w (a2)+,a0 move.l a0,$f8a24.w move.w #1,$f8a38.w move.b #64,$f8a3c.w or.b #$80,$f8a3c.w nop dbf d1,rko1 cmp.w #-1,(a1) bne.s rkohupp lea nysin+2*rader-2,a1 rkohupp sub.l #2*rader-2,a1 move.l a1,nysinad sub.l #2*rader+2,a2 cmp.w #-1,(a2) bne.s rkohupp2 lea nysin2+2*180,a2 rkohupp2 move.l a2,nysinad2 rts * * Rita upp scrollern * * vridskrik add.w #1,textcount btst #0,textcount+1 beq.s vrid_mer rts vrid_mer cmp.w #128,textcount blt.s nnu_mer clr.w textcount add.l #10,textad move.l textad,a0 tst.b (a0) bne.s nnu_mer move.l #text,textad nnu_mer move.w textcount,d2 mulu #80,d2 move.l textad,a2 lea screen+62*160+101*168,a0 moveq #10-1,d1 tumskruv lea font+34,a1 add.w d2,a1 moveq #0,d0 move.b (a2)+,d0 sub.w #32,d0 lsl.w #1,d0 lea offs,a3 add.w (a3,d0.w),a1 move.w 1*160(a1),(a0) move.w 1*160+8(a1),8(a0) move.w 3*160(a1),1*160(a0) move.w 3*160+8(a1),1*160+8(a0) move.w 5*160(a1),2*160(a0) move.w 5*160+8(a1),2*160+8(a0) move.w 7*160(a1),3*160(a0) move.w 7*160+8(a1),3*160+8(a0) move.w 8*160(a1),4*160(a0) move.w 8*160+8(a1),4*160+8(a0) move.w 9*160(a1),5*160(a0) move.w 9*160+8(a1),5*160+8(a0) move.w 10*160(a1),6*160(a0) move.w 10*160+8(a1),6*160+8(a0) move.w 11*160(a1),7*160(a0) move.w 11*160+8(a1),7*160+8(a0) move.w 12*160(a1),8*160(a0) move.w 12*160+8(a1),8*160+8(a0) move.w 13*160(a1),9*160(a0) move.w 13*160+8(a1),9*160+8(a0) move.w 13*160(a1),10*160(a0) move.w 13*160+8(a1),10*160+8(a0) move.w 14*160(a1),11*160(a0) move.w 14*160+8(a1),11*160+8(a0) move.w 14*160(a1),12*160(a0) move.w 14*160+8(a1),12*160+8(a0) move.w 15*160(a1),13*160(a0) move.w 15*160+8(a1),13*160+8(a0) move.w 15*160(a1),14*160(a0) move.w 15*160+8(a1),14*160+8(a0) move.w 16*160(a1),15*160(a0) move.w 16*160+8(a1),15*160+8(a0) move.w 16*160(a1),16*160(a0) move.w 16*160+8(a1),16*160+8(a0) move.w 17*160(a1),17*160(a0) move.w 17*160+8(a1),17*160+8(a0) move.w 17*160(a1),18*160(a0) move.w 17*160+8(a1),18*160+8(a0) move.w 18*160(a1),19*160(a0) move.w 18*160+8(a1),19*160+8(a0) move.w 18*160(a1),20*160(a0) move.w 18*160+8(a1),20*160+8(a0) move.w 19*160(a1),21*160(a0) move.w 19*160+8(a1),21*160+8(a0) move.w 19*160(a1),22*160(a0) move.w 19*160+8(a1),22*160+8(a0) move.w 20*160(a1),23*160(a0) move.w 20*160+8(a1),23*160+8(a0) move.w 21*160(a1),24*160(a0) move.w 21*160+8(a1),24*160+8(a0) move.w 22*160(a1),25*160(a0) move.w 22*160+8(a1),25*160+8(a0) move.w 23*160(a1),26*160(a0) move.w 23*160+8(a1),26*160+8(a0) move.w 24*160(a1),27*160(a0) move.w 24*160+8(a1),27*160+8(a0) move.w 25*160(a1),28*160(a0) move.w 25*160+8(a1),28*160+8(a0) move.w 27*160(a1),29*160(a0) move.w 27*160+8(a1),29*160+8(a0) move.w 29*160(a1),30*160(a0) move.w 29*160+8(a1),30*160+8(a0) move.w 31*160(a1),31*160(a0) move.w 31*160+8(a1),31*160+8(a0) lea 16(a0),a0 dbf d1,tumskruv rts * * draw and hide poly * * make_surf move.w num_surf,count_surf surf_loop lea points_buffer,a0 lea conect_list,a1 lea poly_buffer,a2 add.w conect_count,a1 add.w #8,conect_count moveq #0,d3 move.w num_surf_points,d3 get_right_koord move.w (a1)+,d0 move.w 0(a0,d0.w),d1 move.w 2(a0,d0.w),d2 add.w xorigo,d1 add.w yorigo,d2 move.w d1,(a2)+ move.w d2,(a2)+ dbf d3,get_right_koord jsr draw_poly sub.w #1,count_surf tst.w count_surf bne surf_loop move.w #0,conect_count move.w #0,prefs_count rts * * rita polygonen * * draw_poly lea poly_buffer,a1 lea prefs,a2 add.w prefs_count,a2 add.w #2,prefs_count move.l variables,a0 move.w #%0110110,(a0)+ move.w (a2),(a0)+ REPT 4 move.w (a1)+,(a0)+ move.w (a1)+,(a0)+ ENDR move.l hoppa,a0 jsr (a0) rts * * erase screen * * erase_screen moveq #0,d0 move.l scrad,a0 rept 52 move.l d0,(a0) move.l d0,8(a0) move.l d0,16(a0) move.l d0,24(a0) lea 160(a0),a0 endr rts * * 3d calcs * * calculate_3d moveq #0,d0 move.w x_rotate_angle,d0 ; inca xyz add.w x_rot_inc,d0 ; conterna cmp.w #360,d0 blo.s x_ej_360 moveq #0,d0 x_ej_360 move.w d0,x_rotate_angle moveq #0,d0 move.w y_rotate_angle,d0 add.w y_rot_inc,d0 cmp.w #360,d0 blo.s y_ej_360 moveq #0,d0 y_ej_360 move.w d0,y_rotate_angle moveq #0,d0 move.w z_rotate_angle,d0 add.w z_rot_inc,d0 cmp.w #360,d0 blo.s z_ej_360 moveq #0,d0 z_ej_360 move.w d0,z_rotate_angle lea sin_tab,a1 ; sin lea 180(a1),a2 ; cos lea koords,a0 ; alla objekt i en lista lea points_buffer,a6 ; buffert med kords move.w x_rotate_angle,d4 add.w d4,d4 ; * 2 (for sin_tab) move.w y_rotate_angle,d5 add.w d5,d5 ; * 2 (for sin_tab) move.w z_rotate_angle,d6 add.w d6,d6 ; * 2 (for sin_tab) bsr xyz_rotate ; 3D count bsr projection ; xyz=xy+bitplan bsr scaling ; skala (zoom) rts * * 3d rotering * * xyz_rotate move.w num_points,a5 ; antal hrn att rotera rotate_lp move.w (a0)+,d0 ; get x move.w d0,d1 move.w 0(a1,d6.w),d7 ; get sin value muls d7,d0 ; x * sin move.w (a0)+,d2 ; get y move.w d2,d3 muls d7,d2 ; y * sin move.w 0(a2,d6.w),d7 ; get cos value muls d7,d1 ; x * cos muls d7,d3 ; y * cos sub.l d2,d1 ; xr = x cos - y sin add.l d0,d3 ; yr = y cos + x sin swap d1 ; going to /16384 rol.l #2,d1 swap d3 rol.l #2,d3 move.w d1,(a6)+ ; save x move.w d3,d0 ; y move.w d0,d1 move.w 0(a1,d4.w),d7 ; get sin value muls d7,d0 ; y * sin move.w (a0;)+,d2 ; get z move.w d2,d3 muls d7,d2 ; z * sin move.w 0(a2,d4.w),d7 ; get cos value muls d7,d1 ; y * cos muls d7,d3 ; z * cos add.l d2,d1 ; yr = y cos + z sin sub.l d0,d3 ; zr = z cos - y sin swap d1 ; going to /16384 rol.l #2,d1 swap d3 rol.l #2,d3 move.w d1,(a6)+ ; save y subq.w #4,a6 ; points on x move.w (a6),d0 ; get x move.w d0,d1 move.w 0(a1,d5.w),d7 ; get sin value muls d7,d0 ; x * sin move.w d3,d2 muls d7,d2 ; z * sin move.w 0(a2,d5.w),d7 ; get cos value muls d7,d1 ; x * cos muls d7,d3 ; z * cos sub.l d2,d1 ; xr = x cos - z sin add.l d0,d3 ; zr = z cos + x sin swap d1 ; going to /16384 rol.l #2,d1 swap d3 rol.l #2,d3 move.w d1,(a6)+ ; save x (?) addq.w #2,a6 move.w d3,(a6)+ ; save z subq.w #1,a5 cmpa.w #-1,a5 bne rotate_lp rts * * gr om till x och y * * projection lea points_buffer,a0 ; kordinater move.l a0,a1 ; spara kordinater lea projection_tab,a2 move.w num_points,d6 proj_it move.w (a0)+,d0 ; x move.w (a0)+,d1 ; y move.w (a0)+,d2 ; z asr.w #1,d2 add.w #60,d2 add.w d2,d2 move.w 0(a2,d2.w),d7 ; get sin value sub.w #16384,d7 lsr.w #1,d7 muls d7,d0 muls d7,d1 swap d0 ; going to /16384 rol.l #3,d0 swap d1 rol.l #3,d1 move.w d0,(a1)+ move.w d1,(a1)+ add.w #2,(a1)+ dbra d6,proj_it rts * * scalning * * scaling lea points_buffer,a0 ; kordinater move.l a0,a1 lea neg_sin_tab,a2 move.w scale_factor,d3 ; storlek add.w d3,d3 move.w num_points,d6 ; antal kordinater scale_it move.w (a0)+,d0 ; x move.w (a0)+,d1 ; y addq.w #2,a0 ; frbi bitplans offset move.w 0(a2,d3.w),d7 ; get sin value add.w #16384,d7 lsr.w #1,d7 muls d7,d0 muls d7,d1 swap d0 ; going to /16384 rol.l #2,d0 swap d1 rol.l #2,d1 move.w d0,(a1)+ ; nya x move.w d1,(a1)+ ; nya y dbra d6,scale_it rts * * endif * * end moveq #0,d0 jsr music movem.l savepal,d0-d7 movem.l d0-d7,$f8240.w move.w #$2700,sr move.b mfp,$fa07.w move.b mfp+1,$fa09.w move.b mfp+2,$fa13.w bset #3,$fa17.w move.b mfp+3,$fa1b.w move.b mfp+4,$fa21.w move.l svbi,$70.w move.l shbi,$120.w move.w #$2300,sr clr.b $f8265.w move.w oldrez,-(sp) move.l oldphys,-(sp) pea -1 move.w #5,-(sp) trap #14 lea 12(sp),sp * move.l ustk,-(sp) * move.w #$20,-(sp) * trap #1 * addq.l #6,sp * clr.w -(sp) * trap #1 rts  * section data scale_factor dc.w 25+10+6+2 num_points dc.w 0 points_buffer ds.w 20*3 poly_buffer ds.w 20*8 x_rotate_angle dc.w 0 y_rotate_angle dc.w 0 z_rotate_angle dc.w 0 xorigo dc.w 32 yorigo dc.w 25 x_rot_inc  dc.w 0 y_rot_inc  dc.w 0 z_rot_inc  dc.w 0 even koords dc.w -50,-50,0 dc.w -50,50,0 dc.w 50,50,0 dc.w 50,-50,0 conect_list dc.w 0,4,8,12 dc.w 12,8,4,0 prefs dc.w %010 dc.w %010 sin_tab dc.w 0,286,572,857,1143,1428,1713,1997,2280 dc.w 2563,2845,3126,340B6,3686,3964,4240,4516 dc.w 4790,5063,5334,5604,5872,6138,6402,6664 dc.w 6924,7182,7438,7692,7943,8192,8438,8682 dc.w 8923,9162,9397,9630,9860,10087,10311,10531 dc.w 10749,10963,11174,11381,11585,11786,11982,12176 dc.w 12365,12551,12733,12911,13085,13255,13421,13583 dc.w 13741,13894,14044,14189,14330,14466,14598,14726 dc.w 14849,14962,15082,15191,15296,15396,15491,15582 dc.w 15668,15749,15826,15897,15964,16026,16083,16135 dc.w 16182,16225,16262,16294,16322,16344,16362,16374 dc.w 16382 cos_tab dc.w 16384 dc.w 16382,16374,16362,16344,16322,16294,16262,16225 dc.w 16182 dc.w 16135,16083,16026,15964,15897,15826,15749,15668 dc.w 15582,15449,15396,15296,15191,15082,14962,14849 dc.w 14726,14598,14466,14330,14189,14044,13894,13741 dc.w 13583,13421,13255,13085,12911,12733,12551,12365 dc.w 12176,11982,11786,11585,11381,11174,10963,10749 dc.w 10531,10311,10087,9860,9630,9397,9162,8923 dc.w 8682,8438,8192,7943,7692,7438,7182,6924 dc.w 6664,6402,6138,5872,5604,5334,5063,4790 dc.w 4516,4240,3964,3686,3406,3126,2845,2563 dc.w 2280,1997,1713,1428,1143,857,572,286,0 neg_sin_tab dc.w -286,-572,-857,-1143,-1428,-1713,-1997,-2280 dc.w -2563,-2845,-3126,-3406,-3686,-3964,-4240,-4516 dc.w -4790,-5063,-5334,-5604,-5872,-6138,-6402,-6664 dc.w -6924,-7182,-7438,-7692,-7943,-8192,-8438,-8682 dc.w -8923,-9162,-9397,-9630,-9860,-10087,-10311,-10531 dc.w -10749,-10963,-11174,-11381,-11585,-11786,-11982,-12176 dc.w -12365,-12551,-12733,-12911,-13085,-13255,-13421,-13583 dc.w -13741,-13894,-14044,-14189,-14330,-14466,-14598,-14726 dc.w -14849,-14962,-15082,-15191,-15296,-15396,-15491,-15582 dc.w -15668,-15749,-15826,-15897,-15964,-16026,-16083,-16135 dc.w -16182,-16225,-16262,-16294,-16322,-16344,-16362,-16374 dc.w -16382,-16384 dc.w -16382,-16374,-16362,-16344,-16322,-16294,-16262,-16225 dc.w -16182 dc.w -16135,-16083,-16026,-15964,-15897,-15826,-15749,-15668 dc.w -15582,-15449,-15396,-15296,-15191,-15082,-14962,-14849 dc.w -14726,-14598,-14466,-14330,-14189,-14044,-13894,-13741 dc.w -13583,-13421,-13255,-13085,-12911,-12733,-12551,-12365 dc.w -12176,-11982,-11786,-11585,-11381,-11174,-10963,-10749 dc.w -10531,-10311,-10087,-9860,-9630,-9397,-9162,-8923 dc.w -8682,-8438,-8192,-7943,-7692,-7438,-7182,-6924 dc.w -6664,-6402,-6138,-5872,-5604,-5334,-5063,-4790 dc.w -4516,-4240,-3964,-3686,-3406,-3126,-2845,-2563 dc.w -2280,-1997,-1713,-1428,-1143,-857,-572,-286,0 dc.w 0,286,572,857,1143,1428,1713,1997,2280 dc.w 2563,2845,3126,3406,3686,3964,4240,4516 dc.w 4790,5063,5334,5604,5872,6138,6402,6664 dc.w 6924,7182,7438,7692,7943,8192,8438,8682 dc.w 8923,9162,9397,9630,9860,10087,10311,10531 dc.w 10749,10963,11174,11381,11585,11786,11982,12176 dc.w 12365,12551,12733,12911,13085,13255,13421,13583 dc.w 13741,13894,14044,14189,14330,14466,14598,14726 dc.w 14849,14962,15082,15191,15296,15396,15491,15582 dc.w 15668,15749,15826,15897,15964,16026,16083,16135 dc.w 16182,16225,16262,16294,16322,16344,16362,16374 dc.w 16382 projection_tab dc.w -16382,-16374,-16362,-16344,-16322,-16294,-16262,-16225 dc.w -16182 dc.w -16135,-16083,-16026,-15964,-15897,-15826,-15749,-15668 dc.w -15582,-15449,-15396,-15296,-15191,-15082,-14962,-14849 dc.w -14726,-14598,-14466,-14330,-14189,-14044,-13894,-13741 dc.w -13583,-13421,-13255,-13085,-12911,-12733,-12551,-12365 dc.w -12176,-11982,-11786,-11585,-11381,-11174,-10963,-10749 dc.w -10531,-10311,-10087,-9860,-9630,-9397,-9162,-8923 dc.w -8682,-8438,-8192,-7943,-7692,-7438,-7182,-6924 dc.w -6664,-6402,-6138,-5872,-5604,-5334,-5063,-4790 dc.w -4516,-4240,-3964,-3686,-3406,-3126,-2845,-2563 dc.w -2280,-1997,-1713,-1428,-1143,-857,-572,-286,0 ds.w 10 even distad dc.l 0 distlist rept 5 dc.b 1,1,1,2,2,2,2,3,3,3,4,4,5,6,7,8,8,9,9,9,10,10,10,10,11,11,11 dc.b 11,11,11,10,10,10,10,9,9,9,8,8,7,6,5,4,4,3,3,3,2,2,2,2,1,1,1 endr dc.b 1,1,1,2,2,2,2,3,3,3,4,4,5,6,7,8,8,9,9,9,10,10,10,10,11,11,11 dc.b 11,11,11,10,10,10,10,9,9,9,8,8,7,6,5,4,4,3 dc.b -1 EVEN offs dc.w m+0,l+128,0,0,0 dc.w 0,0,0,0,0 dc.w 0,0,l+112,0,l+96 dc.w 0,0,0,0,0 dc.w 0,0,0,0,0 dc.w 0,0,0,0,0 dc.w 0,l+144,0,0,16 dc.w 32,48,64,80,96 dc.w 112,128,144,k+0,k+16 dc.w k+32,k+48,k+64,k+80,k+96 dc.w k+112,k+128,k+144,l+0,l+16 dc.w l+32,l+48,l+64,l+80 collist dc.w $000,$99a,$223,$223,$aab,$aab,$334,$334,$bbc,$bbc,$445,$445,$ccd,$ccd,$556,$556 dc.w $556,$556,$ccd,$ccd,$445,$445,$bbc,$bbc,$334,$334,$aab,$aab,$223,$223,$99a,$000 dc.w $000,$000,$000,$000,$000,$000,$000,$000 dc.w $002,$002,$80a,$80a,$803,$803,$10b,$10b,$904,$904,$20c,$20c,$a05,$a05,$a0d,$a0d dc.w $a0d,$a0d,$a05,$a05,$20c,$20c,$904,$904,$10b,$10b,$803,$803,$80a,$80a,$002,$002 dc.w $000,$000,$000,$000,$000,$000,$000,$000 text dc.b " "," WELCOME "," TO OUR " dc.b " PART IN ","THIS NEAT"," DEMO " dc.b " "," CODE BY "," PQ LEAR " dc.b " AND "," EMPA "," " dc.b "GRAPHIX BY"," EMPA "," " dc.b " SOME "," BORING "," GREETS " dc.b " ","ANATOMICA ","CRYSTALIC " dc.b " S.O.T.E "," REWARD "," ICE " dc.b " IMAGINA " dc.b " UNIQUE ","AND YOU!!!"," " dc.b " WE ARE ","JUST ABOUT","TO FINISH" dc.b " OUR NEW ","MULTIPART "," DEMO " dc.b " CALLED "," LETHAL "," TRASH " dc.b " "," "," " dc.b " POLYROUT "," BY OMEGA "," " dc.b " "," TIME TO "," GO HOME " dc.b " NOW... "," "," BYE! " dc.b " "," "," ",0 EVEN music incbin a:\zeal_scr\no_sheep.mus sbild incbin a:\zeal_scr\biiig3.pi1 bild incbin a:\zeal_scr\spendura.pi1 font incbin a:\zeal_scr\font.pi1 ds.b 88*160 screen dcb.b 200*168,0 variables dc.l 0 hoppa dc.l 0 hoppa3 dc.l 0 hoppa4 dc.l 0 parameters dc.w 0 dc.l buffert dc.l scrad dc.w 0,0,-1000 dc.w 64,53,1000 polygon_mupp incbin 'a:\zeal_scr\xope2_01.img' section bss ds.l 4096 buffert ds.l 131*256 savepal ds.w 16 ustk ds.l 1 oldphys ds.l 1 oldrez ds.l 1 num_surf ds.w 1 prefs_count ds.w 1 conect_count ds.w 1 count_surf ds.w 1 num_surf_points ds.w 1 vflag ds.w 1 nysin ds.w 360+rader nysin2 ds.w 360+1 nysinad ds.l 1 scrad ds.l 1 nysinad2 ds.l 1 svbi ds.l 1 shbi ds.l 1 mfp ds.b 10 ccount ds.w 1 collad ds.l 1 textad ds.l 1 textcount ds.w 1 sync_it ds.b 1 EVEN ``fff108 U" }ppTHE COMPOSERS composer.doc The composers - By Rogz Introduction: This article mentions the most famous composers on the CBM 64 and ST (+ some amiga composers) in more or less ranking or 'chronological' order, gives examples of their work and states my opinion about them. Observe that this article is limited: it cannot mention every 64/ST composer, so I have picked out the ones I find important. (and a few guys I know!) If I have missed someone obvious then go ahead, shoot me, or better still: contact me and let me know it.I would love response to this article: opinions, greetings, addings, support, dislikings (not too much) etc. Let's start from the beginning: The '64 composers. ROB HUBBARD: The 'main man' and together with Jochen Hippel somewhat of a corner- stone for this article. (and for music on 64/ST as well...) He was one of the first to actually discover what the 64 was capable of. He makes great tunes with excellent instruments, but they can get a bit repetitive sometimes. (complaining on Rob! Blasphemy!) Guys on the ST who like the Scavenger (later...) SID tunes should not be allowed to miss the original 'Warhawk' tune on the 64. If you like SID sounds you'll love the slow 'intro' of the song. (if you don't it'll sound like a cat being torn to pieces..) He have done so many good tunes so it is hard to pick out any specific but lets mention some of them: The tune you hear when playing 'Delta' is a weird, but pretty cool tunes which seems to last forever. I am also fond of the tune in 'Mega apocalypse'. It is jam-packed with action. 'One man and his droid' and 'Phantoms of the asteroids' are two tunes I had in the loader on some 64 game which have stuck in my memory. (Both, plus an OK version of Warhawk is available in the prehistoric 'BIG demo'). On the ST 'Human race 4' featured in 'Gold- runner' and the tune in 'Thrust' shouldn't be missed. I better stop here, or I will mention every tune Rob ever made! If he just had worked more on the ST! I wonder what he does now? DAVID WHITTAKER: I mention him here under Rob because he is so big in terms of quantity but frankly I am not especially fond of him.He's a bit boring somehow. (no offence David) On the ST you can always listen to the chipversion of the Xenon 2 song 'megablast',or off course the original Xenon tune. 'Beyond the ice palace' is a bit different tune which I must mention, it has a moody atmosphere which makes the game better. Probably there are some guys out there which will kill me for making this part so small, but as I said: I don't really like him. MARTIN GALWAY: Another SID sound specialist. I suppose most of you guys have played 'Rambo II' and 'Green Beret' on the 64, and therefore have a clue of who he is. He seems to be a fan of the 64 specific 'sawtooth' (cat- killer...) sound which you either love or hate... I like him! Sadly he hasn't done anything on the ST. (As far as i know...) BENN DAGLISH: Another well talented musician that sometimes seems to lack good instruments... On ST you could play 'Switchblade', or the old game 'Deflektor' to hear his capabilities. On the 64 I remember songs from games like 'Venom strikes back', 'North star'+ many others. JAS BROOKE: An unpredictale guy. The song in the ST version of 'Thunderstrike' makes me sick, but another game from the same company (Millenium) called 'Resolution 101' is a bit different. It got a nice, 'swingy' style. On the 64 you must listen to the 'Krackout professional' tune A jolly, chirpy tune with fun instruments. JEROEM TEL: A great musician from which I have heard extremly little. His tune in the game 'Cybernoid' on the 64 is great. Good tense feelimg, good instruments. The famous Union demo has a conversion of it. Also check out 'Supremacy' (on ST). UBIK: I just have to mention the tune in'Arcade classics' released by Fire- bird on the 64. It contains electric guitars and basses(!) together with nice drumsound and a good powerful tune. Thrust II also have a weird song by him. (He is also the programmer of both games) MANIACS OF NOISE: Another well known group on 64, which musn't be forgotten. Some Mad Max tunes are conversion of MON tunes.Listen to Syncs tracker version of one of the tunes, called 'Future composer'. Some tunes in the before mentioned, legendary Union demo is also originally MON tunes. Well, so much for the 64 bit. Now let us continue with the ST specialists. Most of the before mentioned composers have made music on ST as you might have seen, but it seems illogical to mention them again so this part is almost solely based on pure ST composers. MAD MAX (or JOCHEN HIPPEL): Placed first for logical reasons... He is a good songconverter with many titles behind him, but also talented on his own. Games like Wings of Death and Lethal Xcess plus many, many (many, many, many!) others proves that. As good as all his songs is of good quality with good 'flow' and nice instruments. I suppose I don't have to give examples of where you can hear his tunes as they are everywhere! Mad Max must be one of the most famous guys on the ST, it is almost unnecessary to include him in this article... COUNT ZERO: Also a well known and talented musician, fond of (great) drums and some 'odd' (but cool) instruments. Check out his musicmixer in the Decade demo! His tunes are tense, have good 'feeling' and rhythm together with powerful drums. Some of his quartet tunes are a bit boring though with dull instruments. (the tune in 'Things not to do' is OK though) SCAVENGER: Another great guy who have managed to introduce SID-sound to the ST! But his tunes without SID sound, like the one in Electras part in PYM is great too! He seems to be fond of quick, fast changing 'solo- like' parts (like in the afore-mentioned tune). The tune in the intro of DBA 6 is a great tune which uses the 'fake' SID sound to the full. I definitely rank this guy high!! BIG ALEC: He is good, it is funny that I hadn't heard of him before PYM. He is very fond of the buzztone, but you get used to it. If I'm not wrong he has done the music to 'No second prize' and that is some music! Cool bass, cool sound, cool everything! The in game music seems blues inspired, and the intro tune is loosely based on (the beginning) the original Thalion intro song. Most PYM songs is great too! TAO: He is also often using the buzztone sound, and is good at it. Some of his tunes can be a bit boring, but for example the song in the main- menu of 'Just buggin' is good. And his 'Sleepwalker' conversion is excellent. JESS or Ninja turtle: A strange guy. 90 percent of his songs is pretty boring, chaotic, somehow lacking an ordinary tempo and 'logic', but some of them are brilliant! The tune in Legacy's part of 'Froggies over the Fence' (Middle earth theme) is superb with great tempo and rhytm and the song in 'My socks are atomic flame throwers' (for your loader #1) in 'Choice of gods' Is also fantastic, albeit a tad short. Don't miss 'Ze 16 minutes Hit' in the resetpart with some cool bass in the last half of the song. LAP: A guy I almost forgot! (and that would have been a mistake) He is cool with 'different' instruments, and in 'Coast- Cray 2 emulator' (in PYM) you can hear one of his most known songs. The tempo-changing is impressive. EXCELLENCE IN ART: He makes songs of good quality, but they can get a bit repetitive, maybe they would sound better with real human song in them. His 'Get into the groove' conversion is good. His bassline sounds can get boring pretty fast in some other tunes though. Big Alec, for example do also often use buzztone sounds, but dont become boring as easily. Trackerdudes: WALKMAN: A norwegian guy working only in trackers. Anyone who have missed 'Songs of the unexpected' (STE only) should need a brain- repair! His tunes are mostly soft with pianos etc. but 'Klisje paa klisje' also have some great bass-sounds etc. One of my favourites! He may be compared to Tip on the Amiga perhaps... GLADIATOR: Also represented on 'Songs of ...' with some great tunes. 'Please listen' and 'Hurricane' are two of the best ones. Somehow I grade him lower than Walkman, but that's only my opinion... JUAN (7an): An ST dude working in Audio Sculpture. His music is nice with good samples and so on,but traces of 'repetitivism' can be found here too. Listen to 'Latem giseo' for a wild electric guitar mix. He has a peculiar habit: He almost never use the same pattern twice, not even if the tune partly repeats itself! BLUE NUN: He may not be too famous (yet), but he is great anyhow. 'Monstrin' in the recently released 'Trackmania II' is great, with some excellent drumpattern. Also check out his older 'Italian Backdraft'. TERRY: Good Swede! Technofreak, and maybe too much of it! OK, he has done some soft tunes too, like 'Friendship' in Trackmania II or 'News' in Trackmania I, but Techno rules. Some technotunes can get a bit repetitive, like 'Hangover' in Trackmania I, a tune which starts OK but whose middlepart is repeated into boredom.. According to Lord in CAC, Terry has stopped making tunes and will concentrate on a technoband instead. And now as a little parenthes I will mention some (random) AMIGA(rgh) composers: TIP: In my opinion one of the best Amiga composers. Noone on ST should miss HIFI-dreams by Aura. The best with some of his tunes are that they sound like I want! Take 'The sweat shop' for example: First there is some choirlike instruments, soft and a bit sad. 'A little pianoplink would suit perfect just here', I thought for myself. And voila, there it was, exactly as I wanted it. The first time I heard 'Chinese Dream' I almost reached a orgasmic state, because everything just 'sat' where it should! HALLON SOFT: Maniacs. Some guys say that all their peculiar instruments etc. corru- pts their song, but other claim that they make the song better. I'm not sure... Check out their latest (and last?) music disk. JESPERKYD: A guy of variying quality..His tunes in 'Global Trash' are marvellous! Great instruments. But, for example his tune 'Hallucinations' quickly gets repetitive. BIORKMAN: Hello Thomas, you Amigafreak! Hope you like being mentioned!! (he happens to be in the same class as I, and therefore (and because his (techno)tunes are nice!) I must mention him here...) Well, let's stop here. I feel more or less satisfied now, but I must say that I think there are some ST trackerdudes missing, and I must remind you that the Amiga part doesn't strive to be complete, it is just a little parenthes. Remember that I would love some response to the article. Maybe even some real musicians can 'fill in' this article a bit? Rogz PS. My address is: Roger Wennstroem PL 5207 76176 Norrtaelje Sweden Do contact me for any reason! $BYE! $_*K * Realtime calculated Bezier curve coded by OB of ANA 931222 * *K jsr setsuper jsr setscreen move.l $70.w,oldvbi move.l #newvbi,$70.w move.w #$0,$ff8240 move.w #$777,$ff8242 move.l #0,$ff8a00 move.l #0,$ff8a04 move.l #0,$ff8a08 move.l #0,$ff8a0c move.l #0,$ff8a10 move.l #0,$ff8a14 move.l #0,$ff8a18 move.l #0,$ff8a1c move.l #$70,a0 move.w #16000,d0 clr: move.l #0,(a0)+ dbf.w d0,clr *K mainloop: move.w #$0,$ff8240 jsr waitvbl jsr screenswap move.w #$20,$ff8240 cmp.b #57,$fffc02 beq slut move.w #0,$ff8a20 move.w #0,$ff8a22 move.l #tom,$ff8a24 ; flytta source. adress till blitter chipet move.w #8,$ff8a2e move.w #0,$ff8a30 move.l #$70,a0 ; flytta dest. adress till blitter chipet add.w srnp,a0 move.l a0,$ff8a32 ; flytta dest. adress till blitter chipet move.w #20*200,$ff8a36 ; X rknare move.w #1,$ff8a38 ; Y rknare move.b #1,$ff8a3a ; HOP move.b #3,$ff8a3b ; Op move.b #0,$ff8a3d ; hger shift move.b #%11011,$ff8a3c ; let's go ! move.w #$b,$ff8240 * a0 p. p cos v a1 p. p sin v * a2 p. p cos v2 a3 p. p sin v2 * a4 p. p cos v3 a5 p. p sin v3 * * d5 x d6 y * d7 z move.l #sin,a0 move.l #sin,a2 move.l #sin,a4 * sub.w #2,v cmp.w #0,v bgt hoppa move.w #718,v hoppa: * sub.w #2,v2 cmp.w #0,v2 bgt hoppa2 move.w #718,v2 hoppa2: * sub.w #2,v3 cmp.w #0,v3 bgt hoppa3 move.w #718,v3 hoppa3: add.w v,a0 add.w v2,a2 add.w v3,a4 add.w #save_cords,a5 move.l #3D_cords,a6 move.w #8,c loop: move.w (a6)+,d5 move.w (a6)+,d6 move.w (a6)+,d7 * Rout to calculate the vector * (1) move.w d5,d0 muls.w 90*2(a0),d0 move.w d6,d1 muls.w (a0),d1 sub.w d1,d0 ; d0 innehller x * (2) move.w d5,d1 muls.w (a0),d1 move.w d6,d2 muls.w 90*2(a0),d2 add.w d2,d1 ; d1 innehller y * (3) move.w d0,d2 asr.w #7,d2 ; d2=r move.w d2,d3 muls.w 90*2(a2),d3 move.w d7,d4 muls.w (a2),d4 sub.l d4,d3 move.l d3,d0 * (4) muls.w (a2),d2 move.w d7,d4 muls.w 90*2(a2),d4 ; d4 innehller redan z add.w d4,d2 ; z i d2 * (5) move.w d2,d3 asr.w #7,d3 ; d3=r move.w d3,d4 muls.w 90*2(a4),d4 move.w d1,d5 asr.w #7,d5 muls.w (a4),d5 sub.w d5,d4 move.w d4,d2 * (6) muls.w (a4),d3 move.w d1,d4 asr.w #7,d4 muls.w 90*2(a4),d4 add.l d4,d3 move.l d3,d1 * (7) asr.w #7,d2 * (8) asl.w d0 ; Frstr x ! (snyft !) move.w d2,d3 add.w #150,d3 divs.w d3,d0 add.w #160,d0 ; d0 innehller nu det riktiga x * (9) asl.w d1 ; Frstr y ! add.w #150,d2 ; Frstr z ! divs.w d2,d1 add.w #100,d1 ; d1 innehller nu det riktiga y move.w d0,(a5)+ move.w d1,(a5)+ subq.w #1,c cmp.w #-1,c bgt loop * Draw Bezier curves * Kurva 1 move.l #save_cords,a0 move.l #ready_prepared_cords,a6 move.l (a0),(a6) ; flytta x och y (2+2=4=longword) move.l 4(a0),4(a6) move.l 8(a0),8(a6) jsr bezier_kurva * Kurva 2 move.l #save_cords,a0 move.l #ready_prepared_cords,a6 move.l 12(a0),(a6) ; flytta x och y (2+2=4=longword) move.l 16(a0),4(a6) move.l 20(a0),8(a6) jsr bezier_kurva * Kurva 3 move.l #save_cords,a0 move.l #ready_prepared_cords,a6 move.l 24(a0),(a6) ; flytta x och y (2+2=4=longword) move.l 28(a0),4(a6) move.l 32(a0),8(a6) jsr bezier_kurva * Kurva 4 move.l #save_cords,+a0 move.l #ready_prepared_cords,a6 move.l (a0),(a6) ; flytta x och y (2+2=4=longword) move.l 12(a0),4(a6) move.l 24(a0),8(a6) jsr bezier_kurva * Kurva 5 move.l #save_cords,a0 move.l #ready_prepared_cords,a6 move.l 4(a0),(a6) ; flytta x och y (2+2=4=longword) move.l 16(a0),4(a6) move.l 28(a0),8(a6) jsr bezier_kurva * Kurva 6 move.l #save_cords,a0 move.l #ready_prepared_cords,a6 move.l 8(a0),(a6) ; flytta x och y (2+2=4=longword) move.l 20(a0),4(a6) move.l 32(a0),8(a6) jsr bezier_kurva jmp mainloop *K bezier_kurva: move.l #tab1,a0 move.l #tab2,a1 move.l #tab2-2,a2 move.l #$70,a5 add.w srnp,a5 move.l #ready_prepared_cords,a6 * Calculate first point of Bezier curve move.w (a6),d0 mulu.w (a0),d0 move.w 4(a6),d1 mulu.w (a1),d1 move.w 8(a6),d2 mulu.w (a2),d2 add.w d1,d0 add.w d2,d0 move.w 2(a6),d1 mulu.w (a0)+,d1 move.w 6(a6),d2 mulu.w (a1)+,d2 move.w 10(a6),d3 mulu.w (a2),d3 subq.l #2,a2 add.w d2,d1 add.w d3,d1 lsr.w #6,d0 lsr.w #6,d1 move.w #7,d7 loop: move.w d0,d2 move.w d1,d3 * Calculate next point in Bezier curve move.w (a6),d0 mulu.w (a0),d0 move.w 4(a6),d1 mulu.w (a1),d1 move.w 8(a6),d4 mulu.w (a2),d4 add.w d1,d0 add.w d4,d0 move.w 2(a6),d1 mulu.w (a0)+,d1 move.w 6(a6),d4 mulu.w (a1)+,d4 move.w 10(a6),d5 mulu.w (a2),d5 subq.l #2,a2 add.w d4,d1 add.w d5,d1 lsr.w #6,d0 lsr.w #6,d1 * Draw movem.l d0-d7/a0-a6,-(sp) jsr line movem.l (sp)+,d0-d7/a0-a6 dbf.w d7,loop *K * d2=x1, d3=y1, d0=x2, d1=y2 * jsr line *K line: cmp.w d0,d2 ble jmp exg.l d0,d2 exg.l d1,d3 jmp: move.w d2,d4 ; x move.w d3,d5 ; y sub.l d2,d0 ; d0=dx sub.l d3,d1 ; d1=dy move.w d0,d6 cmp.w #0,d6 bge j neg.w d6 j: move.w d1,d7 cmp.w #0,d7 bge j2 neg.w d7 j2: cmp.w d6,d7 bgt vert tst.w d1 tst.w d0 beq plot * Here is the routine for the more horisontal lines cmp.w #0,d1 bgt noneg neg.w d1 move.w d1,d6 add.w d1,d6 sub.w d0,d6 ; d6=E move.w d1,d2 add.w d1,d2 move.w d2,d3 ;term2=d3 sub.w d0,d2 sub.w d0,d2 ;term1=d2 neg.w d1 back: move.l a5,a0 move.w d5,d7 mulu.w #160,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #3,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #4,d7 sub.w d7,d4 move.w #15,d7 sub.w d4,d7 clr.l d4 bset.l d7,d4 or.w d4,(a0) move.w #160,d5 move.w d0,d7 subq.w #1,d7 cmp.w #0,d1 bge noexc neg.w d5 noexc: loop1: tst.w d6 bmi hopp1 add.w d5,a0 add.w d2,d6 ror.w #1,d4 bcc.w hopp3 addq.w #8,a0 hopp3: or.w d4,(a0) ; First dot dbf.w d7,loop1 bra end hopp1: add.w d3,d6 ror.w #1,d4 bcc.w hopp4 addq.w #8,a0 hopp4: or.w d4,(a0) ; Dot it ! dbf.w d7,loop1 end: rts * Here is the routine for the more vertical lines vert: cmp.w #0,d1 bgt noneg2 neg.w d1 move.w d0,d6 add.w d0,d6 sub.w d1,d6 ; d6=E move.w d0,d2 add.w d0,d2 move.w d2,d3 ;term2=d3 sub.w d1,d2 sub.w d1,d2 ;term1=d2 neg.w d1 back2: move.l a5,a0 move.w d5,d7 mulu.w #160,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #3,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #4,d7 sub.w d7,d4 move.w #15,d7 sub.w d4,d7 clr.l d4 bset.l d7,d4 or.w d4,(a0) ; First dot move.w d1,d7 cmp.w #0,d7 bge t neg.w d7 t: subq.w #1,d7 * move.w #40,d7 move.w #160,d5 cmp.w #0,d1 bge noexc2 neg.w d5 noexc2: loop2_1: tst.w d6 bmi hopp2_1 add.w d5,a0 add.w d2,d6 ror.w #1,d4 bcc.w hopp2_3 addq.w #8,a0 hopp2_3: or.w d4,(a0) ; Dot it ! dbf.w d7,loop2_1 bra end2 hopp2_1: add.w d3,d6 add.w d5,a0 or.w d4,(a0) dbf.w d7,loop2_1 end2: rts * Tvrt om noneg: move.w d1,d6 add.w d1,d6 sub.w d0,d6 ; d6=E move.w d1,d2 add.w d1,d2 move.w d2,d3 ;term2=d3 sub.w d0,d2 sub.w d0,d2 ;term1=d2 bra back noneg2: move.w d0,d6 add.w d0,d6 sub.w d1,d6 ; d6=E move.w d0,d2 add.w d0,d2 move.w d2,d3 ;term2=d3 sub.w d1,d2 sub.w d1,d2 ;term1=d2 bra back2 * X1=X2 and Y1=Y2 (Only a dot) plot: move.l a5,a0 move.w d5,d7 mulu.w #160,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #3,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #4,d7 sub.w d7,d4 move.w #15,d7 sub.w d4,d7 clr.l d4 bset.l d7,d4 or.w d4,(a0) rts *K setsuper: clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp move.l d0,savesuper rts *K endsuper: move.l savesuper,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts *K newvbi: move.w #1,vbiflag rte *K waitvbl: cmpi.w #1,vbiflag bne waitvbl move.w #0,vbiflag rts *K setscreen: move.w #0,-(sp) move.l #$70,-(sp) move.l #$70,-(sp) move.w #$5,-(sp) trap #14 add.l #12,sp rts *K screenswap: add.w #32000,srnp cmp.w #64000,srnp bne jhopp2 move.w #0,srnp move.w #32000,osrnp bra jhopp3 jhopp2: move.w #0,osrnp jhopp3: move.l #$70,d2 add.w srnp,d2 move.l d2,$44e lsr.l #8,d2 move.b d2,$ff8203 lsr.l #8,d2 move.b d2,$ff8201 rts *K slut: move.l oldvbi,$70 move.w #$777,$ff8240 move.w #$700,$ff8242 move.w #$70,$ff8244 move.w #$0,$ff8246 jsr endsuper clr.w -(sp) trap #1 *K section data oldvbi: dc.l 0 savesuper: dc.l 0 vbiflag: dc.l 0 srnp: dc.w 0 osrnp: dc.w 0 tom: dc.w 0 3D_cords: dc.w -40,-40,0 dc.w -40,0,0 dc.w -40,40,0 dc.w 0,-40,0 dc.w 0,0,0 dc.w 0,40,0 dc.w 40,-40,0 dc.w 40,0,0 dc.w 40,40,0 save_cords: ds.w 18 ; 9*2 (x och y) ready_prepared_cords: ds.w 6 tab1: incbin "8bezier.tab" tab2: incbin "8bezier2.tab" even sin: incbin "sin128.dat" end *K * 3D following lines, 931125-931210 by Oskar Burman * *K jsr setsuper jsr setscreen jsr slumpa_stjrnor move.l $70.w,oldvbi move.l #newvbi,$70.w move.w #$777,$ff8242 move.l #0,$ff8a00 move.l #0,$ff8a04 move.l #0,$ff8a08 move.l #0,$ff8a0c move.l #0,$ff8a10 move.l #0,$ff8a14 move.l #0,$ff8a18 move.l #0,$ff8a1c *K mainloop: move.w #$0,$ff8240 jsr waitvbl cmp.w #0,pc beq col1 cmp.w #2,pc beq col2 cmp.w #4,pc beq col3 cmp.w #6,pc beq col4 backcol: jsr screenswap move.w #$8,$ff8240 cmp.b #57,$fffc02 beq slut move.w #0,$ff8a20 move.w #0,$ff8a22 move.l #tom,$ff8a24 ; flytta source. adress till blitter chipet move.w #8,$ff8a2e move.w #0,$ff8a30 move.l #$30,a0 ; flytta dest. adress till blitter chipet add.w srnp,a0 add.w pc,a0 move.l a0,$ff8a32 ; flytta dest. adress till blitter chipet move.w #20*200,$ff8a36 ; X rknare move.w #1,$ff8a38 ; Y rknare move.b #1,$ff8a3a ; HOP move.b #3,$ff8a3b ; Op move.b #0,$ff8a3d ; hger shift move.b #%11011,$ff8a3c ; let's go ! * move.w #$300,$ff8240 * a0 p. p cos v a1 p. p sin v * a2 p. p cos v2 a3 p. p sin v2 * a4 p. p cos v3 a5 p. p sin v3 * * d5 x d6 y * d7 z move.l #save,a1 cmp.w #32000,srnp bne hp addq.w #2,a1 hp: move.l #$30,a5 add.w srnp,a5 add.w pc,a5 move.l #sin,a0 move.l #sin,a2 move.l #sin,a4 * sub.w #2,v cmp.w #0,v bgt hoppa move.w #718,v hoppa: * sub.w #2,v2 cmp.w #0,v2 bgt hoppa2 move.w #718,v2 hoppa2: * sub.w #2,v3 cmp.w #0,v3 bgt hoppa3 move.w #718,v3 hoppa3: add.w v,a0 add.w v2,a2 add.w v3,a4 move.l #data,a6 move.w #49,c loop: move.w #0,move_back move.w (a6)+,d5 move.w (a6)+,d6 subq.w #3,(a6) cmp.w #-128,(a6) bgt no_wrp move.w #128,(a6) move.w #1,move_back no_wrp: move.w (a6)+,d7 * Rout to calculate the vector * (1) move.w d5,d0 muls.w 90*2(a0),d0 move.w d6,d1 muls.w (a0),d1 sub.w d1,d0 ; d0 innehller x * (2) move.w d5,d1 muls.w (a0),d1 move.w d6,d2 muls.w 90*2(a0),d2 add.w d2,d1 ; d1 innehller y * (3) move.w d0,d2 asr.w #7,d2 ; d2=r move.w d2,d3 muls.w 90*2(a2),d3 move.w d7,d4 muls.w (a2),d4 sub.l d4,d3 move.l d3,d0 * (4) muls.w (a2),d2 move.w d7,d4 muls.w 90*2(a2),d4 ; d4 innehller redan z add.w d4,d2 ; z i d2 * (5) move.w d2,d3 asr.w #7,d3 ; d3=r move.w d3,d4 muls.w 90*2(a4),d4 move.w d1,d5 asr.w #7,d5 muls.w (a4),d5 sub.w d5,d4 move.w d4,d2 * (6) muls.w (a4),d3 move.w d1,d4 asr.w #7,d4 muls.w 90*2(a4),d4 add.l d4,d3 move.l d3,d1 * (7) asr.w #7,d2 * (8) asl.w d0 ; Frstr x ! (snyft !) move.w d2,d3 add.w #150,d3 divs.w d3,d0 add.w #160,d0 ; d0 innehller nu det riktiga x * (9) asl.w d1 ; Frstr y ! add.w #150,d2 ; Frstr z ! divs.w d2,d1 add.w #100,d1 ; d1 innehller nu det riktiga y * Convert screen cor. cmp.w #1,move_back beq hpp1 move.w (a1),d2 move.w 4(a1),d3 bra hpp2 hpp1: move.w d0,d2 move.w d1,d3 cmp.w #32000,srnp beq f move.w d0,2(a1) move.w d1,6(a1) bra hpp2 f: move.w d0,-2(a1) move.w d1,2(a1) hpp2: move.w d0,(a1) move.w d1,4(a1) addq.w #8,a1 cmp.w #0,d0 blt nodot cmp.w #319,d0 bgt nodot cmp.w #0,d1 blt nodot cmp.w #199,d1 bgt nodot cmp.w #0,d2 blt nodot cmp.w #319,d2 bgt nodot cmp.w #0,d3 blt nodot cmp.w #199,d3 bgt nodot movem.l d0-d7/a0-a6,-(sp) jsr line movem.l (sp)+,d0-d7/a0-a6 nodot: subq.w #1,c cmp.w #-1,c bgt loop * move.w #30,d0 *bigl: move.w #10,d1 *l: nop * dbf.w d1,l * dbf.w d0,bigl jmp mainloop *K * d2=x1, d3=y1, d0=x2, d1=y2 * jsr line *K line: cmp.w d0,d2 ble jmp exg.l d0,d2 exg.l d1,d3 jmp: move.w d2,d4 ; x move.w d3,d5 ; y sub.l d2,d0 ; d0=dx sub.l d3,d1 ; d1=dy move.w d0,d6 cmp.w #0,d6 bge j neg.w d6 j: move.w d1,d7 cmp.w #0,d7 bge j2 neg.w d7 j2: cmp.w d6,d7 bgt vert tst.w d1 tst.w d0 beq plot * Here is the routine for the more horisontal lines cmp.w #0,d1 bgt noneg neg.w d1 move.w d1,d6 add.w d1,d6 sub.w d0,d6 ; d6=E move.w d1,d2 add.w d1,d2 move.w d2,d3 ;term2=d3 sub.w d0,d2 sub.w d0,d2 ;term1=d2 neg.w d1 back: move.l a5,a0 move.w d5,d7 mulu.w #160,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #3,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #4,d7 sub.w d7,d4 move.w #15,d7 sub.w d4,d7 clr.l d4 bset.l d7,d4 or.w d4,(a0) move.w #160,d5 move.w d0,d7 subq.w #1,d7 cmp.w #0,d1 bge noexc neg.w d5 noexc: loop1: tst.w d6 bmi hopp1 add.w d5,a0 add.w d2,d6 ror.w #1,d4 bcc.w hopp3 addq.w #8,a0 hopp3: or.w d4,(a0) ; First dot dbf.w d7,loop1 bra end hopp1: add.w d3,d6 ror.w #1,d4 bcc.w hopp4 addq.w #8,a0 hopp4: or.w d4,(a0) ; Dot it ! dbf.w d7,loop1 end: rts * Here is the routine for the more vertical lines vert: cmp.w #0,d1 bgt noneg2 neg.w d1 move.w d0,d6 add.w d0,d6 sub.w d1,d6 ; d6=E move.w d0,d2 add.w d0,d2 move.w d2,d3 ;term2=d3 sub.w d1,d2 sub.w d1,d2 ;term1=d2 neg.w d1 back2: move.l a5,a0 move.w d5,d7 mulu.w #160,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #3,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #4,d7 sub.w d7,d4 move.w #15,d7 sub.w d4,d7 clr.l d4 bset.l d7,d4 or.w d4,(a0) ; First dot move.w d1,d7 cmp.w #0,d7 bge t neg.w d7 t: subq.w #1,d7 * move.w #40,d7 move.w #160,d5 cmp.w #0,d1 bge noexc2 neg.w d5 noexc2: loop2_1: tst.w d6 bmi hopp2_1 add.w d5,a0 add.w d2,d6 ror.w #1,d4 bcc.w hopp2_3 addq.w #8,a0 hopp2_3: or.w d4,(a0) ; Dot it ! dbf.w d7,loop2_1 bra end2 hopp2_1: add.w d3,d6 add.w d5,a0 or.w d4,(a0) dbf.w d7,loop2_1 end2: rts * Tvrt om noneg: move.w d1,d6 add.w d1,d6 sub.w d0,d6 ; d6=E move.w d1,d2 add.w d1,d2 move.w d2,d3 ;term2=d3 sub.w d0,d2 sub.w d0,d2 ;term1=d2 bra back noneg2: move.w d0,d6 add.w d0,d6 sub.w d1,d6 ; d6=E move.w d0,d2 add.w d0,d2 move.w d2,d3 ;term2=d3 sub.w d1,d2 sub.w d1,d2 ;term1=d2 bra back2 * X1=X2 and Y1=Y2 (Only a dot) plot: move.l a5,a0 move.w d5,d7 mulu.w #160,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #3,d7 add.w d7,a0 move.w d4,d7 lsr.w #4,d7 lsl.w #4,d7 sub.w d7,d4 move.w #15,d7 sub.w d4,d7 clr.l d4 bset.l d7,d4 or.w d4,(a0) rts *K *K col1: move.w #$777,$ff8242 move.w #$555,$ff8244 move.w #$777,$ff8246 move.w #$333,$ff8248 move.w #$777,$ff824a move.w #$555,$ff824c move.w #$777,$ff824e move.w #$222,$ff8250 move.w #$777,$ff8252 move.w #$555,$ff8254 move.w #$777,$ff8256 move.w #$333,$ff8258 move.w #$777,$ff825a move.w #$555,$ff825c move.w #$777,$ff825e bra backcol *K col2: move.w #$222,$ff8242 move.w #$777,$ff8244 move.w #$777,$ff8246 move.w #$555,$ff8248 move.w #$555,$ff824a move.w #$777,$ff824c move.w #$777,$ff824e move.w #$333,$ff8250 move.w #$333,$ff8252 move.w #$777,$ff8254 move.w #$777,$ff8256 move.w #$555,$ff8258 move.w #$555,$ff825a move.w #$777,$ff825c move.w #$777,$ff825e bra backcol *K col3: move.w #$333,$ff8242 move.w #$222,$ff8244 move.w #$333,$ff8246 move.w #$777,$ff8248 move.w #$777,$ff824a move.w #$777,$ff824c move.w #$777,$ff824e move.w #$555,$ff8250 move.w #$555,$ff8252 move.w #$555,$ff8254 move.w #$555,$ff8256 move.w #$777,$ff8258 move.w #$777,$ff825a move.w #$777,$ff825c move.w #$777,$ff825e bra backcol *K col4: move.w #$555,$ff8242 move.w #$333,$ff8244 move.w #$555,$ff8246 move.w #$222,$ff8248 move.w #$555,$ff824a move.w #$333,$ff824c move.w #$555,$ff824e move.w #$777,$ff8250 move.w #$777,$ff8252 move.w #$777,$ff8254 move.w #$777,$ff8256 move.w #$777,$ff8258 move.w #$777,$ff825a move.w #$777,$ff825c move.w #$777,$ff825e bra backcol *K setsuper: clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp move.l d0,savesuper rts *K endsuper: move.l savesuper,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts *K newvbi: move.w #1,vbiflag rte *K waitvbl: cmpi.w #1,vbiflag bne waitvbl move.w #0,vbiflag rts *K setscreen: move.w #0,-(sp) move.l #$30,-(sp) move.l #$30,-(sp) move.w #$5,-(sp) trap #14 add.l #12,sp rts *K slumpa_stjrnor move.l #data,a3 move.w #60-1,d3 make_slump: move.w #17,-(sp) ; x trap #14 addq.l #2,sp and.l #%1,d0 sub.w #64,d0 move.w d0,(a3)+ move.w #17,-(sp) ; y trap #14 addq.l #2,sp and.l #%1,d0 sub.w #64,d0 move.w d0,(a3)+ move.w #17,-(sp) z trap #14 addq.l #2,sp and.l #%1,d0 sub.w #128,d0 move.w d0,(a3)+ dbf.w d3,make_slump rts *K screenswap: add.w #32000,srnp cmp.w #64000,srnp bne jhopp2 move.w #0,srnp move.w #32000,osrnp subq.w #2,pc cmp.w #-2,pc bne dhopp2 move.w #6,pc dhopp2: bra jhopp3 jhopp2: move.w #0,osrnp jhopp3: move.l #$30,d2 add.w srnp,d2 lsr.l #8,d2 move.b d2,$ff8203 lsr.l #8,d2 move.b d2,$ff8201 rts *K *K slut: move.l oldvbi,$70.w move.w #$777,$ff8240 move.w #$700,$ff8242 move.w #$70,$ff8244 move.w #$0,$ff8246 jsr endsuper clr.w -(sp) trap #1 *K *K savesuper: dc.l 0 vbiflag: dc.w 0 oldvbi: dc.l 0 sin: incbin "sin128.dat" even prex: incbin "prexplot.dat" even prey: incbin "preyplot.dat" even v: dc.w 0 v2: dc.w 0 v3: dc.w 0 c: dc.w 0 tom: dc.l 0 srnp: dc.w 0 osrnp: dc.w 0 pc: dc.w 6 move_back: dc.w 0 data: ds.w 500 save: ds.w 200 end cx UWzUU_PT*UU_ _>UU'ZUb}u*FUY'}׻z(`7^7KE3bFTUKZ| UUWUPUPUUJUU/UzU-ЪK TVU'}@GQI KAqגh@_}ⳛ/UH}jW誽҇*U UU^RWUWTWWWPUU@U@+@<;@#) ;3 4>`> { #aJT9-U UꁿխUWU@U@ꀿ*WUzUUBWWU8ljЀU   S ZDAUꪈ|6 V*UUUUUB^ժ@TP*ժ_U ^TJr(*e FUUTNRT+z*TUUU* ^_UUUרW?/__ڌ-|TIhh@Uz UP| ^ @  m /]xv0A C\"UPP1p_p _Z ZL@BB ƺB)@B@v  :D@2ZppPZPWW U@8pjԀTT @@ ~WD\BBe v%=u}^TDVU)}W@UUU|*%PT B-@ BsBl!] DTT# TmU >T+UUUU~UUZUCTV]l aB@NY *q*U_ZUUժ~WTWUJuU*LVTT XBB !@`T(2Uj*TRWWU@U@ꕿ*P/UzRUUWWW@CT  XkREn|wz T%U*U_?UUUUJ ^UU@**WUUU\ _T T  ÇB fFA @@EU_ժ*M:PEꪕՁUTUTU@UBU@UUD;L  @ gB5    )UW"_UUBU+UTU׊WU7hTPT @ [/@C     qQ꪿UUUU*UUU U_U_K說h>*  &@AC   i/UU%_UPUU*UUB@WWU'lx.T>@C @@8BG  `@%;    ;꪿UUBUTUUUzUUU_UWUWF說J UUsj3LiPI /52x@Vwhw_URPUIbUUu_U_@ꪅ^UUUBꪪPWWU#i|+UP/UPwU}*K9^} Kݰ^=MvE_겵nW 8ǼzҹzQT >+꪿ UUBUWUUUUUUZ_UUU_Uİꪪ׃WU΋hseʊoQSsheX?y8wW_U@U #_WUUu_UZ_U*UURꪪPWUci|+Ui ֫UTwU}*c]/wY\-I-'w(:=?ATЖk*>+꪿ UUJUWUUTUUU^_UUU_UѴꪪWث^A,R xW50h4-ɏJ_zէ]}UA@U-WUUw_UzU*UUPꪪPUUb} UAUTWuW_ vrgYW,FVb4=jeทϥ/nuNAAP*Fо/믿 UU UWUUTU@U@^_UUUUWUWB<߻A@ǫB3{ډ|W̑[>%B<7 ]wCBU}_UW_UU@zUU UU?j*_ꥪwU}^_UUPUWtO_ڠfyV5^g_zfj.5[@_ zWUUUVUTPUPUP?UU*^U_U_ U_(ۮPTyƯCFýt_b×.=oc7ׇu* wUQPUO#@U_}UWTz UUUU_ UU]_KVWUPU@ wOup*ISU~3_~eo5T@ UŅj꪿UUUUPUP@UTUTԯUUUUUSǩR]h?U;(TsN/r_rNΛI]-ר*܀UJUuW_UU+**UUUTUUWW-ЯUU8RU_,ڪ SegG5__xaʦ4[PUJCU _k꿿UUUUUUU*UUWUUUWWW(UTU.{>6޻l|??tOw_x*_Uy`UWU@U**P~^ UUZTVWxA'}y*LAT/8NKwrҟO2*Tj?տ@*pZ~zPPTT Z_W___PPKI WWUGT@R 8_k /+{J--}߀*QU/U U굕_Z_RP=j} UV>U@IT'I_/5٢+Epkoۯw*j|UPUP|VW *_UTUTUT?UU@?U___[  U ȠU_w-S[A?oA@UykW@U}PUW{/PAUUUU/UUAb}\ U UTUPU˻ U[.^6Qv ln?PUt{EzӪ0ת'*U :UPF_U UUU_U_UzPUWWPbWJ݇Z^mAaIO@Tp-*zZݵRởFWU} UW_@^ UꯪUPЪWU"_}_*UK UT%XUSsR/ZeGZUy[KJsw_/үP*DTo_U @@WU WUWU@UU*UUxnzU@HUcz*-QG>ToQ#=|*yMK5^T__UU_UUv^TUUUTU_ U@@Pw~}~*UZBUU8o@={]|޼>@߭%ZUB~~T- UUUUPP_U*TUUUU_ U_U_ZFRUjRRU|uR?@|-GP>_} [>eJ@JJUU)w_VUUbZJPU*UUUUW_ UPPU2(8*oU^VUUeӿ@jb8VF@MK;/5]ǕzUjLTA  UUUU_PPUUTUU+~UUW U_U_ĨPDUPUPPUv6}mЀ0_S;Pʫ__ _'ln  UU" UUU#K UPU~*UUUUW_ UTTU"*(*UӠ~_UU3@[#p(/*wz g^P+Ti}~UTDTG*ՠ*UUU@UPPUUTUU+~UUUWUWPDPꪪ-@ժ͘OKO@J@mR7wEH(/ UU" WUU'K U@UꪪU~*UUUU_@ UUTU"( U?_UUG+K(*q*;T3T9`WYoWDPO*UUUWUPPUUUUU+~UUWUWT/ꪭ^ [ Wͻ/P-izoW^=( //8z/U(_UW *UU@U꪿U~+UUUU_@ UU+vT( *U^<UWD0݅ U zXRy^J PUP'"__UP7^_%@P>T/UUzU@@UUUUUUjUWUWUWD@OJિw@2UShʃLWhA@RU"U_=_WU_VUUUU~UC "WWUWPUZ~v#* TAT*~nU@wZ_pU DA꪿P?UUU~UUUUUUTUWUWUWjAUT !PgAUCTc *}_ck@ x}*VU'?_}*_WUUT J**UU,PWDRe\'I+T*k:U"J_4 UG@_UUUUTUTRP*PUUUUU_U_U_?PH@꠿ T7JRUNETr*UR5J[@*W UWC_TW(UUV/UPgR|<~+Ҫ*UKQUTc><{~7J_!j A_UUUUU@U@@*@UUUUW_U_U_^@AJT _ܛ_K T?R?QPU U_K=J;P*UR*UU(zժ@@PZ_*** jpzUU@ͯPn^ v UnPUv{yozw U_x?@^}VUTTTZ _ PPUW _Z@B\^ZZUiVxNTr-`*UjsZZ:_zU=UBZPPPUW PP@BW UPBWW^UTUJDPpx/Tҍ/xUWKs-*" U_-*UR{Uz}BWB UPBWJ TTU_***}k~իUPHUJ ^_Uȸ}@^PH-z U=@zPRU@U ־~տTTTU**RP@U@UT@UUUUTU~Ujm/9XzРh|UW>@ꪜ^ ' U_)~UV/U*_U*UUUWU*_UWj**5UWUU T ܞ _U፤-PjP_V U%@ y;PP*_UU_UUVTT_UTUU*UPUUZU*U}+*_MiPbUU_F௪U S_wU_x/WԾTUZT U+TUUUU*@U@U***PU] uWUrP U@7xUNgP aA꪿UP}W UUTTTWUTU_T UPUUS_T U__UNå&OWWժU{UdWr?U_u_UP* UUP*UUUUUPUPUUT/UZ#aցWU'AT {U}UP*āk꪿Z@_*UUUUU U UUWT@UPUUQWTUWץ_DơU]WUUc9WU"U_%_U@* UU@*UUUUUVUTU+**U^U"yׁWUlRתU*,V4?j6JUTD꪿CzUUTTj*UUUT_UUUUWԯ/<4+U*Z%PUZ_ ,ԥTU<U_+ U@_UU*UUUUUUTUUPU**`_WW(UUZUjC^//z9'ZUVyA׫UUTT U*UUUUTUUUA-Ыc= TW*PU U_UWU*UUUUU*UUUUW_**x?k_֡)UؖUU5~UEz U^~UWik֫UUTTUUTUUUU@UU~ꁿSVJ&| ʠ*U_STd>P+R7_UUʕj~W-W_U_UUUUU* UUUW_ XKPU$zU'WäTj%*V=_${^  @үUUPPPUTUU UzZ_pz*UU[T^ xw_UWZU^UP-WUUWUUWW_ UUUUU_ ZARU P-v}Z_ʴ*_T=*UST-pnZ JPZUUPPUUPUUJUj_ijT|UW>!*Vݥ}W_xWVUR_UUU_UU__nnfffv~dDH<D~wwwwwwwwwwwwwww6NEO!?npq@ ?8pg<|ڮ9(| q8J"`8n3g6oI;f</S{8??+?' I7 d0`hߧ8< `{-?O/^__5p 0b>?>;W`!0p:<Ȍ?<?_VlMBpÌg?v< zt>1!^6}`dsÕq?61> &G?s~f׿hg_`=A z<{ق~??=tc; p} x?8{D]Zo/ ??a2 <^e@ =d |Lx 0w_+q6.?1`wmxxs 00_@| `?[0@?gx?xkkq <t/Zc8|t`\>?|> }sw<+ȝwd3~ x'ϋyp>w|6t)hA<PO9/3~C!??^/)9c?Z?̿_N' , Й`f?_;eN_ e}BλNkF6 pظp?˰W\ zypύv >G6qOd7<?@P.zCAaLyd+8pZ;;<p&ˎ0}{F"?o qoE:83=`r GӼ< )g0

W'*YǞ @Q?04 O|/@ ;}=qayP@?͎F?>6 __w` 0os_kdA0@?$ P??@??>W8)~R+8>m>>A8??` |Gg `;cn /AvxmܕA@9e|?r<U|:WrMCp/א7HOɉ;|/`AO5o=iZRG^ s6πp~~~2???Oa$>@#AU8qqC^TGXKQSsrpx6 g?a?yy tǕ<}珸zAw8{<`Th:}o7ec|8y@@f@@>1蝘&0FG?_Po????t??]>?1>b^cY`X'2::<?\ `׫=z`@ .dBcT \0plW6$ p m@ۀ.>}nc Kv~5/Qrps Wg8(k,_+jy3<#MCǃ;V_;rG~'4lvՁd>_BIB^?u_HZ~πR#/C'Gȇ8\oS/So.i>8hһo HHCgcDndZH r͡>>scû׬O>= 7Bf=w5k0@[? `q Œ>w86_I!?_ ?an_`yb  4:@*pwR1}:?I߿ې_gqYf }?'Zc}wh‌C?<}݂ 3]_a(~y7礸9:9_@@Q?wOO`?? ?|が{%?{\7aÁetzg ??x.}LBDz? &Fy |?F`p 8[MWp  ې,/F0W??|2 7d|9|  QI(F^~`||ޟna??<Ž{ 86 4p ljn?.?'?|pp 0C|?@>p|ya@z_?6<d{@2cp 3x>x>z?pca \:A#T_C|7g#<0?nw>dy?8D!@|>dyψ?  X!&#Mo#v<?g{_~?vS0w~]~="<?77`Ӏ=?g_ʧ̈;0%f_'@;~g}|x`x=4 8w|@oP)A?i+/tq3J`ɏGWa3 3Lҭ41"_c<@=]+? ʆ7|33_03 >&G@y2?pWq=Ӈ\?B큾rc.a\/9n[ Ȁ FSmc !`7 >2:>ڈ 7gW8 * O%\?"`)x-W'}=<À\>bT<\cB~ ms_/qr .'G0:sa" b!~'=F=w%F s=}Fh+9jv./%h%GJYx'g kۃ;; 3Lì~Os~/wA|P/=ۀH~}/?8r 7.]ϯC>@L2f?/8Y@V4`?Ew8{xFwn]vH O0??*@ nHH'Q(`(:ۜǃ?=W8SMۻ2N w'xD{}1_ϯ_ϟ|.O0  {p#~8!?(??&@A@%6̸^Xҿ]exP1,}iW`Gx<=À   g?#|9s~|?o <> 5 [qu#pl?uyts'E|y'i@BO00xǀ~@//E ۏFˌy`xYVlװg4R_9ߞT@v@<|!s h vq3qK.$f|c;Ya~s???~B> ENy͒sxet T^K+ 1'yqA??.{%!e9G8yS??;a=l8?Ny96k?F.?0g/v8`!.qa؟ ~?*NQy?~?xF??'>s wy€΂)~8vo`_ߗZw}N|?/W8' ?=;~?šavm|6X/K6߿Y‹p8?<xz/x???G6ZgbxA~=v v?>3H~gǀ~\/>{[9~g~=ءR:}-@7~`h~N}?_>߈/x/ >oJ)"84 ~{C x`!Q/ g@D3?|<={wބ^|s;`yf?\W9'xvZLe!_|=/TQѓ6P@$oHuQ٦8?Cߧ_0Ӆ0<<_ ,  y cU[0?pr㶷IZ yh>=6\WQ@"a{s|anشop/`?~n/f4ѯظ߀>9P~~*8ySP`>a)O Rx?cjk $,?p?>8GX.:h<xyl8@! OO~> fRF۽7???0\sLW@#<W<StJJ 4?c; r'p?;>_Ppa;?ݨ0 [ 3 R3<p=]~PC#0wsO{ =.a@` =~ Jx4(^?C?@_? h[ks@`*G,<|?b?B 2a\?֋<>>& >˛$񁨀g˞spt?zr1cZ>?ixi 6Oy>rs61h3K3|<?bȢڗv]xk?{LxĀOyCCْG!2amydS|s 'o@Dzc|95΃蘝J3m=\֯s=^1???|ޣ>('7 O:un{' {8r$?}+Z=+?W eFˊy{W`E uqiO=;7 dK۽668;k#' yxi3><dtًƁowOdefXo|p` qC<!q>̃?}5~BlFϣysz1a+{y{?}fa7Ua+Lp<??8J'D{x>wdC?2|e4,Ym0'?er+B9?s$7 mhrX?vUlړ3U77 ;:6/??3 aJzg0,wώ◍GS|x>g w3)e*s><<v54?>d W$ |pP~vX? );à&|˚OOm=*KoB 8kzpl??W'ә~.;[_w6ŞiA?(ᯬNn4hKIw(h?~[.>Wn?h?MO?/3ug(0V8?~ oɡ@:Gl1I?)|]x*G@9.P_G~F`C5|h|I7  6Db\d?h@q+ꭞF`x޻܁>?T'@Op y0o/="`Gg x={CygOf:`ՀwkXd?>{: i[δH?Ldhk;C\d^$dUJL}?d+0M~p~O~~ f~hUi q~''kܵ4?C>cX'x@raܯ>|ŗ3~(s/D0:5.; %LlppV6Im~E'B1FE Scl&}ԟG({™6|)Uro*_\9]S@/4D,=p>????Gt10!$Tcs_>Ep@@nj?~ ϟDx|8r Hrq]!?~z=gLj6/@??0wʿDu>ف/|!C(p~; a ??qoC#q} }/͠ !p>_ ?@  ,ZO?]'c 듫G Nn12t; Ek;2OC̍nደL@p6|gK|R+`^7'$:G 0>Ä|7HCof++x8?q/P _ 7e}?'!ϼerx=qCB€>;Fz|??Z gx8apg1?x0̣?rۡg? G f8c?Ā#.W8X}>bd>GK?1_ l)c20=_o:DPo p4 eɔh#q~z @ 0f3y4c=Mq܇ %.p9 O:jf8 rO|=HX`~4G`q/ ??w|`;.Mz^'8?: F>!|?s<@  >"C| 8 yO˘+_37-r>TV{@`=2?QXߘ0`@%C4C|? x' 9Ce:0 6gդ7=&C6c[>1"gh10` iwd+s|??? ?~|b7  >L??Oyk_ ??!?i&`P |Zeo\1>???? ?K9s {xDhǁ8|̈́'P0#,p:qzA^7Tyb_MxI.@wb3#'Gx7k<Ct60y!+ͣ@fps3܆ }opuo3&'Gxxonx%p9(W}x-,pqc@m u#|x9(9n|}lL#?3ܰ#?~p bo~?)mQ ?* SF^P!X??3= fX0t?Ӄ8^#&}4'?/?4n84wp3L>?N0??+X7p@? ؎ 8?6 #8O/T98&sM"C^߀@?2!!>_7o?xOs΃dw 6[c<CF;33b??? ?}_??7 Yo~A>dr#>U)^ w? ??Z${a,~ ?? )#o xu<,?%?Iܸ+_fy~YYo??<=C?L?5fpC|'P8-$y~=0E6!+H+?se~?D(9>Tv;K{ J1,$;@?m_)HY[ǟ)qAlu~wA,dGH?-rs G# ?-`nOOz/= w+\!/Ϳ3Èӓ:c<9EfS?B__~oE:y >&sa|o?w'W<[ ?*oxG5%[1''Wdž&il` ܇:??>z\3?~Ïޙalp7(Y08x[C];%{{bggc?>e7?|uKjDS{;{0Lʯ<"zi m>r6q?*B { 9?߷)_%x>8w|>W)7l_{;h_/?~=?>2 +}jQ D=go XD=>~<?<Eue~%G NE%=Q?n{|?|>dw}h?Ϡr~? ٖo/<0)?n??>z>L:10&lb????r%^&o,zZa~*?>|y<ӽ^s82Ϛ?x?=}y݈J  c|||<O9p?@_#>?p?І?_z?M? GxV|<pȸP   ~Op8À||={\WG`>"????ygxзa&<@??? <?|P`!xD8/',@ ?x ϓeY̮?0?B%<~ ߀???Œ>w84_Z?|?pw6)(~?C??fZBH ?w9xB|$⸘|???u<_H?ǘʠ?|Bx?? Xgok,_??ɼ:L9x8????T `olW??čxeMfxpo/????>gc 8 ?? dv p???|W1FI??,xSǺ}opc?? u(,{w8߄{???s< ds`??Ux}j;=^??[)3CgO`Wɀ??=N?=o=?]!??W;xa~???~xm9?!J=:qA~G??!~B+8>m>>G vf'O 0o{_kd_ÈpM#A3*/? ;mmhpc>;>~ a[$I876``;=1/1?? `}/sp-_?>_7SEcÃ?? @0=T:v&K7$sCȢ_ǻ;c po?;(zʄ>U2́w > +[; cF0c;e?B!v gy.*@>Lx`Q/w}%3y|o9?? A.?˴3Lf{0`Lۃh~V_<Op???h}+2U>????<+~XX.0t Rn(cg?<t/Bsclt˲^py?i|x??| 0w= q'y'~$'kH; } ?~ <Á=/00?{y~r/q?G<x?Ӭ>(uVvx??z {σx?l7*!×q ?1>xOup~o. `Ëd?<ǏxOIpAW@dx <|p3]<P@p?c<{pȰgxB?>ǀeͧ 8qcPp.0~_ScRs|+a8%s0Gbw3 0=@σ??v`^o#>߶#g;L0~ pf K : ! : \ JNEO!<?q~8??s|qcxq8?q8?s`s18?8?9>9s|8q~9??8cqGxs|q1gs|y91>?8??8csq~ǿ@883??s|q9s|qqq1>119>?9x1?1>1qq~3??cs|ss8??8??99A1>?sc8??qqs|s89?1>qsc|9F1x>s9?s|c11?s|qƁ1?c|9??1s9~s9q~c1c9?3?c9s9?9As1>?c39s1>?cs9s1>?cs91x>?9>css1?9>?c9>cs11?g9x>?cssccc9|?c|9>?g9>g9??1111?3<?9g1sc9|?3<?s|g1>3??c9??g1sc9fpx3<?gx1>?c|9>?s|3<g1>c1>s9>sf3??gc1??g3??3??c1>g3<f3<s|9>?gx1>?fx3<?c1c1c1??c3<c|3<?c3|?Àg3g339>?fx39?f31Fc1>s3|?Àfc3c3??ff33??fgxx33?fg3>??fcx31fc39<>?33?1ff3x?fxfnffnpffxffffffxxffffffxffxff<33MqIr~6I2?$8?dxlmmM?I8~?$~??m$?mq~??I$qǁmL?8?,0k5|3l?m~68m~I6lIq~6??dmqm?mq~??mm~,0???[m-1?mq~??I$I$~8I~$x[m~8[m|?[mc|~ͦ8?k%8?ii68?Km|qKm~8Im~?Imq~~?[Imq~??[Iq~m~M?5M9>~,?m)~>8i~-1Ki|q-Kis-%O8???[K|Ii~q-4??K[|Ii~q-9>??ZK|Ki|qm-9>??x88????859%9>>?>M-qρY-1>-->?-->1--iiq~~ii~iiqqs1? ֑'9cKFSd ں!"=?۳3`3p0?>>0J?T`s\xqv棺? Mu|(MZM333??x>ËSVl؈_`Nxc~J/T!LOOfgpp||??wwxόC"Ҫ8G9P%P!i01p{|!!>p؀?3?ݺZ#|9ϥ8?$ 0`^!--f-c<>???0>0??8`tNs|DKqm9:كzL j`!  <$389x|~>x.d/xk s|vɘiUM93iʫv͛՜@Q@z! _p?|<%6i8wC=8W "+?\lc8>??y 1>Y#Ü\h8#zr̜zzU"U})#: $q?q|=pq18 q~?L"=J|Տ'zgn"cɜo? ???<N;O?<3Lg|fwrlP~|-mɶ|!D[cl`98xpAGg1?82e#~Çt79 ,eɷ=`!}>>|G͟5"?==$9yR>xq`!I 3wx|<?p<@@5+`` A@ir`fqw>~>< plp!"?6 `4م@@03{ |0?xwwxl8c?bg%?v>$-.{0 c < <4Zg@1<<?##<gLxܼ状#9Vޛkp0 V@P?>z gėZU''LZ0 v/H\QBo 3@??x?'8?>këW'6lxOy00 cWbСgg{x` yy??>#<?ɟ 9Zބ<Χ79$#q0` 3<~81>x?~ | 3 mp 38 0  ̒#?:t?xֹ[JڀU/Nmq>|x678~D&^WsO:4"<r/|&@!| <<9p 8 >?x??}gݓؕ%790"y3?@ !F2K$W` N1'1 x@3x?`x?p~2i<?Ñ?͛r,Or>ۖ7` 0#~,  #o0?0?x;<l<0;? ?2>Oh1 6 0G|`\l4 A~9?8<??#cMD$ 04 Б ~9܄|?;8~>t??3??@g;@4` P̜d98CdOps?x|N?O?;_c0`P0 #x䆨X/A(qy'3>q>Gcs 1 q0g?@`` G,tϘ<<1??G?`<?p68 @0 ~8? ~ c|ez\;?lxF@(Հ!  3tp<#|q??y?x0??{?<>??0u?ezy%9l{!*&5`&9JxUr7~F ? ~ ?K9m"'9gKٚK8x~?O;=??y#GGx=}~Y)"oc臭x8ha~??Ã8?ObO}~g{N/3Sd{RXTd"3]x6^9<| !? ?c;hp>.<x`!s6b:a^8??p?>??0}0~π{-./0o?|:-e; 0`!r1FyJ>Ǯal}y?" n``P3 3'c9x0?qC?|@{{|GGgW;璕0@10 YǏ xqr>p}`&p?opB~‚s3lq010V~gjQzHLJc\a`xp3<?a~`*/,Wx."<:[v009l}'W< 14 O<??? 779xLlD?x01iS 8Q#4|n;L<C~@sx??=?oЏByǀ000ҁo٘4Ȅ$cΰ9g߀q????gx Kw<;ۏ<`π*P01P)j&x#Yrr9x?y0 ? ?~xqdg{ Ǐ>e<Np!1,5gz\"8d!H~l'8??8?>?|H?[}rx|R"bt-Nm<8k.\?G|???)6?q[]ǒ>d"6mpONF>>)>N_?c?`x'??>?x "(mW YI3ď<5|`bq?p $9pH"qi SϴmY?;Ԧ3`2~r8 x1ϾDzHBv9K|sn!iu_ׯQ[D>qF1q????>0?0~|0qo'YW' <{pĀ<|a0??x ?? 8i%M@@2 ;'2,}xH1G~8'x;bww2=  )5[ ]3~S0N9|~??pa46aP#IGD]#"sY8f?~?~8?>E~9* }0@F"C@G@`M=6 c?x<383<7?k?g Nx!$cX?DdLG'9p>|||3?9>emE 6~fN2>?r <<3?989m99EO"-v-^}9QR>72Ds~7?88?>?qÎ\Āc$@"^ ^{3N9^q:/M89y|`??pc|?:6(![8gqHl?Ì0|< ??1ϙP!9^kSnٳ誖q̓n1s0>&t q|?~>c<$PP!2V9\3^q"?srx>._?8 | Ã|<Ç99xƇ9fK@!$ x zesZ>];x̏À3'?3>|!xsi 3i@@! I k!s7UK-?D3x?1>>782f߀!(R*hշ3A~r)/{6je?1??pχ??|qqqUͯZ(Pp%>gn]3#:gx*pCa??8x ||8|YfNl(( kTgrў0Q+3 {,˜ǃ?q<????? 39'DH%@w][bʹ&w}kٜ8]?C???qKK?KK?8KK??ZZ9ZZ>?ZZ9>ZM<>ZY?Z>1>>Z9T[9Ki?i-%|q֏~>1KI??mi)|sT~<1KI??im-|s~~Z1Ki%|qKi?%sƏ?Km?sҎ>[9?,~yYV?>Y&8q?Im?$qۏ~?Im8$~I??$~I8?$i?$i?6K8Ke|~k1m|َ8~|qm?$~m8$m?$$qI$?I?$qImۏ~?m~ɚ8yƏ?i|m8$~L<~m?qm~m?~8mm?$m~I$?mIq$?m[d?fxVk1)i~&x<8IǏ?6?l~I8qdI~?I6?&8$8dlme~I~86LI`?t?,>̳<lxlpmm~Iǎ?I6?&8ldx$8&6I?MÏ?f~$6l?&8ɲ8qMpfd?&?6?M?m~lɲ?l&?l~&ɲǎ?l2?l~4 28lx$8Lq&xɲql&?l&d?dɲ?d?dٲ?l?6d6?f6l6dLÏ?6LÇ?6L?&MÇ?&M?l?f͛?6lٳǏ?f?2d?&LÇ?2dɓ?&L?2d&pl8fp͛fffg33331xx?<<?ffffs333x???ffs33xx??f?fc639|c39x?f?c39<>s39̃?fs3|<f33|<fc3x?fc3̃À?g3<c>11x?f?39̇?f?31̇f>s1?s1̇À?c1c1<c1xs9>g1<f3<s9|c>1xf<3x<s9|?c1s9|3g<3xg>1|c>9|s><3<g1>c9>s93·?cg?1s??c9|3|s><g13c9?g1ƃ?sc?1ƃ33?Ƈ?ss?x?ss>>cc9?c9c?9g9g1|9|cs>s1?9c9c>>s11g9c?>s3>s?9|c1>g9?s1c|>19s?1|c1>9?s9?1|c1>cx?q~9s1?1|c9?s?9?1|c1?s?c|1?3c|1s?91c1>q?s|c?9>1qg|91?q?s~c8>9?1?qq~sss|ccg898?9?9?9>11?1>9?9?8>88?8?8??|f8ss|qqq~9?8csq19>8??cq|sy?8?cq|?sq?8?sq|q8q?q>9<q|18?s~18q|8?q1?xq8?q8?q8>q8q8q8q?qps8q8q8q~8q?c8q?c8?q8?1?q8|qc8~88q?q?881?q<?q88~q?q?88~88~8p?1?q?qq?q?q?q?888~8?q?q?q?q?8888~8?8~8q?q88?q?x~8q?qÎ?88q??q?8~?qǎ?c?q8?qÎ?88?8?qqǎ?880<8?xq8?8?x?8?8?8q?88?8?8~8?8?88?8q~^|?>^|?>^|?>^|?>\B|?>^~?>^~?>~^>|^>|^>|^>|?^>|^>^^}^}^|^|^|^|^|^|^|~^|~^|>~^|>|~^|>|^|>|^|>?|?^|>xww?w?w?p?p>>?p>~>p>~>p>|>p>|>p~|>p|?p|?p|p|p|p|p|p|p|p|p|?p|?p0|p?p?ppp~p> 4 JNEO!"EFFECTFFYFTER$ 6`NITXT$ 1XPCPU2CPU1gc   g sÂ>?d ?@BAy>? p?a`? (&A?s |?fb~6w@80s ? loA #Gxss???49j qp>9]ҝ99@p?_`q0ssw#@7xqxqOπ ^?0n`?@ H0`~```y~c<}|cǟz1F?LO3o/?./?x0|'AB=i??Tp?? ??'mƟ?7k`'(=0ci c/s???wo?eg y͆2f|Ƀ?{ 1I8,w6?6xx 1 !]| >/o! N1 `>Ǎx!#>? 7lgg;~_ ƀ># B};> 1?@ͭ>!l Ŀ7?8?S /?ef~ ??0??` ???qqt$?77>?`=wgw??s?x'@40?&?"?1 0;0y0>@A1>~؁'{-<?s 8_`?3y?fpfD@?}fuy`g wG08@@@y?nȱ?1yt+@w}|9? ??>~>? @?.$14o ?s8x0}q|qp?@?c;4v020`00.ff;@y\` ?|W~x??|Fpa?7{χ066 ڑ`8MN^h8x?xFg@ 511@/>e8< gL(?prGY ?|>'8s? Y-Q3i6`b" ~wx 033F  bp^1xl@ as044;x%op0?ppf= ?;p L30x.̘30 ?y'2HAľ<A>g|Ceg>xx??<P3p?8}C @>  @s &&,39`{ݸ"0?A@bc?=}|w0tgc_` dd 0~`C<Mc`00ẍ??@<## g/0? `A;   ?!G@`2?3''X C|`O ~@BBk<;50d9>2?|0 ooB8 5 x0fcvls<}@ ?@ q`/<n&9l?@g]??fJ`0=>?? fw>\9x`>8ccwg` ;Ofl8?aĀF? 1ց~~~}8`@?|w```?'>??=<?O0O{`ā8``s(<n8B~ v>gg vwo`6b ؀8V,> E|>OH7%@?``8@@?228/~~ ? 60qpI@|' @9>OHY  `@po~#` 2>|??g1GM?  y ߀ P8pvfvf= /0>`>xi>  A?pp(na\ \?1?Vyp @B¾0p`c`OH  ӆc9<`?bF0~g gq~@@ o3@?0?6dwwe>y~2 fo@38('?(;;l   >?!N@` ;00B8<?1q0s=x  c|? ~N~~Ok78||Q{vN?10? Yf>>>/0?? x/A03)# ||ϑo(?N0-8??}҂^!<wG$$ɀ9opN0+313}>8N?0g\#/7l`eߚ8~g/0<,kl  \&#~/0wx[l8& _`0o?01L#  9 _P`xg < ?_`11Ƅ_&'C ?/0~1x>vH?\07nC  ? 0/ 8?1[p4,? `0#>N0_ X4 P ca-"<l`  $;<<@7}` .p p=G8d|@``wp;?00 _`xߟߟ `[`o@ܸ_ @? 8P`#Ix`|k|Q̮0xgg9`?`{_ zD|?q  a=>?wу|so<8?O@| p?C4'B=, t@s 1s|_ƐI0?#+#? s00p`cOp9O0`_???&?9[ _`l8`?@GO0cpc| 3~{ ?xp 97=||?3<?2s331oc0H0~? K 4r 1?;@ 3 @?>  0~?@?}~O0w69 sȀ8<o`̀}@?qqǎ8~*5p` 71 #0.ΧXK{ g[d@>??`c2(N?00C@2``wc8!`9wDwG??`  ?ߙf?1098||GpLx0&`_7`π| < Llc=!??3o7 #`?` `s%@gG `337|8#;@?k;x x3 _1?Wx?7'!>? ???@s?n}z}??#??G??sx>q~kcG8=)_`g'<p @@~~>qH?# ???# `߀8x?``} ]\?<af838<<=3p2 ag^@f??ll'?< +0=dx00$==#]@!~?o}p00?c>8wX@!f+0=dx00$==#]@!~=3p2 ag^@f??ll'?< af838<<# `߀8x?``} ]\?<_`g'<p @@~~>qH?# ???`y>>q~kcG8=);zy?3c @8X~W9~O?:~~!<?f?Y ?<$o0??#??G??sx? ???@s?n}z}7|8#;@?k;x x3 _1?Wx?7 #`?` `s%@gG `33`_7`π| < Llc=!??3o`  ?ߙf?1098||GpLx0&?00C@2``wc8!`9wDwG??.ΧXK{ g[d@>??`c2(No`̀}@?qqǎ8~*5p` 71 #0  0~?@?}~O0w69 sȀ8<oc0H0~? K 4r 1?;@ 3 @?>xp 97=||?3<?2s331`l8`?@GO0cpc| 3~{ ?p`cOp9O0`_???&?9[ _s 1s|_ƐI0?#+#? s00so<8?O@| p?C4'B=, t@k|Q̮0xgg9`?`{_ zD|?q  a=>?wу|[`o@ܸ_ @? 8P`#Ix`|` .p p=G8d|@``wp;?00 _`xߟߟ `_ X4 P ca-"<l`  $;<<@7} 8?1[p4,? `0#>N0vH?\07nC  ? 0/_`11Ƅ_&'C ?/0~1x>_`0o?01L#  9 _P`xg < ?/0<,kl  \&#~/0wx[l8& 13}>8N?0g\#/7l`eߚ8~gϑo(?N0-8??}҂^!<wG$$ɀ9opN0+3/0?? x/A03)# ||Ok78||Q{vN?10? Yf>>>@` ;00B8<?1q0s=x  c|? ~N~~o@38('?(;;l   >?!N@@ o3@?0?6dwwe>y~2 f`c`OH  ӆc9<`?bF0~g gq~(na\ \?1?Vyp @B¾0p= /0>`>xi>  A?pp0p;_`&=#<>M?  y ߀ P8pvfvfh h -a`pW8p g?ϟқ`? g9FA?X`8p =gg g6h`@? /88`G?_ p@S?#` 2>|??g1GOHY  `@po~ vwo`6b ؀8V,> E|>OH7%@?``8@@?`ā8``s(<n8B~ v>ggw```?'>??=<?O0O{1?߿ @?;o`1%=#3 ?|`???``?2ϗ?o'8~op9f9?!9?Y!@?@ &w}|P/ xn?@? Џp#F? 1ց~~~}8`@8ccwg` ;Ofl8?aĀ]??fJ`0=>?? fw>\@ ?@ q`/<n&9l?@g0 ooB8 5 x0fcvls<}X C|`O ~@BBk<;50d9>2?|g/0? `A;   ?!G@`2?3''0~`C<Mc`00ẍ??@<## A@bc?=}|w0tgc_` dd 3p?8}C @>  @s &&,39`{ݸ"0??y'2HAľ<A>g|Ceg>xx??<Pop0?ppf= ?;p L30x.̘30 wx 033F  bp^1xl@ as044;x%'8s? Y-Q3i6`b" ~< gL(?prGY ?|>x?xFg@ 511@/>e8?|Fpa?7{χ066 ڑ`8MN^h8c;4v020`00.ff;@y\` ?|W~x?.$14o ?s8x0}q|qp?@?nȱ?1yt+@w}|9? ??>~>? @?fpfD@?}fuy`g wG08@@@y?1 0;0y0>@A1>~؁'{-<?s 8_`?3y?`=wgw??s?x'@40?&?"?` ???qqt$?77>?>>!l Ŀ7?8?S /?ef~ ??0??Gчa /g?|c  368?8!?R/A-d8 r?q6,z+o.w ?v?B8?9?gxs~?0?~#d/A8?a#?n{`b _<2?c`!gx780<~[ ?3 f?܇߀ r~p$S?? 'q̟ q~/_H0 ?sr,_ Gƿ9? ń<A~:ǀ}? x@?@;||(_po;~_ ƀ># B};> 1?@ͭǍx!#>? 7lgg{ 1I8,w6?6xx 1 !]| >/o c/s???wo?eg y͆2f|Ƀ?Tp?? ??'mƟ?7k`'(=0ciLO3o/?./?x0|'AB=i??`~```y~c<}|cǟz1F?qxqOπ ^?0n`?@ H099@p?_`q0ssw#@7xGxss???49j qp>9]ҝ6w@80s ? loA #@BAy>? p?a`? (&A?s |?fb~gc   g sÂ>?d ?    JNEO!DTP@UCHVW(_ )%+U@VUb޽P|(^X >UT)"6^qPUPj?*U#_iUE<Ɍ*lQPR"}֩Wc_DWKv ^-_ KYkUZh*Ug"}WZw_iԫ@UPF؞-~ż>[ZUZx }g_J@'_P(W^1- WUDPUWZw_ u* UATPUU+u*ZVd-ЯP@~\RRU}{w ͇<UP__ Uવn|WATV=rk+U#w}__KN^_UAMQPO?UWz[p/w=KW[94B@u ϬU]mҠ 68U;E@^U^ )Uym@Rx?B?Uww(__|y*UD@9> U_U2}WUP aƷ? TTRU(}J@*f:Uj@V*T*X*USpаEQJUU*"(__!+P~UTA??Uj|ԨUc?UUS31 vl i/oT_J}U&^zPf@U@zЪP(Wo;ZPQ*UU}"( _tA*TEEQUT!}ՠU2]U̯P}pZǑ@Uk_ }Tf~T,@U@VVx WG?zPOQETWWUU]] _Xn_ PAUVZ  (UW0@P@=\>VDAPVA_@ꪵ sUon[PPW*| WS/zPoQETWUU}WDVPQ8U?R: rxC]WUUaU@K:j*ipN_AUCRP_Z"?_ _UjPPP*Ur7^TMzUUUUin//U쵏@Z^4 UURWUϽ[W|zTUUBwUU_t^8k꪿UU_rZ;>Ǻ%zU}}*Uc|Q@Uf@Z}V+UUT_O<}VO>+UTUxZUfsGBB҂#L#c_1>?Z^_U)^U_DWKqiP~1+U~߇]UU9 ^ٗU|_՛z@ZRU*WUUu ӆ~z/ԅTT=V& rz.EvU|UUUCYP^;I)U~v/_u* UZp8?U*l 7UfSjU*UUL">_m&V;UUu*|q׀9kZ__ UU;+~TCrU(Uu_W"U.gZdZWUZUpZ6#)|*עWw#_ 㜟*xxU"-}___*=x>ƺ2=j"UUUI?>?`?(~]W?w(*&-Pc57B*v O6wZ~Uj(?u *W<=֪비JU4j@UU a+`+x*w6ۗ@@b|Ԃ ~*UW ڋv ߪ'6 ^Toaવ]*rx/UnIнznoPUR3u??R@UU?TUwc}`5KnO6 z#|ժH[WrsiΜ>*֪ pup*U=6 W;TUV@ i-.UU3M J>U=ȽhBvW1O-/UzWX 6%_‡^7hW+N|-QgJRUUqMBU^UT=?KUU1g)Jc@֪UbJPUUKg<UJiv֪60S W+x)ԪIv(Q' U'4_ gxRw}ժPUUzѲ~UU͵@ÓUU1ϼ{?#j?UjFGv*c)~YRU& Ep|V-uժ.ցU3<UZAUV&ҽ@@UU2=jDڍZU_}U ~9kFϚU wH*/xyRU[gJGx~TtW]U3<UZEURJTUZ__lzUUno6hZ*u 'J_d/0{V,ߪ gw\/jVb sZUD{=J||VV W}U1UzS0?UjǕRRUU-UVg5?FؽU ]_gy@~gR {A7_ zZ}__ڼ-xWDcϵh mxVx/]_ZpUÞy?RUnxҀU3~X lc|Ww_ fxUU^Í ujGrv U T _Xҁ*N3<U3UJ؝Z ZUOhUWx/3Ki^ Ht_ZJotZ'rx_Z___U38 U^,Wso_H1+U7|ԨTw_c(fxUlCWBh?UUU*F{%=?P=jUxW*Pc=U>bWM6=ZAUUTU//z x*-}w Xk ]FWO+U?UP_yRWӬoUrzU_y*ƛ>/Ulfx׀U 𪪵P@UURnWU6Ok/PUVޡ*P1g-_L _˥ U8U~uhP?fTUdKવ #U_5|*s|U??jiTNBWUgēzUTvߪ u_93"]W G _餒JC@wU_w}jp/TU~>RkHUW'u lવl5?Uk< ^GRWUٿꁻdAzUU=?wj_Vը*ٯPyZUWWyzZET UUڥu}_Ujůj/ U)]xR1|%a)~+ՆUiC+dU9JPUUKw_V گÅҫe_*tZPUU"UPP2sZ_6JZ87_Ug13\_ mUZ@@U9IT6aGUU_ PuT l)";~T2XҧU"_c=ժU-%W_1_z['I_6cZOqUUfxdfpU Gfx|(U ^Wza;{Ɂ^T ~GT|(/Ujc=Jc?Wx9>QXPhH)cfUNz|w8?UU ^Uj iK|U_t/(/zCDL8B3 ݈$6?UU3<< ZOUJ _eP D ]Vp :F \}O]?UB@yX*SVU,{ W3 BU7 u n9IUx܊_ 6X=UW1>Y4l)Z=k+U<7`€WlQG'"}_7Ji=(}~U^V Z*<~Uo-A@YCZU5' N9iU$cX*Y@:UWM@f1_.K#Z@Ur WAT:'Xu}T蠨ӯ% }6 uUx(鞽U#h_ď?=UW-( cU;p)*i~՘i U^6ոF5?Zj~/^U'&xUQ9T=k` cવ? Uxs'LzUS-jW3_UC|UV뼝#נ*MBU3åPO,zʹZ??UjÖh~Uܟ>??RUx@w W\V7]l[o"ݣ\\ᆟW1@U<6 V̻֪U>UZ3ޏ~Ͳ=UUlI ^JxU*>R` lz .2¯O_]RJߨ* 9'W("WWj4#] 1UUpZNЫUyU$Mbu Mм/UVr}*KUJl)~P*[Wx~}*%xa;+~Vg _v:7}K _~r}d~)U= Ue1`xgU__l?U)VO׀*,vUZdT8ҟJ Fk4ȫY|ފ_ U@O! dxw|^(+ #w}ԨBB7҉zq< i?BU[P^9UfŸj0XxUT ~UίPa~ u /UcC@ EUE1P>{=6j a^"U3k˃V?>UUds\_o/`@*(]]V<)]TF񴏡 #CUZggJTUr O@Uiҷڠ/t UTYT[eTUZ AZͦ[x աU= C xUa`P*QzAB] u(UتP"']& q]ZK|O= Wc# PmT+,%](Q?UPO@~ RUjF٭ O UNj*<7=0U' p?(7U 4)W?](_Kٵ`_JI꪿sZKxRAOJ;zv= UJ2aJ^Uٌ̽U ^gi^(߀)zWU^Uk ܠ]wPrХ_@Wvtނ NYa?j4eJu Zaҋ/ǒ נ*PKUUU3bJU;zPITUo!^̾ٛUn{Z~ ψzתٿ ͳipTE#w_ {'@_uRШ'*+Uưހ+UUU霽)Fh/UQPP*Urk_Z2UnRm ;hW<3?jij*_aa|]C.5U_"( )*ɳ=UNfCܿcUl6^K?UU) Ch/USPzP Uҗk3V6lDžU>Vy] v_<ZFzW?޿nʹ<+V?%` Vv UbU๲'_US/UUhJ@$z UO;TpVT U TUU͓U&xU|ԿVQ6= h @\zT%T`" @9 bW๤'_ռ>+UU1XPP6>^U>U+U*댽)U7OzUU@UJZ_$/Uzj?w- ժdBWie/TU- WW5U"_T{Z~~+64s WkcવKUUEͿU*U-WNUZP^=CUV36ɘUW߂]jFíPUJUUWWr@wp(*]]uƹ4 gԳp~ UU)y}R}PEp*>Z_JK-d3P _QDf6 žT$ZLEUl̏ZUkx VRԪ>ǶLT_xwU}|iJ*AV *vWw_1XVN؟y6G@_ꪟ) ̓hB:/cJBꪼ6_@TRUNfWOgx/v(_ P U_2CLW*Zg+" r;`SU"Wn_Ĺv cJJ`V[Rvp^TRP*U/@UPʝJWUPfRgDp_}" }/تZ ߷{uJ0v Ur[P w _kj nժl>rU /UPM6mЯUKzUUUkV3B@I)V ߪu _R'w-^+_1χ>*U6^RP (W<~ nϗjNT ܅iB@UUAI[j*UP~7=UṴ@d%P%ڷ `(_ߪ5*cz}ZUPgU6SP P*_ nǗj9UU^TWRUU;@lZ U_iપ#])u`U9k@+3iC!ת4~+Ĉx[)_^UR놺~X" U۟чzWU=VTUzUU콯BnҽW[ 𪪿b](u'xUl9/JP Kp_uת Z U`ubwYG@UUTmWؖ(?W6Ts=WWIWWW?`(WXd'UVFP@UU]( ׁ**P[P9j*UUڼ*U@xU*U_S}Tt*)ڠ/7pU^^x^w_v~TQ@1U*w]I•?* ]q;ҪԪU T=?Z_e 8p_U5 U RߨUA~Nx ժF5]h?Uj(ؠ__'>QPE U͵<_V" U|_DTcIh`/ïPZ7&=x2s=)+i~U7* UUWO9FU'u 3cUK~"x]׵r[E@/U6hZU #m_PQP'}_6 ¯Pŷ&x859a~U(*W UWL-/U@v/ <~V7hwׇխw+K?UjU_|+VUYG@UĞ|U'@@^^''-x6=8`U }ݨ(Wuc| UUlS l pTdHƒ?8<VZY!+n~P?Ul+ܒ|/VUƿUjL4H@P-/Ъ:i+|&6-h*xUwؠ-_UU=,%z c|U1 _gqZy<#֪wu(u*ױZzP?UFz4 U8ЪUFƿUjf<T?AUU@/PyOy ޠ_dɭ z*xU"}_iUUe r^_UPN'c_Ym!_B>S ;pZ?U6 ժ**UKUJfD<6 U=@WU@_,S%з2c=eUuꢝ}_UUlr˂\W[U-]}Wp +Wu_2_bw9ZRPA=WFО/+U(*_ -U1PUZ2D,6 U/TUUTʿ*6s)&6x=ߖ}_]{+U1UH JEB6^Ump Coו'H,^X=W>)U *W_ZP޴9 URSmUU}(U<6?j[i_ t^ ]*?u i-Uz5eRc׃Uz0bX(~$% %/fVc5_o7uW\.[oUV7ʠ?ʯUUZ)U[9VQ6=؇U/(~WycUVl 7=?+j6c J\? L__i,a_yw"(Ӡ/_}W9;'Ҡ/<UUzhUUi~q @@j@7h*UzsUZDΜi+/_ _ux,fPxUU4?8Rj U ?U@iU"RVܫUWUhUWd_^^<<\-Ym@B ((* Xf2U;Ǎ`*+! U8?jI#rւW]PUU+UTAgyҁT(U@@UUZUUfZU]^A2iyhJ*_ ~L6 U99Սr**?*(t EU{3J^UUUPUUPD=?Ujt(R_fC-W9%_ U~EYU RփUՠ_ UUU.PG U^] UU_xyU~~FAǵɌh|VxB#|n%_ZN~! UUioUg,R{܊U28oUzUUNPUWFATTהUP~ *UF&1ZgHT_"*;i_κ)xKWWUUݣ( WU{6R~(WUUUUQAz U_"{(/*JU@UdX\ Ve9Z=v?j_C"Ÿc% +UUGP̩TqNP|S//W^'ڂUDP_U R8:Uoc(8kYUWs|C3UjTTWTS>7KjU_ݣ( WU{6R~(WUUUUQAz U_"{(/*JU@UdX\ Ve9Z=v?j_C"Ÿc% +UUioUg,R{܊U28oUzUUNPUWFATTהUP~ *UF&1ZgHT_"*;i_κ)xKWWUU~EYU RփUՠ_ UUU.PG U^] UU_xyU~~FAǵɌh|VxB#|n%_ZN~! UUZ9{U̱<ZڇU}T*UCTUUN@/UZ#a}jjUUUULχpz"[sgZUN>t(R_fC-W9%_ U(t EU{3J^UUUPUUPD=?Ujq @@j@7h*UzsUZDΜi+/_ _zhUUi~)U *W_ZP޴9 URSmUU_,S%з2c=eUuꢝ}_UUlr˂\W[U-]}Wp +Wu_2_bw9ZRPA=WFО/+U(*_ -U1PUZ2D,6 U/TUUT/PyOy ޠ_dɭ z*xU"}_iUUe r^_UPN'c_Ym!_B>S ;pZ?U6 ժ**UKUJfD<6 U=@WU@P-/Ъ:i+|&6-h*xUwؠ-_UU=,%z c|U1 _gqZy<#֪wu(u*ױZzP?UFz4 U8ЪUFƿUjf<T?AUU@^^''-x6=8`U }ݨ(Wuc| UUlS l pTdHƒ?8<VZY!+n~P?Ul+ܒ|/VUƿUjL4H@¯Pŷ&x859a~U(*W UWL-/U@v/ <~V7hwׇխw+K?UjU_|+VUYG@UĞ|U'@@/ïPZ7&=x2s=)+i~U7* UUWO9FU'u 3cUK~"x]׵r[E@/U6hZU #m_PQP'}_6 T=?Z_e 8p_U5 U RߨUA~Nx ժF5]h?Uj(ؠ__'>QPE U͵<_V" U|_DTcIh`ڼ*U@xU*U_S}Tt*)ڠ/7pU^^x^w_v~TQ@1U*w]I•?* ]q;ҪԪU7JUT9UN'x6-=z? }UW@*U˱f-Lc\ V p>=WWIWWW?`(WXd'UVFP@UU]( ׁ**P[P9j*UUנ_*dx V^obW_UU}̻ے|Hu_WުF)UUWX) V~*UPTPL0UU}_]j@*4T lcRPЪU'kUZ,/l8Ukq+} U·*l7Wv_ S-*UWhK#րw_[TT K@/UW}_IUJAKJSU*sؖ(?W6TsUTmWxWU9~U@ٛUV_(=ߟ_UUP1kAUTw_]3wV.xf  A/J(*Wֲ+UUeP^CU~J-UW;BUU0=uUUNP;^_-}(((}WZ*V7KXxxR[Ex]}?U3DUӻPUhTOUUNZlΐWપb(UUF@P@X }ߪkhȷH Ut N ]}WmA-G}:L?Ujf<~U]/B@UzUU콯BnҽW[ 𪪿b](u'xUl9/JP Kp_uת Z U`ubwYG@U*U6^RP (W<~ nϗjNT ܅iBU/@UPʝJWUPfRgDp_}" }/تZ ߷{uJ0v Ur[P w _kj nժl>rU 6_@TRUNfWOgx/v(_ P U_2CLW*Zg+" r;`SU"Wn_Ĺv cJJ`V[Rvp^TRP*$ZLEUl̏ZUkx VRԪ>ǶLT_xwU}|iJ*AV *vWw_1XVN؟y6G@_ꪟ) ̓hB:/cJBK-d3P _QDf6 žT^=CUV36ɘUW߂]jFíPUJUUWWr@wp(*]]uƹ4 gԳp~ UU)y}R}PEp*>Z_J7OzUU@UJZ_$/Uzj?w- ժdBWie/TU- WW5U"_T{Z~~+64s WkcવKUUEͿU*U-WNUZP TUU͓U&xU|ԿVQ6= h @\zT%T`" @9 bW๤'_ռ>+UU1XPP6>^U>U+U*댽)Uҗk3V6lDžU>Vy] v_<ZFzW?޿nʹ<+V?%` Vv UbU๲'_US/UUhJ@$z UO;TpVT Urk_Z2UnRm ;hW<3?jij*_aa|]C.5U_"( )*ɳ=UNfCܿcUl6^K?UU) Ch/USPzP Uo!^̾ٛUn{Z~ ψzתٿ ͳipTE#w_ {'@_uRШ'*+Uưހ+UUU霽)Fh/UQPP*U)zVٙUnqZ%A[#_inP_Rs)gTP UuCi@__U]UBvϹ?UlYgHU> נ*PKUUU3bJU;zPITU2aJ^Uٌ̽U ^gi^(߀)zWU^Uk ܠ]wPrХ_@Wvtނ NYa?j4eJu Zaҋ/ǒ{=6j a^"U3k˃V?>UUds\_o/`@*(]]V<)]TF񴏡 #CUZggJTUr O@Uiҷڠ/t UTYT~UίPa~ u /UcC@ dT8ҟJ Fk4ȫY|ފ_ U@O! dxw|^(+ #w}ԨBB7҉zq< i?BU[P^9UfŸj0XxUT r}*KUJl)~P*[Wx~}*%xa;+~Vg _v:7}K _~r}d~)U= Ue1`xgU__l?U)VO׀*,vUZlI ^JxU*>R` lz .2¯O_]RJߨ* 9'W("WWj4#] 1UUpZNЫUyU$Mbu Mм/UV3åPO,zʹZ??UjÖh~Uܟ>??RUx@w W\V7]l[o"ݣ\\ᆟW1@U<6 V̻֪U>UZ3ޏ~Ͳ=UU;p)*i~՘i U^6ոF5?Zj~/^U'&xUQ9T=k` cવ? Uxs'LzUS-jW3_UC|UV뼝#נ*MBU$cX*Y@:UWM@f1_.K#Z@Ur WAT:'Xu}T蠨ӯ% }6 uUx(鞽U#h_ď?=UW-( cUx܊_ 6X=UW1>Y4l)Z=k+U<7`€WlQG'"}_7Ji=(}~U^V Z*<~Uo-A@YCZU5' N9iUp܂_ 2y=>?UU3<< ZOUJ _eP D ]Vp :F \}O]?UB@yX*SVU,{ W3 BU7 u n9IUi؋_ c|{UV͛@LRU*f-^Up`(*U+m_PW( ϻ6t!}5ZKH*6G|1ħ6_ + UVt u f)Ue; |*'Uq~UZ, _F94ya~UX݊Uz*5WR(0lkطxE@4ߪ*a0~/3ZP)VAU@Q.v- 7U9춏=cUU6Nɯ)UAUWxV5gՠ:qꍠ-b|V-TתU ߨ*y?DkA@WTk! ?TNz|w8?UU ^Uj iK|U_t/(/zCDL8B3 ݈$6QXPhH)cfU3\_ mUZ@@U9IT6aGUU_ PuT l)";~T2XҧU"_c=ժU-%W_1_z['I_6cZ%a)~+ՆUiC+dU9JPUUKw_V گÅҫe_*tZPUU"UPP2sZ_6JZ87_Ug1l5?Uk< ^GRWUٿꁻdAzUU=?wj_Vը*ٯPyZUWWyzZET UUڥu}_Ujůj/ U)]xR1||U??jiTNBWUgēzUTvߪ u_93"]W G _餒JC@wU_w}jp/TU~>RkHUW'u lવlfx׀U 𪪵P@UURnWU6Ok/PUVޡ*P1g-_L _˥ U8U~uhP?fTUdKવ #U_5|*s>bWM6=ZAUUTU//z x*-}w Xk ]FWO+U?UP_yRWӬoUrzU_y*ƛ>/UbWM@A_UrU(s|*/*]TVދ+\0_H}ߠ]IJSPUP=ULFuU%/Ъu$PJV?jls/u}=Wx7_E?U@,U}RxojUjRj;UaU_Ti*f-Uy6hն= ?jK/X lc|Ww_ fxUU^Í ujGrv U T _Xҁ*N3<U3UJ؝Z ZUOhUWx/cVIzPUUNG{#؃M=?j*(W*Ux*_ԖVAR؏տ_TTU}](·<U6EZ/bW~4 UUidWnxҀU3~?UjFGv*c)~YRU& Ep|V-uժ.ցU3<UZ^UT=?KUU1g)Jc@֪UbJPUUKg<UJiv֪60S W+x)ԪIv(Q' U'4_ gxRw}ժPUUz;TUV@ i-.UU3M J>U=ȽhBvW1O-/UzWX 6%_‡^7hW+N|-QgJRUUqMBUnoPUR3u??R@UU?TUwc}`5KnO6 z#|ժH[WrsiΜ>*֪ pup*U=6 W비JU4j@UU a+`+x*w6ۗ@@b|Ԃ ~*UW ڋv ߪ'6 ^Toaવ]*rx/UnIнz>ƺ2=j"UUUI?>?`?(~]W?w(*&-Pc57B*v O6wZ~Uj(?u *W<=֪9kZ__ UU;+~TCrU(Uu_W"U.gZdZWUZUpZ6#)|*עWw#_ 㜟*xxU"-}___*=x.EvU|UUUCYP^;I)U~v/_u* UZp8?U*l 7UfSjU*UUL">_m&V;UUu*|q׀1>?Z^_U)^U_DWKqiP~1+U~߇]UU9 ^ٗU|_՛z@ZRU*WUUu ӆ~z/ԅTT=V& rz>Ǻ%zU}}*Uc|Q@Uf@Z}V+UUT_O<}VO>+UTUxZUfsGBB҂#L#c_MzUUUUin//U쵏@Z^4 UURWUϽ[W|zTUUBwUU_t^8k꪿UU_rZ;oQETWUU}WDVPQ8U?R: rxC]WUUaU@K:j*ipN_AUCRP_Z"?_ _UjPPP*Ur7^TOQETWWUU]] _Xn_ PAUVZ  (UW0@P@=\>VDAPVA_@ꪵ sUon[PPW*| WS/zPQ*UU}"( _tA*TEEQUT!}ՠU2]U̯P}pZǑ@UQk_ }Tf~T,@U@VVx WG?zPEQJUU*"(__!+P~UTA??Uj|ԨUc?UUS31 vl i/oT_J}U&^zPf@U@zЪP(Wo;ZPm@Rx?B?Uww(__|y*UD@9> U_U2}WUP aƷ? TTRU(}J@*f:Uj@V*T*X*USpйATV=rk+U#w}__KN^_UAMQPO?UWz[p/w=KW[94B@u ϬU]mҠ 68U;E@^U^ )UyDPUWZw_ u* UATPUU+u*ZVd-ЯP@~\RRU}{w ͇<UP__ Uવn|WDWKv ^-_ KYkUZh*Ug"}WZw_iԫ@UPF؞-~ż>[ZUZx }g_J@'_P(W^1- WUizqcTF 3[k 0FNEO!DTP@UCHVW(_ )%+U@VUb޽P|(^X >UT)"6^qPUPj?*U#_iUE<Ɍ*lQPR"}֩Wc_" KPEUkm~UZ(]u.W辨.TUT֜6Ua=Ww|WUUUTA@T꫷-bhjVDT[H^U)~*U GPTdfWg{7 UI֊*־+UUWURURƬ>U3mBU.(WUUUSTx- *Vm//Ъ@rW(!~*gU>U P]1 蘮^ }U'*_UO{zUzU6] xRU(Ҡ*տտQE@Px *V%ЯPPBW 7UtU ~K^m{zz⮟Տ"x W*TUVWC5\?VU( ֪UUTZalH5*Vm++ԪPȫ__]6ǀU UB!_gyU+6hU!\)WߪUKn誽sU~w]UWUUT*v9%}*WJ Tĉ ]3*րU UPhW\yWRir *Uu}_^D>g<U_*UUKUtNAkcY|Uս./׿@ Uv^U;UTNP5UlWZwN7 UP?ջPMC9 W OUBUUPPUP6^ _U+//zQEyw+)1>UjბUO@UUKQ|TcU3=??jPo̶5_i@zDACLy?Uv7KJ@п@URUU"{cWU:WPꪪCHVU69>UjTU,UU D@dU3<U5*ZSƠ>UܗzP/=uU++U~PNUvUJw(l**A:UUAAT[K Ua+P~V<ScUFSUU@bdKM<*V[{IyUsH|՘~UUmw=-q~JNWWUWEPJHUwE3' UyGWUNTv O8?Uj{jATց{PhܟgUUW'xꀪfxBNUUZ^A Z_p@YFAܖl/C UT)j/UkU@ ߳/_=0UVVU@NUsyT&7èhUUUJة_{2Bw=U:{z^~@,/H/gV@%KUUFPU RUP94[cU:@^RU<^_UUURપg?CcHUO^~_AT62h=*@dۇ}Tm`UUNPZ_KU7\Nm(̳?U+U_QA_Tӕ"hխ;z/GRWj̵URc |ՐUbvZ_D/UUƻR*Ou߳~z8LUAUT_9i誽"f=jUUU7o/~#ްZ~'|U,AUP^A@c<&b-y~WPԭPI7 ya{P~AUTPUA;PUU&xU=UIxWPU7 [Ko@=[Ɵkz{=U^U@q -~UP U gy~g3=A3eօU_QUPUUK8Vg8x?UMUkEUT+@U>UNUP|:G?c˃UWa?;Uk-X`NZ9UyaRsp ЪUѸ@*F몿8zc}T GU^^UTUB3Zz*U[@QdWI衮T;F5Lu V@U@UPK@?U7/^W@Un~gOU6y@3i_ ӥU|K fYia~lW?oAP@W'mP{o{PEQX}J <ozR|E%]u_j>UKE@Uy"VU_s8 ܝj@*[)BfU̝A[^UU_*Uw9i1>W3VUATT4:Mjn+m~Ȋ=W|;UZU8BU flJ WzPN몿tK6>^TͰI^UUjU,TU__RWJPTZU"mUD1ݴ~J(+W~U@U,GP 39Z֗~T*N몿<U&>^Tʹ&xUjUqP)_U_APUUMߤSU6^\=y *q Ue?@ <z>o@9UjYyk~iU U_c,&yCB2ɂiz~TPU,UZ7z)*/pԧ_`µ (Wgk_T**_U\}C@mS6UZh7Z_=UZ__UUͭ6\y^2=ADTfب_U iuD\=WW66 'P?o? ffJ m׵U5[^޴l<UT#xsY|%UU2 ^2Ǐ/ /z-k?nU6aQӯzg(H_*SDE>(36Z[PcJ(WU Uj|oA?UZ5UUULWнE@Q^OPsw̽ZMupՀQqZyê{@ZBEMS̙+/Ҋ/Ղǀ>UT rP[8UVX^_U1>;U>?j=UlUZ_ &oUR-оE?L U_8pk4{[P[8zp TA=PVwӖ~ւ,U4O@sxr[UO9R^9UVsrhUUKQEVUV$ ;+KGUUuʢ> OTCE_T' r=g!^_z U={P3o@cDZU8?fxUUӡc|UAJ,PP K vׇvmBnEPTy޼+WcOi-W,;R=T|P?Edz~U*=MZUU'-<*YU/lZ8<{"[(3Ӏ3gƒ῾Ug}F{WDQOTvi^TVXf8KW^+5oT3~2|E?MZ>?Ujfx^U=U@=+Җzd~]T1~6x?ɸ^??Uj=H_UUpxo/fU W,$;@۠UVs=D2hPuң>i~}UakJy÷j̚~0^ꫧHqz汸mz@?- U_e&9Tm(?U#|UGBB Ԙ֒?T~ji?GP*U̷< Ux᪵,V&x^H_U  _fYR7=|+Ug<6V@WXؠp/U#V4{.j|TE3vP#_a9NB&e^р/Us-WJƂ>oTmj_$UUg-,oz/cRWUU]K ^JW q~UUw,l/z[Z^껺@UL8Gy*DAXfCU g]& UUYG@ot[Pɒ,zVpI^ U_0Wٶ,+&__P׆cv|yz+NV74PVTETTrPJh0紴[g.PUbկՊ=UVf<GU'_zziB߇Uak^ oߵ@7¥Uh?UA0K ^UPP OJTUF0꺪 CUv)W^ey ]Wo_વ%mZPbw z2 _ܳUU3<@H___bކDUݼ ꪱNCUmu _Q ƿ*xo<ì>UU=E~ U qZ]䯴^g(}~WMJw,WU9R#|UՌoP uժw[,^[uVsPWoவ$?U_|ꯈy/G@U|"W L|VTx;Qժd 0/&^_UlƏZtU3x/o@z2#i?+°U5.@nA݌(8SQP=U'<f:_]Uyg ]zEc(WbJ*dÔUI^_U-/z0UAQ3D>k^]J٧9T̝%R>zfQPAAP FT"*~ū#mOU_ʐzwI^7- a-Jڭ5U6VmUik?U6xǞU6mi{+[^Z-|GPT@;DUR*c~#OU*h=ꪪ|g^lzV6-8kR@m__s|'8Uh{@~BUCW5iUx^ 8^rkPDUAEU=J@|2?Uj*,VwgU*ժ5^T*ϷTTGLUZ3 WAU U [mz';BAD@UP+/{X_UUr|&=UR)Wt ۪+UJ7- yUBM:T͠UWLKZOUU2ëV~+@*FvNPWU>*Uܲnkx?UUV+Nռ(ĐP_]__8 KKKPT:E+z֍~<U(%%Ԁ+UCU_` U~'Upʢ*_>9WUI)~*'3yi~i~./Uz?}**ݘqSDUOTLUA;;oJ6i- UUUM8U-hW/kU OJ"WMZ_6UVD"@w3ɭ^_'#m}OUA./UEUP,N[(=Rxo-(V;P UU=[WHq\*W$ Ҫt~U&xaUUUnz*C5i+VWK^^xA@UPUUJ5@?fXz נWf'҂ǻUPBѿjUCm}M?GU9xAEU/UbmO"_+UT{֭~U]___6-mz*6hU*@O ^ iUP}j"|#,Elવ}WU)tK@^UBUvmવ7J/UP ;WׇUȜJJ@7)i~*'xU @G %MR١UP[ ^_O?;EoV0 `_W|ӣj@KU VTU(3w U@-WזT  Pgiy~*gxU{źQC pۂ\WUU@n:'jӏ A_<U|-_WQPSUqO@WꙢmX(W_^[ Pu* *Ta{UTO _( _}ըUKUJѻPz%T౻AU3PU`׷_-oWU@WRzv)Tvp_ :/UU2hUUg0UP{>?XZ𪯈 | &7^T]}FACSGxETG @UhqUJDT^_Ka T‡* UNKT \UV9^?SUտ@pT/{]# V9FK@UFPA PDT=Wb-7l^TAWP$^gP=H|WM-UUPPUlWUZs i~c,n/P/FCc)c~VNO[oNTpQj]䪯vG@UZ =*v[JUDzl{Cuf UZ"_UUnZkjUY^@U@wS쪯{>A.cWz]]*疟*TSKJ@ݎ*Uz&^8U {UPAUUUrӖV@8D@T]QUJcem>oU%9RK`oAO6P /(]x?%O Uݝ(=Ws>T/U*__UUvV}OK[lKzPE}Tj[U amxPɚ8zTQIBPw֠ /TUT-Uܝ?갘lBZP*UUUxxJrLl8?UA-@꫉kNT5,U#RA^foવGTM N(Ja֣^*f+U~UTNAjr" w1U -WUU[^ j9s>WxA;A-T#%m~~P듺z.QUD|=FIh-xURPUTK((Ɠ>T/ ?__UUKN^ lfzҀW$꪿nTLi0k}|{zJG@f?Uոԯ*UAKOZo! al?UEUTԯ+", "NzAPmWWUUONZ +LfZҠWlPTWs8vkNvNA{U [U@KCVhl=ZUEUU-WU'_qxGROꀀ{~UUjwV'NlZРU>>PPP@rK{[v$DlAC3xUGUPPU}IuǠ? -WUUUxU| 9BǪ?ժUU֝@"ȓ[U<?jPzEZ@ f˖ˎꪪ6DAKy/U|UT::ohB@X%Ơ> uyJU@ZUU=UBg_8I9BժP:UU8kZ`mUTU>K@Pvm_વr_ ;@tO_Ur}ZU |1k@UDv9%nm[^#NTiUUU=*OAZɩhU\5>^UP[UUU;kA~ x᪵qzP 0y.ՈzT/U p=[V^QU/~UTI~"4[P_x*UBꪼQ_UʻJ(;>UUUUKz<1_ P곪U1T*PJPbFU곪UleKRԅEUTyTUU>jxz@P NiT`ѻ?QUUA8LWwqloz GPUUl/UU"UCU?UU O_JUyW@ 1å?_ UoQ>T)@UU3<MU#/U+zGEB@UtUlGz*ྠ_U#~_נiFUj|*VPgcBUZTaδ>^<UUGUP UU,yV~'KUZE@UUlDz*@\ _}_ՠ34W_ (կBUoYzUUcz3?UUU@zCj@տUU9$KRgݎlVe~UT=k+e@p _uW@=  @*VפU^UU2^{Q??UU UPTUwiNJ1ZڀzGP̩TqNP|S//W^'ڂUDP_U R8:Uoc(8kYUWs|C3UjTTWTS>7KjU_UT=k+e@p _uW@=  @*VפU^UU2^{Q??UU UPTUwiNJ1ZڀzUUlDz*@\ _}_ՠ34W_ (կBUoYzUUcz3?UUU@zCj@տUU9$KRgݎlVe~GEB@UtUlGz*ྠ_U#~_נiFUj|*VPgcBUZTaδ>^<UUGUP UU,yV~'KUZE@KQJPKsW9T+nЫƿU@Uw]("׀A%T >?UU O_JUyW@ 1å?_ UoQ>T)@UU3<MU#/U+z[P _ ~gR,A@T(U_ 3qUUUUKz<1_ P곪U1T*PJPbFU곪UleKRԅEUTyTUU>jxz@PP5OT9kA+9>UP[UUU;kA~ x᪵qzP 0y.ՈzT/U p=[V^QU/~UTI~"4[P_x*UB꪿TT"lUP6;TTTA__ 0M[|#ƿ9fzK@@UJKP^<U)=ZVkAоUxUBJ^9|[PՕ*O_Ur}ZU |1k@UDv9%nm[^#NTiUUU=*OAZɩhU\5>^Z`mUTU>K@Pvm_વr_ ;@tUU֝@"ȓ[U<?jPzEZ@ f˖ˎꪪ6DAKy/U|UT::ohB@X%Ơ> uyJU@ZUU=UBg_8I9Bժ{~UUjwV'NlZРU>>PPP@rK{[v$DlAC3xUGUPPU}IuǠ? -WUUUxU| 9BǪ?ժWWUUONZ +LfZҠWlPTWs8vkNvNA{U [U@KCVhl=ZUEUU-WU'_qxGRO__UUKN^ lfzҀW$꪿nTLi0k}|{zJG@f?Uոԯ*UAKOZo! al?UEUTԯ+", "NzAPmWUU[^ j9s>WxA;A-T#%m~~P듺z.QUD|=FIh-xURPUTK((Ɠ>T/ ?UUUxxJrLl8?UA-@꫉kNT5,U#RA^foવGTM N(Ja֣^*f+U~UTNAjr" w1U -__UUvV}OK[lKzPE}Tj[U amxPɚ8zTQIBPw֠ /TUT-Uܝ?갘lBZP*AUUUrӖV@8D@T]QUJcem>oU%9RK`oAO6P /(]x?%O Uݝ(=Ws>T/U*nZkjUY^@U@wS쪯{>A.cWz]]*疟*TSKJ@ݎ*Uz&^8U {UPPPUlWUZs i~c,n/P/FCc)c~VNO[oNTpQj]䪯vG@UZ =*v[JUDzl{Cuf UZ"_UUNKT \UV9^?SUտ@pT/{]# V9FK@UFPA PDT=Wb-7l^TAWP$^gP=H|WM-UUU2hUUg0UP{>?XZ𪯈 | &7^T]}FACSGxETG @UhqUJDT^_Ka T‡* U^[ Pu* *Ta{UTO _( _}ըUKUJѻPz%T౻AU3PU`׷_-oWU@WRzv)Tvp_ :/UזT  Pgiy~*gxU{źQC pۂ\WUU@n:'jӏ A_<U|-_WQPSUqO@WꙢmX(W_ׇUȜJJ@7)i~*'xU @G %MR١UP[ ^_O?;EoV0 `_W|ӣj@KU VTU(3w U@-WU]___6-mz*6hU*@O ^ iUP}j"|#,Elવ}WU)tK@^UBUvmવ7J/UP ;W ^ U5^5j*9>UUJ5@?fXz נWf'҂ǻUPBѿjUCm}M?GU9xAEU/UbmO"_+UT{֭~t~U&xaUUUnz*C5i+VWK^^xA@UPĐP_]__8 KKKPT:E+z֍~<U(%%Ԁ+UCU_` U~'Upʢ*_>9WU=0zP**ٙU//z8~oA/C޽KU@70i ًW@{NUǚ4@@UU?oj{' UgXnK,U^V5[W2U''ZUʔ~TM:T͠UWLKZOUU2ëV~+@*FvNPWU>*Uܲnkx?UUV+Nռ(D>k^]J٧9T̝%R>zfQPAAP FT"*~ū#mOU_ʐzwI^7- a-J4PX__UL-/zbOUαD7}fxfR3(URT5[*P=R@SUP9J~wiUڒzg^b) )KRUy~Ul-//zgUDDU3i~B3}TDXƁk*~-AGU@8CUݶbx[G@_ ޖ~d^rh  UdÔUI^_U-/z0UAQ3UU=E~ U qZ]䯴^g(}~W߇Uak^ oߵ@7¥Uh?UA0K ^UPP OJTUF0꺪 CUv)W^ey ]Wo_વ%mZPbw zI^ U_0Wٶ,+&__P׆cv|yz+NV74PVTETTrPJh0紴[g.PUbկՊ=UVf<GU'_zziB$UUg-,oz/cRWUU]K ^JW q~UUw,l/z[Z^껺@UL8Gy*DAXfCU g]& UUYG@ot[Pɒ,zVpH_U  _fYR7=|+Ug<6V@WXؠp/U#V4{.j|TE3vP#_a9NB&e^р/Us-WJƂ>oTmj_6OU9Wq>@?- U_e&9Tm(?U#|UGBB Ԙ֒?T~ji?GP*U̷< Ux᪵,V&x^wRUU$/iUW崿un[z-W O=ozբvW;Uk={ȩZUbEj./O ATfx g3(ZWU+G@Ud汸mzi~}UakJy÷j̚~0^ꫧHqz2|E?MZ>?Ujfx^U=U@=+Җzd~]T1~Edz~U*=MZUU'-<*YU/lZ8<{"[(3Ӏ3gƒ῾Ug}F{WDQOTvi^TVXf8KW^+5oT3~cDZU8?fxUUӡc|UAJ,PP K vׇvmBnEPTy޼+WcOi-W,;R=T|P?r[UO9R^9UVsrhUUKQEVUV$ ;+KGUUuʢ> OTCE_T' r=g!^_z U={P3o@7y->;U>?j=UlUZ_ &oUR-оE?L U_8pk4{[P[8zp TA=PVwӖ~ւ,U4O@sxVX^_U1>UT rP[8U#xsY|%UU2 ^2Ǐ/ /z-k?nU6aQӯzg(H_*SDE>(36Z[PcJ(WU Uj|oA?Uh7Z_=UZ__UUͭ6\y^2=ADTfب_U iuD\=WW66 'P?o? ffJ m׵U5[^޴l<UTYyk~iU U_c,&yCB2ɂiz~TPU,UZ7z)*/pԧ_`µ (Wgk_T**_U\}C@mS6UZ'8a~UZ**U,ÅQRUR7_àPTQAUpUJONXeJ@*J몿 U8@s3 U2u_UZ>z>o@9Ujʹ&xUjUqP)_U_APUUMߤSU6^\=y *q Ue?@ <^T̝A[^UU_*Uw9i1>W3VUATT4:Mjn+m~Ȋ=W|;UZU8BU flJ WzPN몿tK6>^T#W'mP{o{PEQX}J <ozR|E%]u_j>UKE@Uy"VU_s8 ܝj@*[)BfU<NhU/*PUP+G++Mž]OUȒ༿@PE@QDQ_7GR@y[^iQp p W~QUQQ@P<UW|6ݗ**hm~;PeKU*wSmU:PzP ܡTtU}Z* ^P^APXa+ԋ0F_y% _Wk+UAPT UU& yUr" U;ϯ6/UZ6y@3i_ ӥU|K fYia~lW?oAP@UNUP|:G?c˃UWa?;Uk-X`NZ9UyaRsp ЪUѸ@*F몿8zNNP<}π/WU Of9x>UkEUT+@U>o/~#ްZ~'|U,AUP^A@c<"f=jUUU7ӕ"hխ;z/GRWj̵URc |ՐUbvZ_D/UUƻR*Ou߳~z8LUAUT_9i誽^_UUUV2/Cv ǥPOKWUDPUn'URLُ9T<)oUU߬PAݣ/~3lUn*UUGro誽^_UUURપg?CcHUO^~_AT62h=*@dۇ}Tm`UUNPZ_KU7\Nm(̳?U+U_QA_TUjTU,UU D@dU3<U5*ZSƠ>UܗzP/ _U+//zQEyw+)1>UjბUO@UUKQ|TcU3=??jPo̶5_i@zDACLy?Uv7KJ@п@URUU"{cY|Uս./׿@ Uv^U;UTNP5UlWZwN7 UP?ջPMC9 W OUBUUPPUP6^%}*WJ Tĉ ]3*րU UPhW\yWRir *Uu}_^D>g<U_*UUKUtNAkH5*Vm++ԪPȫ__]6ǀU UB!_3gyU+6hU!\)WߪUKn誽sU~w]UWUUT*v9 *V%ЯPPBW 7UtU ~K^m{zz⮟Տ"x W*TUVWC5\?VU( ֪UUTZal- *Vm//Ъ@rW(!~*gU>U P]1 蘮^ }U'*_UO{zUzU6] xRU(Ҡ*տտQE@PxbhjVDT[H^U)~*U GPTdfWg{7 UI֊*־+UUWURURƬ>U3mBU.(WUUUSTx"Z(ZU[PUU* _ s[|KT_D~)C@U'ZЪ?!UUQUPUP>Ua=Ww|WUUUTA@T꫷-v֊VUzA߫_ PDJꪂ "_נ|ZX@Wegy2qhzP?U^}ը UUUUkTUTo@g|T*)kUU-HHa KfR,a KfR-H  A C n zJ"z $zG(zKprtvxz|~`HPAB         _NuHL?MQJ@frM=|BnQ"z e,<N.;hNxfPB,~MeDM}MG>6pM r<`M drAM#`DMK`~M AA#`VA`LpS@ gM e:,<N.;hNx*,2@d$``.`. `Y`~"z`~PY Q O_3Q`:M bPYM>G>6pMQO` MQPKY>GM\>6pM O`MFPQp~>G>6pM<NF|dRGGOG`,zHpH?MA26G:HMVV<: FgJGkFe2zBVQ`Fd`2MA26)HG:]HMZVVMIA2`M2Y:7HG?`M*QJBfM =|BnQv&z e,<N.;hNxfPB,~MeDMMG>6pM<`MvCM0#`DM`|M2CC#0`VE`LtSB gM e8,<N.;hNx*,2@b$``.`.`[`~&z`~P[QO_3Q`:MP[M>G>6pMCQO` M1QPM[>GM>6pM`O`MPQq~>G>6pM:<NF|dRGGOG`,z$HpH?M>C660G:HMVV<: FgJGkFe6zBVQ`Fd`6MC660+HG:HMVVMBKC6`M26[:HG?`MsQJDfMk=|BnQz*zJ e,<N.;hNxfPB,~M&eDMMHG>6pM<`MzEMP#`DM`|M|EE#P`VI`LxSD gMR e8,<N.;hNx*,2@b$``.`.$`]`~*z`~P]QO_3Q`:MP]M(>G>6pMQO` M{QPL]>GM>6pMO`MPQr~>G>6pM<NF|dRGGOG`,zrHpH?ME:6PG:?HM>VV<:8 FgJGkFe:z&BVQ`Fd`:MDE:6P-HG:HMVVMME:`M~:]:HG?`MnJ.Ng =zJ.Pg =zJ.Og =z~ M)LjQMH?LNuZMuzak-driverdonebySectorOnefromTheHeavyKillers M / haw GGp1S$~Z8{fR?- wqjd_YTPKGC?<852/-*(&$"        FanouIloveya!-Jedi-formybaby...PfZ8THK THK  THK THK         THK         THKTHKTHK  THKTHK THK  THK    TH?-----)))))+++++&&&&&(+-----)))))+++++&&&&&((-----)))))+++++&&&&&(+-----)))))+++++&&&&&(+B                                                                                                                                               THK                                                                             4444222//2 0444422247424 04444222//2 044442224/(4444222//2 $444422247424 $4444222//2 $44442224/( $9999777447 $99997779<979 $9999777447 $999977794- $--------++++++++77777)))))))))(++++++++77777----------+++++((((()))))))))(++++++++77+THK < @                                 9999777447 099997779<979 09999777447 0999977794-9999777447 $99997779<979 $9999777447 $999977794- $4444222//2 $444422247424 $4444222//2 $44442224/( $ -/024 5442/02 - /04 5772/(+(- /04 544-+(+0-+) +-+( (+-0THKEndofthemuzak-file