HELLO LOOSERS TERMINATOR OF EQX IS BACK IN A NEW SLIDESHOW... DONT REBOOT U COMPUTER UNTIL MY SCROLL IS DEAD HAHAHAHA.... CUT THIS BULL OF AND LET ME TO GREET THE FOLLOWING PEOPLE... A BIG LUCK TO ZCANDALER WITH HIS 40MB HARDISK... AND GUARDIAN (PIZZAMAN) WITH UNICORN BBS IN GBG HAHAHA... DEXTER U LOOSER CALL MY FUCKING BOARD AND TRADE SOME WAREZ... BIG BOSS U AMOS CODER HAHAHAHA (FA LABA GREA)... A BIG KISS TO CRE8OR FOR THE IDEA AT THE GBG PARTY... AND NOW ARE WE GONNA CUT THIS BULSHIT OFF SO AFTER THIS NICE CALL ARE U GONNA TAKE U SWE-BBS.LIST AND LOOK AFTER (TECHNO CITY)....... OK, NOW DESECRATOR PUNISHING DA KEYS, WELL I HAVEN'T GOT MUCH TO WRITE AND I'M PRETTY TIRED, BUT I SURE WOULDN'T MIND SUM $$$...... OK EHH WELL SUM PERSONAL GREETZ TO MY FRINDS.... HELLHOUND THE DARKEST GOD RACIST IN THE SCENE, BUTTFUCKING 'RISTRAMPARE' SEEMS KEWL TO ME HAHA, WELL CATEYE SORRY THAT YAR HARDDISK FUCKED UP, I BET IT DEPENDS ON YOUR BLIZZARD!!!, JOMI, BLIZZARD SUX!!!, DON'T YA EVER LEARN??, AND I HOPE THAT YA GET OVER YOUR FEAR OF $$$..... PAIN, HAMBURGERS WITHOUT DRESSING AND SALLAD MUST TASTE SHIT... SACKO, SORRY THAT YAR DEMO DIDN'T MAKE TO THE 10 BEST... TOMPA HOW IS IT DARK IN THE WOODS??..... KITCHO, KEEP UPLOADING.... AND A MESSAGE TO ALL TECHNO FUCKUPS... GET SUM PROFESSIONAL HELP, U NEED IT.... OK, WELL AFTER 20 HOURS OF NO SLEEP, I THINK IT'S TIME TO GET SUM SLEEP.. OK, DESECRATOR SIGNING OFF... KEEP THE & FLOWING AND THE $'S HOT.. L8ER GUYS..... CYBERTRON ONLINE! ABOUT 1 MINUTE AGO I WENT 2 SEE KID AND BALLES NEW VIDEO DEMO... I WAS DESEPOINTED! I THOUGHT THEY COULD DO MORE THAN THAT! WELL WELL YA CANT GET EVERYTHING! WHEN THE SHOW WAS ON SOME LAMER STOLE AN A-1200 WITH 85MB HD! AFTER ALL IT WASENT MY COMPUTER! MABEY NEXT TIME....BUT I DONT THINK SO COZE I HAVE A LOCK ON MY AMIGA AND A PW ON MY HD!...DOSENT THIS PLACE HAVE A 'PARTY BBS' ? NAH I DONT THINK SOO,2 BAD...THE COMP IN DECORATION IS NOT GOING SOO BAD! WELL IT AINT BEAUTIFULL BUT ITS COOL! 2 BAD 'BULT' AINT LEFT IN X-TRADE COZE IF HE WOULD BE WITH US NOW WE WOULD HAVE WON THE COMP! BUT WE GOT 'SCUBA' BUT HE IS IN GERMANY 4 THE MOMENT.... (HE LIVES THERE) BESIDE ME I GOT A REAL GOOD MUZICAN! ILL TALK ABOUT JOINING HIM IN THE CREW L8ER ON WITH ORGASMATRON! (4 THE MOMENT ORGASMATRON IS S L E A P I N G !) ...WHAT NOW??!! KIDCURRY SLEAPING UNDER THE TABLE...WITH ALL THE 'COKE' CANS! WELL YA GOT 2 SLEEP SOME WHERE!(BETER THAN IN A PET SEMEATRY!) WHAT THE FUCK?... MORE ACTION? TV? W8 A MINUTE!...... 'AKTUELLT'! SUDENLEY THE NOISE FROM THE SPEAKERS ARE GETTING LOUDER...AND EVERYBODEY TURNS ON 'ULTIMATHULE' ORE SOMETHING! MOAH! I WONDER WHY THEY DO THAT?...HEHEH THEY ARE STANDING OVER THERE WITH 'ZONDERKOMMAND' AND FILMING THOSE BEAUTIFULL SWEDISH FLAGGS! OK I HAVE 2 GOO AND CHECK IT OUT! SO HERE COMES MY GREETINGZ: THE GREETINGS WILL GOO 2 THE FOLLOWING PEOPLES.....: EVERYBODEY I KNOW!!!!!!! SEE YA IN OUR NEXT RELEASE!... HELLO THIS IS CHUCKY OF X-TRADE WRITING A LITTLE TEXT... WELL FINALLY I HAVE QUIT THAT FUCKING ARMY SHIT AND ARE AT THE TCC PARTY IN GOTHENBURG... THE PLACE IS QUITE BIG BUT ITS JUST TOO NOISY AND I THINK THAT IT WILL BE A PROBLEM SLEEPING HERE.. BUT AS IM NO PUSSY I WILL SLEEP ANYWAY... (MAYBE CAUZE I WILL BE SO DRUNK SO I WILL PASS OUT.. HEHE!) WELL WELL I ARRIVED TO THIS PLACE SOME HOURS AGO AND I HAVE MET SOME COOL DUDES AND I THINK I WILL HAVE A GOOD TIME HERE.. BUT THATS JUST CAUZE ITS GOTHENBURG AS ITS MY FAVORITE CITY IN SWEDEN... STOCKHOLM CAN JUST FUCK OFF... ONE REALLY STRANGE THING IS THAT IM ACTUALLY SOBER RIGHT NOW BUT I WILL DRINK SOME & LATER AND VODKA SO MY BRAIN WILL ONLY BE INTERSTED IN $ AND & NOTHING ELSE... WELL OK MAYBE SOME HAMBURGERS ASWELL. ONE EXTREMELY BAD THING WITH THIS PARTY IS THE LACK OF PARKING LOTS! 24 HOURS OF PARKING HERE COSTS 70 SEK!!!!! THATS FUCKING JUST TOO MUCH! (AT HOME I PAY 90SEK TO GET A PARKING LOT FOR ONE MONTH!) AND ITS NOT ENOUGH OF PEOPLE HERE BUT WELL I THINK IT WILL COME MORE GUYS LATER TODAY ATLEAST I KNOW THAT (WELL HOPE ANYWAY) THAT CONQUEROR WILL COME AS WE WAS IN THE SAME PLATOON IN THE ARMY SO WE HAVE SOME SERIOUS PARTYING TO DO! (IF HE CAN! HEHE HE WAS DRUNK YESTERDAY AND THE DAY BEFORE... HHEE IT WAS A SIGHT TO SEE HIM AT 05:30 ON THE FRIDAY WHEN WE TURNED IN THE LAST ARMY SHIT!) I JUST WANT ONE THING BACK FROM THE ARMY JUST FOR 10 MINUTES AND THATS MY K-PIST... I WANT TO SHOOT SOME SPEAKERS AS THEY PLAY MUSIC JUST A LITTLE TOO LOUD.. OK ITS COOL MUZAK BUT I WANT TO THINK SOMETHING ASWELL.... WELL OK THEY ARE PLAYING SOME TECHNO SIMILIAR STUFF BUT JUST FOR 10 SECOUNDS AND THEN THEY PLAY ANOTHER SONG OR EVEN TYPE OF MUSIC... ITS JUST TOO FUCKING ANNOYING FOR ME... OK WELL WHAT NOW? I CAN DO SOME ADVERTISMENT FOR MY BBS? OK! CALL IT FOR FUCK SAKE. GANGBANG +46 554 12133 16.8 DS POWER! 1 GIGABYTE OF HD SPACE OVER 1500 MODULES OVER 300MB OF XRATED FILES NODE 2 WILL COME SOON WITH A ZYXEL 1496E+ MODEM! THATS 19.2 KBPS V32 POWER! OK I THINK I HAVE TO STOP SOON FOR SOME HOURS TO GET DRUNK AND HAPPY... AND AFTER THAT I CAN WRITE SOME MORE OF BULLSHIT TALKING HERE IN THIS SCROLLER.... HI... THIS IS CHUCKY OF X-TRADE WRITING.. DRUNK AS USUAL AT THE PARTY IN GOTHENBURG.. WELL WHAT CAN I TALK ABOUT???? THIS NIGHT?? WELL OK! IT STARTED WITH A QUITE BOORIRNG TIME AS I HAD TO GUARD MY AMIGA 1200 FROM NOT TO BE STOLEN! (OR THAT 2GIGABYTE HARDDRIVE IN MY BAG!) BUT AT 03:00 SOMETHING THE FUN STARTED AS I STARTED TO BOOZE AND NOW IM KINDA DRUNK.. NOT THAT DRUNK BUT ANYWAY DRUNK! THATS CAUZE OF VODKA! I PREFER VODKA BEFORE & ACTUALLY! BUT I LOOOOOVE $.. AND I REAL FEELS THAT I NEED A REAL GOOD N WET $ RIGHT NOW.. I EVEN KNOW THAT I WILL GET ONE GOOD $ ON MONDAY WHEN IM COMING ! HOME! HEHE! DID U GET DA POINT THERE? HAHA! WELL! I AND ORGASMATRON HAVE FUN SHOUTING SOME WORDS HERE LIKE: X-TRADE, VAKNA, LAMER AND SVERIGE OK IT SEEMS LIKE ORGASMATRON HAVE SOMETHING TO WRITE ABOUT SO I LET HIM TO THE KEYS ON THIS A1200! OK HERE HE COMES!: ORGASMATRON IS MY FUCKING HANDLE AND I LOVE TO COME.. IN A BIG WET $ OR SO. THE MAIN PROBLEM WITH GETTING A $ IS TO HUNT THEM IN THE BARS AND SO... WELL ME AND MY FRIEND VOCO IS HAVING A GOOD TIME WITH HAVING FUN IN THE BARS. THIS NIGHT..(THE FIRST PARTY NIGHT!). WE WAS ON A PLACE CALLED GOLDEN DAYS. HMM.. WELL, NOOT A GOOD PLACE, THE DANCE FLOOR IS 2 SQUARE METRERS BIG AND THE BAR IS EXPENSIVE FOR MY LITTLE WALLET. BUT THE GIRLS!!! NO WORDS CAN DESCRIBE THE GIRLS. THEY WERE JUST TO LOVELY. I WANT TO SAY HELLO TO ALL GIRLS THAT I'VE MEET DURING THEESE LAST 24 HOURS! I DONT REMEBER ALL YOUR NAMES, BUT FIRST OF ALL A BIG HUG WILL GO TO THE GIRL WHO JUST SAID THAT SHE JUST HAD ENDED UP A RELATION WITH SOME BOY FRIEND. HEY GIRL I LIKE YOU I DON'T WANT TO BE YOUR BOYFRIEND, BUT I WANT TO KNOW YOU AS YOU ARE. PS...ME AND ANDERS DID REALY NOT THINK THAT YOU WAS BAD LOOKING OR SO......NOOOOO!. YOU WERE A REALY NATUARLY BEATY. TO BE HONEST. I DONT WANT YOUR $, I WANT YOUR LOVE IF I WANT SOMETHING FROM YOU! THATS TRUE! SECOND A WORD TO A GIRL I MEET A TIME AGO.. HELLO ANNA GUSTAVSSON!, YOU ARE A WONDERFUL GIRL. YOU ARE A REALY GOOD ONE. YOU LIKE THE RIGHT KIND OF MUSIC, YOU HAVE SAME KIND OF THOUGHTS ABOUT THE LIFE AND SO!.. I LIKE YOU A LOT GIRL... HOPE YOU ARE AWARE ABOUT THAT. I THINK YOU ARE ONE IN A MILLION. I HAVENT WON ANYTHING A BINGOLOTTO YET, BUT I WANT TO WIN Y O U ! ! ! NOTHING ELSE MATHERS!.......................WELL YOU MAYBE THINK THAT LOVE IS FOR SUCKERS. HA!, I TELL YA! IF YOU NEVER EVER HAVENT TESTED THE WHOLE LOVE THING. YOU HAVE MISSED ONE OF THE BEST THINGS IN THE LIFE. THIS IS ONE OF THE ONLY THINGS IN THE WORLD THAT CAN MAKE ME PUT MY BOARD TO SLEEP AND NEVER OPEN IT AGAIN.........OKEY TIME TO SPEAK ABOUT SOMETHING OTHER!!!! NO MORE LOVE OR $ TALKING RIGHT NOW, MAYBE L8ER BUT NOT NOW!............. SOME HELLOS INSTEAD. NECRO-MAN, YOU ARE A CRAZY GUY AND I HOPE YOU'LL STAY CRAZY AS EVER! SNUFFY OF ONTARION: WELL WE DID MAKE A GREAT JOB WITH DESTROYING THE FOOD AT THE FOOD PLACE, DIDNT WE! TV 21 RULEZ!!!.. LAST OF ALL BUT NOT LEAST. A HELLO TO THE GERMAN PORNO PHREAKS WHO SOLD ME A BOTTLE OF SOOME KIND OF CHEAP GERMAN BEER!.....SHIT IM TOO SLEEPY NOW. THINK I AM GOING TO LET OVER THE KEYBOARD TOO CHUCKY WHEN HE ARRIVES FROM HIS SLEEPING BEATTY SLEEP. WELL, IN HIS CASE HE WILL HAVE TO SLEEP FOR ATLEAST 500 YEARS IF HE HAS SOME SHITTY CRAPPY IDEAS OF GETTING NICE AND BEATUIFUL! IDEAS_for_VoCo.txt -------------------------------------------------------------------------- IDEAS FOR THE X-TRADE DEMO ( DEMO-COMPETITION X-MAS '92) BY MANTA & SCUBA Some were inspirated by the demo-ideas for 'World Of Confusion' -------------------------------------------------------------------------- ___ ________ ______ /\ ______ ______ \ \ / /\ \) __ \ / \ )____ \ ) __ / __\ Y / \/ /\/ /_/_// /\ \_/\_ \ \/___/Y \ / \__/ /_/ // \/ \/ ( /_/ / \____ \ /\__\ / \ / \___\ /Y\_ \ _ /\ _ _/ \/ Y\/ \/ SbA Y\/ \/\/ Y \/ Y After 5 hard hours and beers, Manta and Scuba finnaly reached this ideas for our glory demo.... lets go.. P.S. Hey VoCo ! Teach your Girlfriend Assembler.. hehehe have got about 2,5 months left to code and design all this stuff ! Fucking short... DIRECTORY: ------------ - Detailed Explanation of all routines and their row in presenting - Short Overview over the whole demo - List of GFX 1. INTRODUCTION --------------- As a music we choose a music as it is done in a `normal` movie-an atmospheric tune with orchestra-samples,... (like in INDIANA JONES III) What we see first is A DRAWN PLANET. A huge VECTOR-SPACECRAFT is flying towards the planet. a) It`s getting smaller and smaller and at last there`s only the PLANET left. The screen fades to black and the next part will be shown ( VECTORLANDSCAPE ). -->-o | b) It would become cooler if the PLANET is ZOOMING towards | the spacecraft. So we would need a ZOOMING-ROUTINE which | zooms the planet so big that at last only one big,zoomed | pixel fills the whole screen. The spacecraft flys through | this pixel, and a TUNNEL is developping from the middle | of the screen. The spacecraft flys very fast through the | tunnel ( LOOPINGS! hehe ). You could say that the tunnel | stands for the `catacombs`, `the underground-world` of the | planet. | The tunnel leads the spacecraft onto the surface of the | planet ( VECTORLANDSCAPE ). -->-| | The Vectorlandscape <----------------------------------o ------------------- This one should develop from the Coder's ideas. Perhaps some futuristic- looking houses, driving cars/smaller flying spacecrafts,... This is an opportunity for VOCO to use the remaining rastertime (make the best out of it! It`s a competition! hehe) Don`t let the flight through the landscape become TOO long (in Enigma, for example it soon became boring I think). Finally the spacecraft is flying towards one certain building... THE CINEMA (also in a futuristic style). The spacecraft stops besides this CINEMA. (To create an illusion of a LANDING spacecraft, the spacecraft is shown with a shadow). Then we`re rotated around 90° and we see the CINEMA IN FRONT of us. The door opens and we`re flying through the corridor and up the STAIRS (slightly in a curve). At last we fly through the last door and over the chairs. The inner room (IFF-Picture) is shown, and the curtain opens. a) The screen fades to black and the PRESENTATION is shown. -->-o | b) The screen is ZOOMED until the whole screen is black. | Now the PRESENTATION is shown. -->-o | The Presentation <----------------------------------o ---------------- Here we show some small TEXTSCREENS. As CHARSET we should take the CROISSANT-CHAR by Manta. All the textscreens shouldn`t be shown for TOO long !!! About 2-3 seconds for 1 screen !!! The text fades like this: - The letters appear fastly in a pure white color exactly in the middle of the screen - Then the white letters fade fastly back to their original color (golden palette) - The text is shown for a short time - The text fades back to black (not too fast, not too slow) - Now the next text fades in (again EXACTLY in the middle of the screen) The 'playlist' of the screen-fadings is like that: 1. ' IT IS DONE ! ' (2 seconds, then fadeout,...) 2. ' IN 1992 ' (2 seconds,...) 3. The first X-TRADE LOGO is shown ( about 3 seconds ) 4. ' PRESENTS ' (2 seconds) 5. The first ALIEN! PICTURE is shown. Perhaps this is not only a picture, but also picture with animated parts of the green alien (not sure yet). Of course it would be good to load the picture (anim) and the logo before the PRESENTATION is started. After the picture (anim) is finished, some SMALL CREDIDS are shown. 6. ' KODING ' + a small VOCO-logo behind it SCUBA ' GRAFIX ' + - logos + ' + ' MANTA ' D-SIGN ' ' MJUSIC ' + a small VAIN and/or KALASHNIKOV-logo All the credits should be on one screen, and they should appear line by line ( First 'KODING by Voco' , second 'GFX+DESIGN by ...',...). Perhaps we'll sample or record a small sound-effect which appears when a new line is shown (this effect only in the credits-part). The credits fade out at once. Now the whole INTRODUCTION is finished. We`ll go over to the MAIN-PART ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2. MAIN-PART ------------ You`ll get the exact specifications (GFX-size,....) as soon as we`ve drawn them. guess you have enough to do with the introduction now, where you have nearly all gfx + music (except the small logos and the orchestra tune). Now people want to have AEKSCHN (action) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! We've had enough text-screens now. (Even though they have been reduced to a limit!). So we won`t write `now comes ....`. We'll show some FUCKING GREAT ROUTINES RAPIDLY AFTER EACH OTHER... hehehe AND HOPEFULLY WIN THE FUCKING COMPETITION ! YEAHR ! Okay... here we go... 1.-Some balls (=DRAWN BOBS) come jumping onto the screen.And at in the end there should be about 70 bobs on the screen, at the same time. The 70 pixel balls explode and you get a lot of NORMAL LORES-PIXELS. These normal pixels will be put together to a LOGO if the shown logo needs more pixels than available, some more pixels will join from outside the screen without attracting attention. -After the logo is shown for about 3 seconds, the logo explodes to the pixels again, and the pixels put themselves together to a DOT-VECTOR (perhaps lightsourced,...) in 4 colors. -One pixel forming this dot-vector is centered in the middle of the screen, and the `camera` zooms into this pixel. the pixel becomes a large plain filled circle. At last the anti-aliasing is put around the ball to make it look better and a scroller appears in it (like in the S.O.S-Demo from Crystal). SCROLLTEXT: 'Guess what ? Nothing ! Schwabenbraeu-Beer rules ! Flump !!!' | That`s how it sounds when you open a bottle of Schwabenbraeu! 2.-The large circle becomes smaller again and splits. We get 4 DRAWN BOBS of the same size ( the same balls as above ). Fast a normal LINE-VECTOR-BOX (Enigma!) comes flying onto the screen and surrounds the 4 balls. The balls hop around for a while (5 secs) without doing anything special. Then the following action starts...: When the jumping balls hit a line in the vector, this line flashes up (it becomes brigher for a short time) and then this line disappears.This happens until every 12 lines are `executed`. -At last the bobs jump aside out of the screen 3.-A TRAILBLAZER (scrolling chessfield) appears on the lower half of the screen. The small difference to other demos is that we don`t fly over some pre-calculated colorfields, but over an IFF-PICTURE. This means every pixel stands for one field in the trailblazer, and the color stays the same. To make it short... you fly over a normal IFF-picture, Lo-Res 32 (or 16) colors, 160 x 160 pixels large. We don`t always fly straight, but we turn around in curves and stuff like that. So we`ll see every section of the picture within a short time. Now the trailblazing-picture flips from the horizontal to the vertical position. ( The trailblazing-picture develops to a normal IFF-Graphic like you would see it in DPaint). 4.-Here we`ll show the 3D-SCROLLER for which you get the charset with disk. (Like in 'IN THE KITCHEN' from Anarchy). Again the text should not become too long. It`s only to show the effect, not to tell a real message. SCROLLTEXT: 'Some special beershakes burp over to Deicide/TRSI, Kreator/ Devils, D-TECT, Schwabenpower, Ektar/TSB and all other close friends and girl-friends.' Text:' AND NOW PREPARE FOR SUMTHING REAL COOL! ' (Croissant-Char) 5.-A Vector-Ball (Dragonball) and a glenz-cube inside it are rotating. The cube exists out of 24 (better 48!! hehe) triangles.... it`s this normal glenz-cube you can see everywhere. Inside the cube there`s a lightsource (a bob). Now the light-rays shine through the unfilled triangles of the cube onto the surface of the Vector-Ball.This means you get 12 (or 24!!) triangles projected onto the ball (instead of the stars of the Dragon-Ball in HumanTarget). When you rotate the whole story you get the 3D-Effect of the Vector-Ball. Text:' WASN`T IT NEAT ? ' ' AND NOW EVEN BETTER... ' The lighsource-bob doesn`t stay at the same point... it even moves around inside the cube. So all triangles on the ball are shown in another perspective / distortion. (Only if possible.... please call if you have any problems) Another cool variation woulde be to move the lightsource outside the cube but still inside the ball, but this would probably cause many calculations.. So ask me for any details, if you dont understand anything.. If the Vectorball is really too difficult to code, we could do the same effect with a big cube out of many triangles, so it also looks nearly like a `ball`... 6.-A Trailblazer again, but this time not just a `usual` and not over a picture, BUT it is a TUNNEL-TRAILBLAZER... this means a chessfield fold together to a tunnel (the inside of the tunnel are the chessfields). And it looks like you are flying `into` this tunnel (like into pussy ! haha) from the back are now flying 3 BALLS (1 red, 1 blue, 1 green). Those balls `COLORIZE` the Trailblazer-Tunnel (like in Guardian Dragon II on the ball).. This looks very nice, becoz we do it not just on a plane field but in the tunnel as there are the balls shaking inside this tunnel. Princip: Tunnel is grey in beginning -> tunnel gets colorized from those 3 BALLS (only sourounding where the balls are..) At the top of the screen maybe a little X-TRADE logo to remind again to our glory name.. hahaha 7.-A nice picture by Scuba will be shown (probably Interlace, 64cols, full overscan). --> Textscreen: (Croisant-Charset always) TEXT: `Yeahhhr! Hey thanx to all who` ` voted for me in Eurocharts! ` ` Keep Voting, ya`know.. ` ` ` ` A fucking drunken Scuba... ` 8.-Imagine this: A cube is like a mirror, and you can see all other objects on it which it is flying around.. I thought we have a little gallery with `mirrors`.. -----> look on disk, there is an IFF-picture to explain it ! The mirror cube flys a curve through the mirror gallery and the cube shines in all the different mirrors, and the morror-image of the cube in the mirrors shine back on the mirror cube. cool eh ? if it is to complicated to do it with the `cube` also in `mirror`, then we just use a normal cube (maybe then GLENZ ?) which just shines in the mirrors. Another cool effect would be if we had different colors of the mirror, so that the different mirror-images of the cube show in another color... maybe we could let the cube lets fall to pieces like when glas breaks also with the sound of breaking a mirror... with this effect this part would be `faded out`... 9.-In the middle of the screen a VECTOR-EQUALIZER (see RSI-MEGADEMO) appears. One equalizer1 (Channel1) bumps to the left, one to the right (Channel2), one to the top (Ch.3) and one to the bottom (Ch.4). A PIXELSCROLLER appears and circles around the equalizers. When an equalizer hits the scroller, the scroller takes the impulse and suddenly bends to the top, left, right, or bottom (depends on which equalizer hits it). Scrolltext: `Hahahahha ! Hey suckers ! Color Crime II will kill you` `down... Release in Summer... Special greets to my` `graphic-friends.... Invisible/Devils ** Thorion/TRSI **` `Ben/Pleasure ** RWO/Kefrens ** BULT/X-TRADE...` `Lets kick some ass....` ----> Advertisment part: At the Top a X-TRADE logo (max. 32 cols,LoRes) Text in a small 8x8 Font (4 or 8 colors, only big letters): TEXT: ----------- ` X-TRADE MAIL GHQ X-TRADE MAIL SHQ ` ` PLK 0562521-D MIDSOMMARVAGEN 35 ` ` 7106 NEUENSTADT 95149 LULEA ` ` JUNITED GERMANSKI I LOVE SWEDEN ` ` (JOINING,GFX ETC) (SWAPPING) ` ` ` ` Give these cool boards a call... ` ` ` ` X-TRADE UNIVERSE HQ +49 (0) 713-936-81 ` ` X-TRADE WORLD HQ +49 (0) 711-777-5990 ` ` X-TRADE GERMAN HQ +49 (0) 723-278-321 ` ` X-TRADE U.S.A. HQ + 1 (0) 201-256-4604 ` ` X-TRADE EUROPEAN HQ +46 (0) 521-133-87 ` ` X-TRADE SWEDISH HQ +46 (0) 213-577-00 ` ` X-TRADE ITALIAN HQ +39 (0) 297-291-781 ` 10.-Imagine a lightsourced DOT-VECTORBALL like in enigma. it is like normal but around it will fly 3 other, smaller vector-dot-balls in 3 different colors (green, red, blue). those are flying around the big ball like planets do, and they give the big ball the colors in which the small shine. even cooler would be if there could fly also some even smaller ones around the 3 colored balls... And of coz all this stuff is flying around over the whole screen... 11.-Animated Vector-Cube (IFF animations), nothing special to code, just playing an animation of IFF-Pictures. Not sure yet if this part will show up or not. (Depends on Manta) 12.-The next we show is THE STARWARS-SCROLLER. In Enigma was also a scroller like this, but fucking lame. ours is moving FAST, flipps up and down and is flying a `curve` like in car racings.. !!!!!! It should be used to show our greetings (only the best so that it does not take so long). The colors of it should change all the time, so maybe every new line scolling in should use another color.. to the back the scroll should get `darker` to make the illusion that it is far away. Also an X-TRADE or Greetings logo is at the top jumping into the screen (not just fading). OVERVIEW -------- 1. INTRODUCTION (Planetzoom, Tunnel, Landscape, Cinema, Presentation) 2. MAIN-PART 2.01 Bobs -> Logo --> Dot-Vector --> Circle --> Scroller (SOS-Demo) 2.02 Line-Vector-Box with bobs inside --> Box disappears --> Bobs leave the screen 2.03 Trailblazer --> Picture develops out of trailblazer 2.04 3D-Line-Scroller -----> Textscreen 2.05 Vector-Ball with Cube & Lightsource in its body 2.06 Color-sourced Trailblazer-Tunnel 2.07 Picture by ScUBa -----> Textscreen 2.08 Vector-Mirrow-Cube 2.09 Vectorequlizers and Pixelscroller -----> Advertisment part (Addresses & BBS #) 2.10 Color-Sourced Dot-Vector-Balls with small balls moving around 2.11 Animated Vector-Cube (IFF animations) 2.12 The StarWars-Scroller 3. THE END-PART 3.01 A cool fading or routine shows the `Stone Cold Sober` picture by Scuba Also probably with some animated parts of the picture... 3.02 The detailed Credits are showing, we are not sure yet, how to make this right now, but I (Scuba) try to draw some cool Cartoons of ourselves for the credits. More detailed information about the credits part later. So this was the design by Manta & Scuba... You receive within this letter the updated grafix in form how the are done so far FINAL FINNISHED GRAFIX NOW: --------------------------- * ALIEN! * ACT-III (Cinema) * CROISANT-CHARSET * BEER-ICON (Should be shown sometimes in the upper left corner hehehe) * X-TRADE LOGOS * Picture by Scuba (be careful ! It is so far also my GFX-Compo picture !) GRAFIX UNDER WORK: ------------------ * STONE COLD SOBER - END PICTURE , Full overscan, 64 colors * 3D-LINE-SCROLL-CHAR 32 colors, probably reduced to 16 colors for you ! GRAFIX NOT STARTED SO FAR: -------------------------- * Small Bobs for the pixel effect-routine * 160x160 lores picture for Picture-Trailblazer routine * Drawn circle with antialiasing for the S.O.S Scroller in the beginning * all the other little crap grafix. * Animations of the Animated Vector * Animations of the Alien pictures Finally some short hellos to all our Members in Sweden ! I count on you all ! X-TRADE stays fighting.... Sorry to all about the delays with the T-Shirts... I have sent them today. Blame me for my lazyness to go to the post ! I am just a little Gfx-addicted alcoholican... hahaha Keep fighting, also without BB... OVER AND OUT Greet all swedish Girls and keep the VODKA cool... hehehe (Lyrics by ScUBa) CIAO ScUBa & MaNTa in `92 Chessboxah8.S ************************ * CHESSBOXAH * ************************ * 1-frame transparent * * vectorcube * ************************ * Coded by TPP/X-Trade * ************************ **-**-**-**-**-**-**-**-**-**-**-** * SCREEN - Shown dis frame * * SCREENBUF1 - Clear and draw * * SCREENBUF2 - Fill * **-**-**-**-**-**-**-**-**-**-**-** AUTO E\J ;***************** ;* Constants * ;***************** OldOpenLibrary = -408 CloseLibrary = -414 DMASET= %1000000111000000 ; -----a-bcdefghij ; a: Blitter Nasty ; b: Bitplane DMA (if this isn't set, sprites disappear!) ; c: Copper DMA ; d: Blitter DMA ; e: Sprite DMA ; f: Disk DMA ; g-j: Audio 3-0 DMA BLTAPTR=$dff050 BLTBPTR=$dff04c BLTCPTR=$dff048 BLTDPTR=$dff054 BLTCON0=$dff040 BLTCON1=$dff042 BLTADAT=$dff074 BLTBDAT=$dff072 BLTCDAT=$dff070 BLTAMOD=$dff064 BLTBMOD=$dff062 BLTCMOD=$dff060 BLTDMOD=$dff066 BLTAFWM=$dff044 BLTALWM=$dff046 BLTSIZE=$dff058 START: MOVEM.L D0-D7/A0-A6,-(A7) ; Put registers on stack ;*********************************** ;* CLOSE ALL SYSTEM INTERRUPTS * ;* * ;* START DEMO INTERRUPTS * ;*********************************** MOVE.L $4.W,A6 ; Exec pointer to A6 LEA.L GfxName(PC),A1 ; Set library pointer MOVEQ #0,D0 JSR OldOpenLibrary(A6) ; Open graphics.library MOVE.L D0,A1 ; Use Base-pointer MOVE.L $26(A1),OLDCOP1 ; Store copper1 start addr MOVE.L $32(A1),OLDCOP2 ; Store copper1 start addr JSR CloseLibrary(A6) ; Close graphics library LEA $DFF000,A6 MOVE.W $1C(A6),INTENA ; Store old INTENA MOVE.W $2(A6),DMACON ; Store old DMACON MOVE.W $10(A6),ADKCON ; Store old ADKCON MOVE.W #$7FFF,$9A(A6) ; Clear interrupt enable BSR.L Wait_Vert_Blank MOVE.W #$7FFF,$96(A6) ; Clear DMA channels MOVE.L #COPLIST,$80(A6) ; Copper1 start address MOVE.W #DMASET!$8200,$96(A6) ; DMA kontrol data MOVE.L $6C.W,OldInter ; Store old inter pointer MOVE.L #INTER,$6C.W ; Set interrupt pointer MOVE.W #$7FFF,$9C(A6) ; Clear request MOVE.W #$C020,$9A(A6) ; Interrupt enable ;; *********************************************** ; ************ Custom inits ************* ; *********************************************** ; *********************************************** LOOP: TST.B STARTMAIN BEQ.S LOOP move.b #0,startmain ;; *********************************************** ; ************ MAIN LOOOOOOOP *********** ; *********************************************** bsr clrbuf bsr fill bsr zoomin bsr changecols bsr rotate bsr coords bsr mirror bsr scale bsr drawdashit ; move.w #$0f00,$dff180 ; *********************************************** BTST #6,$BFE001 ; Test left mouse button BNE.S LOOP ;; *********************************************** ; ************ Custom anti-inits (!) ************ ; *********************************************** ;***************************************** ;* * ;* RESTORE SYSTEM INTERRUPTS ECT ECT * ;* * ;***************************************** LEA $DFF000,A6 MOVE.W #$7FFF,$9A(A6) ; Disable interrupts BSR.W Wait_Vert_Blank MOVE.W #$7FFF,$96(A6) MOVE.L OldCop1(PC),$80(A6) ; Restore old copper1 MOVE.L OldCop2(PC),$84(A6) ; Restore old copper1 MOVE.L OldInter(PC),$6C.W ; Restore inter pointer MOVE.W DMACON,D0 ; Restore old DMACON OR.W #$8000,D0 MOVE.W D0,$96(A6) MOVE.W ADKCON,D0 ; Restore old ADKCON OR.W #$8000,D0 MOVE.W D0,$9E(A6) MOVE.W INTENA,D0 ; Restore inter data OR.W #$C000,D0 MOVE.W #$7FFF,$9C(A6) MOVE.W D0,$9A(A6) MOVEM.L (A7)+,D0-D7/A0-A6 ; Get registers from stack RTS *********** * DA SUBS * *********** ******* COORDS ******** *(USES D0-D7/A0/A4-A6)* coords lea.l obj,a0 lea.l rotated,a4 lea.l sinus,a5 lea.l cosinus,a6 movem.w xrot,d5-d7 asl.w #1,d5 asl.w #1,d6 asl.w #1,d7 morecoords movem.w (a0)+,d0-d2 cmpi.w #$8000,d0 bne.s apnight rts apnight ;Y = cos(z.)*y+sin(z.)*x ;X = cos(z.)*x-sin(z.)*y move.w (a6,d7.w),d3 move.w d3,d4 muls d1,d3 muls d0,d4 swap d3 swap d4 rol.l #4,d3 rol.l #4,d4 move.w d3,yy move.w d4,xx move.w (a5,d7.w),d3 move.w d3,d4 muls d0,d3 muls d1,d4 swap d3 swap d4 rol.l #4,d3 rol.l #4,d4 sub.w d3,yy add.w d4,xx move.w yy,d1 move.w xx,d0 ;Y = cos(x.)*y+sin(x.)*z ;Z = cos(x.)*z+sin(x.)*y move.w (a6,d6.w),d3 move.w d3,d4 muls d1,d3 muls d2,d4 swap d3 swap d4 rol.l #4,d3 rol.l #4,d4 move.w d3,yy move.w d4,zz move.w (a5,d6.w),d3 move.w d3,d4 muls d2,d3 muls d1,d4 swap d3 swap d4 rol.l #4,d3 rol.l #4,d4 sub.w d3,yy add.w d4,zz move.w zz,d2 ;X = cos(y.)*x-sin(y.)*z ;Z = cos(y.)*z+sin(y.)*x move.w (a6,d5.w),d3 move.w d3,d4 muls d0,d3 muls d2,d4 swap d3 swap d4 rol.l #4,d3 rol.l #4,d4 move.w d3,xx move.w d4,zz move.w (a5,d5.w),d3 move.w d3,d4 muls d2,d3 muls d0,d4 swap d3 swap d4 rol.l #4,d3 rol.l #4,d4 sub.w d3,xx add.w d4,zz move.w xx,(a4)+ move.w yy,(a4)+ move.w zz,(a4)+ bra morecoords ****************************** rotate movem.w xadd,d0-d2 add.w d0,xrot add.w d1,yrot add.w d2,zrot andi.w #$1ff,xrot andi.w #$1ff,yrot andi.w #$1ff,zrot rts ****************************** mirror lea.l rotated,a1 ; X-Y movem.w (a1),d0-d2 ;origo movem.w 12(a1),d3-d5 sub.w d0,d3 ;xoffs sub.w d1,d4 sub.w d2,d5 movem.w d3-d5,xoffs3 movem.w d3-d5,xoffs1 movem.w d3-d5,xoffsneg1 movem.w d3-d5,xoffsneg3 asl.w #1,d3 asl.w #1,d4 asl.w #1,d5 add.w d3,xoffsneg3 add.w d4,xoffsneg3+2 add.w d5,xoffsneg3+4 add.w d3,xoffs3 add.w d4,xoffs3+2 add.w d5,xoffs3+4 neg.w xoffsneg1 neg.w xoffsneg1+2 neg.w xoffsneg1+4 neg.w xoffsneg3 neg.w xoffsneg3+2 neg.w xoffsneg3+4 movem.w 6(a1),d3-d5 sub.w d0,d3 ;yoffs sub.w d1,d4 sub.w d2,d5 movem.w d3-d5,yoffs3 movem.w d3-d5,yoffs1 movem.w d3-d5,yoffsneg1 movem.w d3-d5,yoffsneg3 asl.w #1,d3 asl.w #1,d4 asl.w #1,d5 add.w d3,yoffsneg3 add.w d4,yoffsneg3+2 add.w d5,yoffsneg3+4 add.w d3,yoffs3 add.w d4,yoffs3+2 add.w d5,yoffs3+4 neg.w yoffsneg1 neg.w yoffsneg1+2 neg.w yoffsneg1+4 neg.w yoffsneg3 neg.w yoffsneg3+2 neg.w yoffsneg3+4 lea.l mirrorlist1,a0 lea.l mirror1,a1 lea.l xoffs,a2 lea.l yoffs,a3 merasex move.w (a0)+,d6 bmi mirrorzy move.w d6,d7 asl.w #2,d6 asl.w #1,d7 add.w d6,d7 ;*6 movem.w (a2,d7.w),d3-d5 add.w d0,d3 add.w d1,d4 add.w d2,d5 move.w (a0)+,d6 move.w d6,d7 asl.w #2,d6 asl.w #1,d7 add.w d6,d7 ;*6 add.w (a3,d7.w),d3 add.w 2(a3,d7.w),d4 add.w 4(a3,d7.w),d5 move.w d3,(a1)+ move.w d4,(a1)+ move.w d5,(a1)+ bra merasex mirrorzy lea.l rotated,a1 ; Z-Y movem.w 18(a1),d0-d2 ;origo movem.w 30(a1),d3-d5 sub.w d0,d3 ;zoffs sub.w d1,d4 sub.w d2,d5 movem.w d3-d5,zoffs1 movem.w d3-d5,zoffsneg1 neg.w zoffsneg1 neg.w zoffsneg1+2 neg.w zoffsneg1+4 movem.w 24(a1),d3-d5 sub.w d0,d3 ;yoffs sub.w d1,d4 sub.w d2,d5 movem.w d3-d5,yoffs3 movem.w d3-d5,yoffs1 movem.w d3-d5,yoffsneg1 movem.w d3-d5,yoffsneg3 asl.w #1,d3 asl.w #1,d4 asl.w #1,d5 add.w d3,yoffsneg3 add.w d4,yoffsneg3+2 add.w d5,yoffsneg3+4 add.w d3,yoffs3 add.w d4,yoffs3+2 add.w d5,yoffs3+4 neg.w yoffsneg1 neg.w yoffsneg1+2 neg.w yoffsneg1+4 neg.w yoffsneg3 neg.w yoffsneg3+2 neg.w yoffsneg3+4 lea.l mirrorlist2,a0 lea.l mirror2,a1 lea.l zoffs,a2 lea.l yoffs,a3 mersex2 move.w (a0)+,d6 bmi mirrorxz move.w d6,d7 asl.w #2,d6 asl.w #1,d7 add.w d6,d7 ;*6 movem.w (a2,d7.w),d3-d5 add.w d0,d3 add.w d1,d4 add.w d2,d5 move.w (a0)+,d6 move.w d6,d7 asl.w #2,d6 asl.w #1,d7 add.w d6,d7 ;*6 add.w (a3,d7.w),d3 add.w 2(a3,d7.w),d4 add.w 4(a3,d7.w),d5 move.w d3,(a1)+ move.w d4,(a1)+ move.w d5,(a1)+ bra mersex2 mirrorxz lea.l rotated,a1 ; X-Z movem.w 36(a1),d0-d2 ;origo movem.w 48(a1),d3-d5 sub.w d0,d3 ;xoffs sub.w d1,d4 sub.w d2,d5 movem.w d3-d5,xoffs1 movem.w d3-d5,xoffsneg1 neg.w xoffsneg1 neg.w xoffsneg1+2 neg.w xoffsneg1+4 movem.w 42(a1),d3-d5 sub.w d0,d3 ;zoffs sub.w d1,d4 sub.w d2,d5 movem.w d3-d5,zoffs1 movem.w d3-d5,zoffsneg1 neg.w zoffsneg1 neg.w zoffsneg1+2 neg.w zoffsneg1+4 lea.l mirrorlist3,a0 lea.l mirror3,a1 lea.l xoffs,a2 lea.l zoffs,a3 mersex3 move.w (a0)+,d6 bmi negera move.w d6,d7 asl.w #2,d6 asl.w #1,d7 add.w d6,d7 ;*6 movem.w (a2,d7.w),d3-d5 add.w d0,d3 add.w d1,d4 add.w d2,d5 move.w (a0)+,d6 move.w d6,d7 asl.w #2,d6 asl.w #1,d7 add.w d6,d7 ;*6 add.w (a3,d7.w),d3 add.w 2(a3,d7.w),d4 add.w 4(a3,d7.w),d5 move.w d3,(a1)+ move.w d4,(a1)+ move.w d5,(a1)+ bra mersex3 negera move.w #2,d7 lea.l mirror1,a0 ;transfer 16*3 words lea.l mirror4,a1 ;(the blitter IS busy at da horror move.l (a0)+,(a1)+ ; moment, if youre wondering move.l (a0)+,(a1)+ ; why i use da processor...) move.l (a0)+,(a1)+ ;(How da hell did ya get into move.l (a0)+,(a1)+ ; this source anyway?) move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ dbf d7,horror move.w #2,d7 lea.l mirror4,a0 ;neg 16*3 words terror neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ dbf d7,terror lea.l mirror2,a0 ;transfer 8*3 words lea.l mirror5,a1 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ lea.l mirror5,a0 ;neg 8*3 words move.w #2,d7 gurgel neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ dbf d7,gurgel lea.l mirror3,a0 ;transfer 4*3 words lea.l mirror6,a1 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ lea.l mirror6,a0 ;neg 4*3 words move.w #2,d7 blubb neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ neg.w (a0)+ dbf d7,blubb rts *********************************** scale movem.w xhor,d3-d5 lea.l mirror1,a0 ;change these lea.l scaled1,a1 ;change these move.w #16*2+8*2+4*2-1,d7 ;change these merskal movem.w (a0)+,d0-d2 add.w d5,d2 ext.l d2 ext.l d0 ext.l d1 asl.l #6,d0 ; asl.l #1,d0 asl.l #6,d1 ; asl.l #1,d1 divs d2,d0 divs d2,d1 add.w d3,d0 add.w d4,d1 move.w d0,(a1)+ move.w d1,(a1)+ dbf d7,merskal rts ************************ plottah ;debugging puropses only! REMOVE!!!! move.l screenbuf,a0 lea.l scaled1,a1 move.w #16-1,d7 ;#16-1,d7 bsr meradot lea.l scaled4,a1 move.w #16-1,d7 bsr meradot lea.l scaled2,a1 move.w #8-1,d7 bsr meradot lea.l scaled5,a1 move.w #8-1,d7 bsr meradot rts meradot clr.l d0 movem.w (a1)+,d0-d1 move.w d1,d2 asl.w #5,d2 asl.w #3,d1 add.w d2,d1 ror.l #4,d0 lsl.w #1,d0 add.w d0,d1 clr.w d0 rol.l #4,d0 move.w #$8000,d2 lsr.w d0,d2 or.w d2,(a0,d1.w) dbf d7,meradot rts ************************ CUT=4 clrbuf bsr waitblit move.w #$01f0,BLTCON0 move.w #$0000,BLTCON1 move.w #4*CUT,BLTDMOD move.w #$0000,BLTADAT move.l screenbuf,a0 adda.w #2*CUT,a0 move.l a0,BLTDPTR move.w #$2654-2*CUT,BLTSIZE move.l screenbuf,a0 adda.w #2*40*153,a0 move.w #9,d7 clr.l d0 clr.l d1 clr.l d2 clr.l d3 clr.l d4 clr.l d5 clr.l d6 sub.l a1,a1 move.l a1,a2 move.l a1,a3 move.l a1,a4 move.l a1,a5 move.l a1,a6 rensa movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) movem.l d0-d6/a1-a6,-(a0) dbf d7,rensa rts ************************ fill bsr waitblit move.w #$09f0,BLTCON0 move.w #$000a,BLTCON1 move.w #-1,BLTAFWM move.w #4*CUT,BLTAMOD move.w #4*CUT,BLTDMOD move.l screenbuf2,a0 adda.w #2*153*40-2*CUT,a0 move.l a0,BLTAPTR move.l a0,BLTDPTR move.w #$4c94-2*CUT,BLTSIZE rts ************************ waitblit btst #14,$dff002 bne waitblit rts ************************ drawdashit lea.l scaled1,a2 lea.l frontvis,a1 bsr chksurf bsr initline lea.l frontconnect,a1 bsr drawsurf lea.l rightvis,a1 bsr chksurf lea.l rightconnect,a1 bsr drawsurf lea.l rearvis,a1 bsr chksurf lea.l rearconnect,a1 bsr drawsurf lea.l leftvis,a1 bsr chksurf lea.l leftconnect,a1 bsr drawsurf lea.l upvis,a1 bsr chksurf lea.l upconnect,a1 bsr drawsurf lea.l downvis,a1 bsr chksurf lea.l downconnect,a1 bsr drawsurf rts chksurf move.w (a1),d7 subq #1,d7 asl.w #2,d7 movem.w (a2,d7.w),d0-d1 move.w 2(a1),d7 subq #1,d7 asl.w #2,d7 movem.w (a2,d7.w),d2-d3 move.w 4(a1),d7 subq #1,d7 asl.w #2,d7 movem.w (a2,d7.w),d4-d5 sub.w d0,d2 sub.w d0,d4 sub.w d1,d3 sub.w d1,d5 muls d4,d3 muls d2,d5 sub.w d5,d3 bpl.s ytanebakom move.l screenbuf,a4 rts ytanebakom move.l screenbuf,a4 adda.w #40*153,a4 rts drawsurf nyyta movem.w (a1),d4-d5 tst.w d4 bpl merayta rts merayta subq #1,d4 subq #1,d5 asl.w #2,d4 asl.w #2,d5 movem.w (a2,d4.w),d0-d1 movem.w (a2,d5.w),d2-d3 bsr drawline movem.w 2(a1),d4-d5 subq #1,d4 subq #1,d5 asl.w #2,d4 asl.w #2,d5 movem.w (a2,d4.w),d0-d1 movem.w (a2,d5.w),d2-d3 bsr drawline movem.w 4(a1),d4-d5 subq #1,d4 subq #1,d5 asl.w #2,d4 asl.w #2,d5 movem.w (a2,d4.w),d0-d1 movem.w (a2,d5.w),d2-d3 bsr drawline move.w 6(a1),d4 move.w (a1),d5 subq #1,d4 subq #1,d5 asl.w #2,d4 asl.w #2,d5 movem.w (a2,d4.w),d0-d1 movem.w (a2,d5.w),d2-d3 bsr drawline adda.w #8,a1 bra nyyta ;******************** ;* Init line draw * ;******************** SINGLE = 2 ; 2 = SINGLE BIT WIDTH BYTEWIDTH = 40 ; The below registers only have to be set once each time ; you want to draw one or more lines. INITLINE: LEA.L $DFF000,A6 .WAIT: BTST #$E,$2(A6) BNE.S .WAIT MOVEQ #-1,D1 MOVE.L D1,$44(A6) ; FirstLastMask MOVE.W #$8000,$74(A6) ; BLT data A MOVE.W #BYTEWIDTH,$60(A6) ; Tot.Screen Width MOVE.W #$FFFF,$72(A6) move.w #bytewidth,d6 RTS ;***************** ;* DRAW LINE * ;***************** ; USES D0/D1/D2/D3/D4/D5/D6/A0/A4/A6 DRAWLINE: ; A4 - Plane ; A6 - $DFF000 ; D6 - width of bpl ; D0-D4 - coords move.l a4,a0 move.l d6,d5 draw: cmp.w d1,d3 bgt.s line1 exg d0,d2 exg d1,d3 beq.s out line1: move.w d1,d4 muls d5,d4 move.w d0,d5 add.l a0,d4 asr.w #3,d5 add.l d5,d4 moveq #0,d5 sub.w d1,d3 sub.w d0,d2 bpl.s line2 moveq #1,d5 neg.w d2 line2: move.w d3,d1 add.w d1,d1 cmp.w d2,d1 dbhi d3,line3 line3: move.w d3,d1 sub.w d2,d1 bpl.s line4 exg d2,d3 line4: addx.w d5,d5 add.w d2,d2 move.w d2,d1 sub.w d3,d2 addx.w d5,d5 and.w #15,d0 ror.w #4,d0 or.w #$a4a,d0 waitblt: btst #$E,2(a6) bne.s waitblt move.w d2,$52(a6) sub.w d3,d2 lsl.w #6,d3 addq.w #2,d3 move.w d0,$40(a6) move.b oct(PC,d5.w),$43(a6) move.l d4,$48(a6) move.l d4,$54(a6) movem.w d1/d2,$62(a6) move.w d3,$58(a6) out rts oct: dc.l $3431353,$b4b1757 ************************* changecols btst #1,framecount+2 beq colup cmp.w #$0902,colorah+2 ble bajbaj btst #0,framecount+3 beq bajbaj sub.w #$0100,colorah+2 bajbaj rts colup cmp.w #$0f02,colorah+2 bge byebye btst #0,framecount+3 beq byebye add.w #$0100,colorah+2 byebye rts *************************** zoomin sub.w #80,zhor cmp.w #1000,zhor bgt zoombaj move.w #1000,zhor zoombaj rts ;*** WAIT VERTICAL BLANK *** Wait_Vert_Blank: BTST #0,$5(A6) BEQ.S Wait_Vert_Blank .loop BTST #0,$5(A6) BNE.S .loop RTS ;*** DATA AREA *** GfxName DC.B 'graphics.library',0 startmain dc.b 0 even DosBase DC.L 0 OldInter DC.L 0 OldCop1 DC.L 0 OldCop2 DC.L 0 INTENA DC.W 0 DMACON DC.W 0 ADKCON DC.W 0 ;; *********************************************** ; ************ CUSTOM DATA AREA *********** ; *********************************************** xrot dc.w 0 yrot dc.w 0 zrot dc.w 0 xadd dc.w 1 yadd dc.w 2 zadd dc.w 4 xx dc.w 0 yy dc.w 0 zz dc.w 0 xhor dc.w 160 yhor dc.w 75 zhor dc.w $3000 ; -> 1600 obj dc.w 0,0,-450,0,150,-450,150,0,-450 dc.w 450,0,0,450,150,0,450,0,150 dc.w 0,450,0,0,450,150,150,450,0 objend dc.w $8000 coordno equ (objend-obj)/6 screen dc.l bpls screenbuf dc.l bpls+40*153*2 screenbuf2 dc.l bpls+40*153*4 mirrorlist1 dc.w 0,3,1,3,2,3,3,3 ;xmultiplier,ymultipl. dc.w 0,2,1,2,2,2,3,2 dc.w 0,1,1,1,2,1,3,1 dc.w 0,0,1,0,2,0,3,0 dc.w $ffff mirrorlist2 dc.w 1,3,2,3 dc.w 1,2,2,2 dc.w 1,1,2,1 dc.w 1,0,2,0 dc.w $ffff mirrorlist3 dc.w 1,2,2,2 dc.w 1,1,2,1 dc.w $ffff xoffs xoffsneg3 blk.w 3,0 xoffsneg1 blk.w 3,0 xoffs1 blk.w 3,0 xoffs3 blk.w 3,0 yoffs yoffsneg3 blk.w 3,0 yoffsneg1 blk.w 3,0 yoffs1 blk.w 3,0 yoffs3 blk.w 3,0 zoffs zoffsneg3 blk.w 3,0 zoffsneg1 blk.w 3,0 zoffs1 blk.w 3,0 zoffs3 blk.w 3,0 frontconnect dc.w 1,2,6,5 ;Front dc.w 3,4,8,7 dc.w 6,7,11,10 dc.w 9,10,14,13 dc.w 11,12,16,15 dc.w $ffff rightconnect dc.w 17,18,20,19 ;Right dc.w 8,19,21,12 dc.w 20,9+28,5+28,22 dc.w 21,22,24,23 dc.w $ffff rearconnect dc.w 1+28,2+28,6+28,5+28 ;Back dc.w 3+28,4+28,8+28,7+28 dc.w 6+28,7+28,11+28,10+28 dc.w 9+28,10+28,14+28,13+28 dc.w 11+28,12+28,16+28,15+28 dc.w $ffff leftconnect dc.w 23+28,24+28,22+28,21+28 ;Left dc.w 12+28,21+28,19+28,8+28 dc.w 22+28,5,9,20+28 dc.w 19+28,20+28,18+28,17+28 dc.w $ffff upconnect dc.w 15+28,14+28,26,25 dc.w 23+28,25,27,24+28 dc.w 26,18,17,28 dc.w 27,28,3,2 dc.w $ffff downconnect dc.w 3+28,2+28,27+28,28+28 dc.w 17+28,28+28,26+28,18+28 dc.w 27+28,24,23,25+28 dc.w 26+28,25+28,15,14 dc.w $ffff frontvis dc.w 1,4,16 rightvis dc.w 4,18,24 ;4,13+28,11+28 rearvis dc.w 13+28,16+28,4+28 leftvis dc.w 16+28,1,13 upvis dc.w 16+28,13+28,4 downvis dc.w 13,16,1+28 framecount dc.l 0 ;********************************** ;* * ;* INTERRUPT ROUTINE. LEVEL 3 * ;* * ;********************************** INTER: MOVEM.L D0-D7/A0-A6,-(A7) ; Put registers on stack add.l #1,framecount ; btst #0,framecount+3 ; beq noframe MOVE.B #1,STARTMAIN move.l screenbuf2,a0 move.l screenbuf,screenbuf2 move.l screen,screenbuf move.l a0,screen noframe LEA.L $DFF000,A6 move.l screen,d0 move.w d0,bplptr+6 swap d0 move.w d0,bplptr+2 swap d0 add.l #40*153,d0 move.w d0,bplptr+14 swap d0 move.w d0,bplptr+10 ;; *********************************************** ; ************ CUSTOM INTERRUPT *********** ; *********************************************** ; *********************************************** lea.l $DFF000,A6 MOVE.W #$4020,$9C(A6) ; Clear interrupt request MOVEM.L (A7)+,D0-D7/A0-A6 ; Get registers from stack RTE ;***************************** ;* * ;* COPPER1 PROGRAM * ;* * ;***************************** SECTION Copper,DATA_C COPLIST: DC.W $0100,$0000 ; Bit-Plane control reg. DC.W $0102,$0000 ; Hor-Scroll DC.W $0104,$0010 ; Sprite/Gfx priority DC.W $0108,$0000 ; Modolu (odd) DC.W $010A,$0000 ; Modolu (even) DC.W $008E,$2C81 ; Screen Size DC.W $0090,$2CC1 ; Screen Size DC.W $0092,$0038 ; H-start DC.W $0094,$00D0 ; H-stop DC.W $0180,$0005 ; %00 DC.W $0182,$0602 ; %01 ;REAR colorah dc.w $0184,$0f02 ; %10 ;FRONT dc.w $0186,$0f02 ; %11 ;BOTH dc.w $5401,$ff00 dc.w $0180,$000f bplptr: dc.w $00e0,$0000 dc.w $00e2,$0000 dc.w $00e4,$0000 dc.w $00e6,$0000 dc.w $5501,$ff00 dc.w $0100,$2000 dc.w $0180,$0200 dc.w $ee01,$ff00 dc.w $0100,$0000 dc.w $0180,$000f dc.w $ef01,$ff00 dc.w $0180,$0005 DC.L $FFFFFFFE ;***************************** ;* * ;* SCREEN DATA AREA * ;* * ;***************************** SECTION Screen,BSS_C ds.b 10*40 ;SEC BUFFER BPLS DS.B 40*153*2*3 ds.b 10*40 ;SEC BUFFER SECTION Fettso,BSS_P rotated ds.w 3*coordno mirror1 ds.w 16*3 ; (1-16) mirror2 ds.w 8*3 ; (17-24) mirror3 ds.w 4*3 ; (25-28) mirror4 ds.w 16*3 ; (1'-16') mirror5 ds.w 8*3 ; (17'-24') mirror6 ds.w 4*3 ; (25'-28') scaled1 ds.w 16*2 scaled2 ds.w 8*2 scaled3 ds.w 4*2 scaled4 ds.w 16*2 scaled5 ds.w 8*2 scaled6 ds.w 4*2 SECTION Fett,DATA_P sinus dc.w 0,50,100,150,201,251,301,351 dc.w 401,451,501,551,600,650,700,749 dc.w 799,848,897,946,995,1043,1092,1140 dc.w 1188,1236,1284,1332,1379,1427,1474,1520 dc.w 1567,1613,1659,1705,1751,1796,1841,1886 dc.w 1930,1974,2018,2062,2105,2148,2191,2233 dc.w 2275,2317,2358,2399,2439,2479,2519,2559 dc.w 2598,2636,2675,2712,2750,2787,2824,2860 dc.w 2896,2931,2966,3000,3034,3068,3101,3133 dc.w 3165,3197,3228,3259,3289,3319,3348,3377 dc.w 3405,3432,3460,3486,3512,3538,3563,3587 dc.w 3611,3635,3658,3680,3702,3723,3744,3764 dc.w 3783,3802,3821,3838,3856,3872,3888,3904 dc.w 3919,3933,3947,3960,3972,3984,3995,4006 dc.w 4016,4026,4035,4043,4051,4058,4064,4070 dc.w 4075,4080,4084,4087,4090,4092,4094,4095 cosinus dc.w 4095,4095,4094,4092,4090,4087,4084,4080 dc.w 4075,4070,4064,4058,4051,4043,4035,4026 dc.w 4016,4006,3995,3984,3972,3960,3947,3933 dc.w 3919,3904,3888,3872,3856,3838,3821,3802 dc.w 3783,3764,3744,3723,3702,3680,3658,3635 dc.w 3611,3587,3563,3538,3512,3486,3460,3432 dc.w 3405,3377,3348,3319,3289,3259,3228,3197 dc.w 3165,3133,3101,3068,3034,3000,2966,2931 dc.w 2895,2860,2824,2787,2750,2712,2675,2636 dc.w 2598,2559,2519,2479,2439,2399,2358,2316 dc.w 2275,2233,2191,2148,2105,2062,2018,1974 dc.w 1930,1886,1841,1796,1751,1705,1659,1613 dc.w 1567,1520,1473,1426,1379,1332,1284,1236 dc.w 1188,1140,1092,1043,995,946,897,848 dc.w 798,749,700,650,600,551,501,451 dc.w 401,351,301,251,200,150,100,50 dc.w 0,-50,-100,-150,-200,-251,-301,-351 dc.w -401,-451,-501,-551,-600,-650,-700,-749 dc.w -799,-848,-897,-946,-995,-1043,-1092,-1140 dc.w -1188,-1236,-1284,-1332,-1379,-1426,-1473,-1520 dc.w -1567,-1613,-1659,-1705,-1751,-1796,-1841,-1886 dc.w -1930,-1974,-2018,-2062,-2105,-2148,-2191,-2233 dc.w -2275,-2316,-2358,-2399,-2439,-2479,-2519,-2559 dc.w -2598,-2636,-2675,-2712,-2750,-2787,-2824,-2860 dc.w -2895,-2931,-2966,-3000,-3034,-3068,-3101,-3133 dc.w -3165,-3197,-3228,-3259,-3289,-3319,-3348,-3377 dc.w -3405,-3432,-3460,-3486,-3512,-3538,-3563,-3587 dc.w -3611,-3635,-3658,-3680,-3702,-3723,-3744,-3764 dc.w -3783,-3802,-3821,-3838,-3856,-3872,-3888,-3904 dc.w -3919,-3933,-3947,-3960,-3972,-3984,-3995,-4006 dc.w -4016,-4026,-4035,-4043,-4051,-4058,-4064,-4070 dc.w -4075,-4080,-4084,-4087,-4090,-4092,-4094,-4095 dc.w -4095,-4095,-4094,-4092,-4090,-4087,-4084,-4080 dc.w -4075,-4070,-4064,-4058,-4051,-4043,-4035,-4026 dc.w -4016,-4006,-3995,-3984,-3972,-3960,-3947,-3933 dc.w -3919,-3904,-3888,-3872,-3856,-3838,-3821,-3802 dc.w -3783,-3764,-3744,-3723,-3702,-3680,-3658,-3635 dc.w -3611,-3587,-3563,-3538,-3512,-3486,-3460,-3432 dc.w -3405,-3377,-3348,-3319,-3289,-3259,-3228,-3197 dc.w -3165,-3133,-3101,-3068,-3034,-3000,-2966,-2931 dc.w -2895,-2860,-2823,-2787,-2750,-2712,-2675,-2636 dc.w -2598,-2559,-2519,-2479,-2439,-2399,-2358,-2316 dc.w -2275,-2233,-2191,-2148,-2105,-2062,-2018,-1974 dc.w -1930,-1886,-1841,-1796,-1751,-1705,-1659,-1613 dc.w -1567,-1520,-1473,-1426,-1379,-1332,-1284,-1236 dc.w -1188,-1140,-1092,-1043,-995,-946,-897,-848 dc.w -798,-749,-700,-650,-600,-551,-501,-451 dc.w -401,-351,-301,-251,-200,-150,-100,-50 dc.w 0,50,100,150,201,251,301,351 dc.w 401,451,501,551,600,650,700,749 dc.w 799,848,897,946,995,1043,1092,1140 dc.w 1188,1236,1284,1332,1379,1427,1474,1520 dc.w 1567,1613,1659,1705,1751,1796,1841,1886 dc.w 1930,1974,2018,2062,2105,2148,2191,2233 dc.w 2275,2317,2358,2399,2439,2479,2519,2559 dc.w 2598,2636,2675,2712,2750,2787,2824,2860 dc.w 2896,2931,2966,3000,3034,3068,3101,3133 dc.w 3165,3197,3228,3259,3289,3319,3348,3377 dc.w 3405,3432,3460,3486,3512,3538,3563,3587 dc.w 3611,3635,3658,3680,3702,3723,3744,3764 dc.w 3783,3802,3821,3838,3856,3872,3888,3904 dc.w 3919,3933,3947,3960,3972,3984,3995,4006 dc.w 4016,4026,4035,4043,4051,4058,4064,4070 dc.w 4075,4080,4084,4087,4090,4092,4094,4095 FMRKpt3.0.s ***************************************************************** * »» Protracker 3.00B playroutine «« * * Written by Tom "Outland" Bech and Ivar "Heatseeker" J. Olsen. * * Based upon Protracker 1.1A playroutine written by Lars Hamre. * * VBlank version. Not optimised in any way. * ***************************************************************** * Call pt_InitMusic before start. Then call pt_PlayMusic at VB. * * To stop the music, call pt_StopMusic. * * Please note that in this version, all SetTempo commands are * * ignored. This assembly language program has been tested with * * the Devpac 3.0, AsmOne 1.2, MCAsm 1.5 and a68k assemblers and * * may have to be modified for other assemblers. * ***************************************************************** ; FileFormat offsets sd_songname EQU 0 ;songname offset sd_sampleinfo EQU 20 ;first sample starts here sd_numofpatt EQU 950 ;number of patterns are stored here sd_pattpos EQU 952 ;pattern positions table is here sd_mahokakt EQU 1080 ;"M.K." :) sd_patterndata EQU 1084 ;first pattern starts at this position ; Song offsets. W/L/B means word/longword/byte length. n_note EQU 0 ;W n_cmd EQU 2 ;W n_cmdlo EQU 3 ;low B of cmd n_start EQU 4 ;L n_length EQU 8 ;W n_loopstart EQU 10 ;L n_replen EQU 14 ;W n_period EQU 16 ;W n_finetune EQU 18 ;B n_volume EQU 19 ;B n_dmabit EQU 20 ;W n_toneportdirec EQU 22 ;B n_toneportspeed EQU 23 ;B n_wantedperiod EQU 24 ;W n_vibratocmd EQU 26 ;B n_vibratopos EQU 27 ;B n_tremolocmd EQU 28 ;B n_tremolopos EQU 29 ;B n_wavecontrol EQU 30 ;B n_glissfunk EQU 31 ;B n_sampleoffset EQU 32 ;B n_pattpos EQU 33 ;B n_loopcount EQU 34 ;B n_funkoffset EQU 35 ;B n_wavestart EQU 36 ;L n_reallength EQU 40 ;W n_trigger EQU 42 ;B n_samplenum EQU 43 ;B pt_InitMusic MOVEM.L D0-D3/A0-A2,-(SP) LEA pt_data,a0 MOVE.L A0,pt_SongDataPtr LEA sd_pattpos(A0),A1 MOVEQ #128-1,D0 MOVEQ #0,D1 MOVEQ #0,D2 moveq #$1e,d3 pt_lop2 MOVE.B (A1)+,D1 CMP.B D2,D1 BLE.B pt_lop MOVE.L D1,D2 pt_lop DBRA D0,pt_lop2 ADDQ.W #1,d2 ASL.L #8,D2 ASL.L #2,D2 LEA 4(A1,D2.L),A2 LEA pt_SampleStarts(PC),A1 ADD.W #2*20+2,A0 ;find first sample length MOVEQ #31-1,D0 pt_lop3 MOVE.L A2,(A1)+ MOVEQ #0,D1 MOVE.W (A0),D1 ASL.L #1,D1 ADD.L D1,A2 ADD.L D3,A0 DBRA D0,pt_lop3 MOVE.B #6,pt_Speed ;default speed OR.B #2,$BFE001 MOVEQ #0,D0 LEA $DFF000,A0 MOVE.W D0,$A8(A0) MOVE.W D0,$B8(A0) MOVE.W D0,$C8(A0) MOVE.W D0,$D8(A0) CLR.B pt_SongPos CLR.B pt_Counter CLR.B pt_PattPos MOVEM.L (SP)+,D0-D3/A0-A2 RTS pt_StopMusic MOVEM.L D0/A0,-(SP) MOVEQ #0,D0 LEA $DFF000,A0 MOVE.W D0,$A8(A0) MOVE.W D0,$B8(A0) MOVE.W D0,$C8(A0) MOVE.W D0,$D8(A0) MOVE.W #$000F,$DFF096 ;stop AudioDMA activity MOVEM.L (SP)+,D0/A0 RTS pt_PlayMusic MOVEM.L D0-D7/A0-A6,-(SP) MOVE.L pt_SongDataPtr(PC),A0 ADDQ.L #1,pt_Counter MOVE.L pt_Counter(PC),D0 CMP.L pt_CurrSpeed(PC),D0 BLO.B pt_NoNewNote CLR.L pt_Counter TST.B pt_PattDelayTime2 BEQ.B pt_GetNewNote BSR.B pt_NoNewAllChannels BRA.W pt_dskip pt_NoNewNote BSR.B pt_NoNewAllChannels BRA.W pt_NoNewPositionYet pt_NoNewAllChannels LEA pt_audchan1temp(PC),A6 LEA $DFF0A0,A5 BSR.W pt_CheckEffects LEA pt_audchan2temp(PC),A6 LEA $DFF0B0,A5 BSR.W pt_CheckEffects LEA pt_audchan3temp(PC),A6 LEA $DFF0C0,A5 BSR.W pt_CheckEffects LEA pt_audchan4temp(PC),A6 LEA $DFF0D0,A5 BRA.W pt_CheckEffects pt_GetNewNote LEA 12(A0),A3 LEA sd_pattpos(A0),A2 LEA sd_patterndata(A0),A0 MOVEQ #0,D1 MOVE.L pt_SongPosition(PC),D0 MOVE.B 0(a2,D0.W),D1 ASL.L #8,D1 ;*1024 ASL.L #2,D1 ADD.L pt_PatternPosition(PC),D1 MOVE.L D1,pt_PatternPtr CLR.W pt_DMACONtemp LEA $DFF0A0,A5 LEA pt_audchan1temp(PC),A6 MOVEQ #1,D2 BSR.W pt_PlayVoice MOVEQ #0,D0 MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) LEA $DFF0B0,A5 LEA pt_audchan2temp(PC),A6 MOVEQ #2,D2 BSR.B pt_PlayVoice MOVEQ #0,D0 MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) LEA $DFF0C0,A5 LEA pt_audchan3temp(PC),A6 MOVEQ #3,D2 BSR.B pt_PlayVoice MOVEQ #0,D0 MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) LEA $DFF0D0,A5 LEA pt_audchan4temp(PC),A6 MOVEQ #4,D2 BSR.B pt_PlayVoice MOVEQ #0,D0 MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) BRA.W pt_SetDMA pt_CheckMetronome CMP.B pt_MetroChannel,D2 BNE.W pt_Return MOVE.B pt_MetroSpeed,D2 BEQ.W pt_Return MOVE.L pt_PatternPosition,D3 LSR.L #4,D3 DIVU D2,D3 SWAP D3 TST.W D3 BNE.W pt_Return AND.L #$00000FFF,(A6) OR.L #$10D6F000,(A6) ;Play sample $1F at period $0D6 (214) RTS pt_PlayVoice TST.L (A6) BNE.B pt_plvskip BSR.W pt_PerNop pt_plvskip MOVE.L 0(a0,D1.L),(A6) ;Read one track from pattern BSR.B pt_CheckMetronome ADDQ.L #4,D1 MOVEQ #0,D2 MOVE.B n_cmd(A6),D2 ;Get lower 4 bits of instrument AND.B #$F0,D2 LSR.B #4,D2 MOVE.B (A6),D0 ;Get higher 4 bits of instrument AND.B #$F0,D0 OR.B D0,D2 TST.B D2 BEQ.B pt_SetRegisters ;Instrument was zero MOVEQ #0,D3 LEA pt_SampleStarts(PC),A1 MOVE D2,D4 MOVE.B D2,n_samplenum(A6) SUBQ.L #1,D2 LSL.L #2,D2 MULU #30,D4 MOVE.L 0(a1,D2.L),n_start(A6) MOVE.W 0(a3,D4.L),n_length(A6) MOVE.W 0(a3,D4.L),n_reallength(A6) MOVE.B 2(A3,D4.L),n_finetune(A6) MOVE.B 3(A3,D4.L),n_volume(A6) MOVE.W 4(A3,D4.L),D3 ;Get repeat TST.W D3 BEQ.B pt_NoLoop MOVE.L n_start(A6),D2 ;Get start ASL.W #1,D3 ADD.L D3,D2 ;Add repeat MOVE.L D2,n_loopstart(A6) MOVE.L D2,n_wavestart(A6) MOVE.W 4(A3,D4.L),D0 ;Get repeat ADD.W 6(A3,D4.L),D0 ;Add replen MOVE.W D0,n_length(A6) MOVE.W 6(A3,D4.L),n_replen(A6) ;Save replen BRA.B pt_SetRegisters pt_NoLoop MOVE.L n_start(A6),D2 ADD.L D3,D2 MOVE.L D2,n_loopstart(A6) MOVE.L D2,n_wavestart(A6) MOVE.W 6(A3,D4.L),n_replen(A6) ;Save replen pt_SetRegisters MOVE.W (A6),D0 AND.W #$0FFF,D0 BEQ.W pt_CheckMoreEffects ;If no note -> MOVE.W 2(A6),D0 AND.W #$0FF0,D0 CMP.W #$0E50,D0 ;finetune? BEQ.B pt_DoSetFineTune MOVE.B 2(A6),D0 AND.B #$0F,D0 CMP.B #3,D0 ;TonePortamento? BEQ.B pt_ChkTonePorta CMP.B #5,D0 ;TonePortamento + VolSlide? BEQ.B pt_ChkTonePorta CMP.B #9,D0 ;Sample Offset? BNE.B pt_SetPeriod BSR.W pt_CheckMoreEffects BRA.B pt_SetPeriod pt_DoSetFineTune BSR.W pt_SetFineTune BRA.B pt_SetPeriod pt_ChkTonePorta BSR.W pt_SetTonePorta BRA.W pt_CheckMoreEffects pt_SetPeriod MOVEM.L D0-D1/A0-A1,-(SP) MOVE.W (A6),D1 AND.W #$0FFF,D1 LEA pt_PeriodTable(PC),A1 MOVEQ #0,D0 MOVEQ #$24,D7 pt_ftuloop CMP.W 0(a1,D0.W),D1 BHS.B pt_ftufound ADDQ.L #2,D0 DBRA D7,pt_ftuloop pt_ftufound MOVEQ #0,D1 MOVE.B n_finetune(A6),D1 MULU #37*2,D1 ADD.L D1,A1 MOVE.W 0(a1,D0.W),n_period(A6) MOVEM.L (SP)+,D0-D1/A0-A1 MOVE.W 2(A6),D0 AND.W #$0FF0,D0 CMP.W #$0ED0,D0 BEQ.W pt_CheckMoreEffects MOVE.W n_dmabit(A6),$DFF096 BTST #2,n_wavecontrol(A6) BNE.B pt_vibnoc CLR.B n_vibratopos(A6) pt_vibnoc BTST #6,n_wavecontrol(A6) BNE.B pt_trenoc CLR.B n_tremolopos(A6) pt_trenoc MOVE.W n_length(A6),4(A5) ;Set length MOVE.L n_start(A6),(A5) ;Set start BNE.B pt_sdmaskp CLR.L n_loopstart(A6) MOVEQ #1,D0 MOVE.W D0,4(A5) MOVE.W D0,n_replen(A6) pt_sdmaskp MOVE.W n_period(A6),D0 MOVE.W D0,6(A5) ;Set period ST n_trigger(A6) MOVE.W n_dmabit(A6),D0 OR.W D0,pt_DMACONtemp BRA.W pt_CheckMoreEffects pt_SetDMA move.b pt_timeout,$bfe701 ;TimerB HI move.b pt_timeout+1,$bfe601 ;TimerB LO move.b #%000011001,$bfef01 ;set commandbits: OneShot & CLK & Start pt_timerwait1 btst #0,$bfef01 ;timeout on timerB? (ICR TimerB) bne.s pt_timerwait1 ;nope... MOVE.W pt_DMACONtemp,D0 AND.W pt_ActiveChannels,D0 ;mask out inactive channels OR.W #$8000,D0 MOVE.W D0,$DFF096 move.b pt_timeout,$bfe701 ;TimerB HI move.b pt_timeout+1,$bfe601 ;TimerB LO move.b #%000011001,$bfef01 ;set commandbits: OneShot & CLK & Start pt_timerwait2 btst #0,$bfef01 ;timeout on timerB? (ICR TimerB) bne.s pt_timerwait2 ;nope... LEA $DFF000,A5 LEA pt_audchan4temp(PC),A6 MOVE.L n_loopstart(A6),$D0(A5) MOVE.W n_replen(A6),$D4(A5) LEA pt_audchan3temp(PC),A6 MOVE.L n_loopstart(A6),$C0(A5) MOVE.W n_replen(A6),$C4(A5) LEA pt_audchan2temp(PC),A6 MOVE.L n_loopstart(A6),$B0(A5) MOVE.W n_replen(A6),$B4(A5) LEA pt_audchan1temp(PC),A6 MOVE.L n_loopstart(A6),$A0(A5) MOVE.W n_replen(A6),$A4(A5) pt_dskip ADD.L #16,pt_PatternPosition MOVE.B pt_PattDelayTime,D0 BEQ.B pt_dskpc MOVE.B D0,pt_PattDelayTime2 CLR.B pt_PattDelayTime pt_dskpc TST.B pt_PattDelayTime2 BEQ.B pt_dskpa SUBQ.B #1,pt_PattDelayTime2 BEQ.B pt_dskpa SUB.L #16,pt_PatternPosition pt_dskpa TST.B pt_PBreakFlag BEQ.B pt_nnpysk SF pt_PBreakFlag MOVEQ #0,D0 MOVE.B pt_PBreakPosition(PC),D0 LSL.W #4,D0 MOVE.L D0,pt_PatternPosition CLR.B pt_PBreakPosition pt_nnpysk CMP.L #1024,pt_PatternPosition BNE.B pt_NoNewPositionYet pt_NextPosition MOVEQ #0,D0 MOVE.B pt_PBreakPosition(PC),D0 LSL.W #4,D0 MOVE.L D0,pt_PatternPosition CLR.B pt_PBreakPosition CLR.B pt_PosJumpAssert ADDQ.L #1,pt_SongPosition AND.L #$7F,pt_SongPosition MOVE.L pt_SongPosition(PC),D1 MOVE.L pt_SongDataPtr(PC),A0 CMP.B sd_numofpatt(A0),D1 BLO.B pt_NoNewPositionYet CLR.L pt_SongPosition pt_NoNewPositionYet TST.B pt_PosJumpAssert BNE.B pt_NextPosition MOVEM.L (SP)+,D0-D7/A0-A6 RTS pt_CheckEffects BSR.B pt_chkefx2 MOVEQ #0,D0 MOVE.B n_volume(A6),D0 MOVE.W D0,8(A5) RTS pt_chkefx2 BSR.W pt_UpdateFunk MOVE.W n_cmd(A6),D0 AND.W #$0FFF,D0 BEQ.B pt_Return MOVE.B n_cmd(A6),D0 AND.B #$0F,D0 TST.B D0 BEQ.B pt_Arpeggio CMP.B #1,D0 BEQ.W pt_PortaUp CMP.B #2,D0 BEQ.W pt_PortaDown CMP.B #3,D0 BEQ.W pt_TonePortamento CMP.B #4,D0 BEQ.W pt_Vibrato CMP.B #5,D0 BEQ.W pt_TonePlusVolSlide CMP.B #6,D0 BEQ.W pt_VibratoPlusVolSlide CMP.B #$E,D0 BEQ.W pt_ECommands pt_SetBack MOVE.W n_period(A6),6(A5) CMP.B #7,D0 BEQ.W pt_Tremolo CMP.B #$A,D0 BEQ.W pt_VolumeSlide pt_Return RTS pt_PerNop MOVE.W n_period(A6),6(A5) RTS pt_Arpeggio MOVEQ #0,D0 MOVE.L pt_Counter(PC),D0 DIVS #3,D0 SWAP D0 CMP.W #1,D0 BEQ.B pt_Arpeggio1 CMP.W #2,D0 BEQ.B pt_Arpeggio2 pt_Arpeggio0 MOVE.W n_period(A6),D2 BRA.B pt_ArpeggioSet pt_Arpeggio1 MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 LSR.B #4,D0 BRA.B pt_ArpeggioFind pt_Arpeggio2 MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B #15,D0 pt_ArpeggioFind ASL.W #1,D0 MOVEQ #0,D1 MOVE.B n_finetune(A6),D1 MULU #37*2,D1 LEA pt_PeriodTable(PC),A0 ADD.L D1,A0 MOVEQ #0,D1 MOVE.W n_period(A6),D1 MOVEQ #$24,D7 pt_arploop MOVE.W 0(a0,D0.W),D2 CMP.W (A0),D1 BHS.B pt_ArpeggioSet ADDQ.L #2,A0 DBRA D7,pt_arploop RTS pt_ArpeggioSet MOVE.W D2,6(A5) RTS pt_FinePortaUp TST.L pt_Counter BNE.B pt_Return MOVE.B #$0F,pt_LowMask pt_PortaUp MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 AND.B pt_LowMask,D0 MOVE.B #$FF,pt_LowMask SUB.W D0,n_period(A6) MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 CMP.W #$0071,D0 BPL.B pt_PortaUskip AND.W #$F000,n_period(A6) OR.W #$0071,n_period(A6) pt_PortaUskip MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 MOVE.W D0,6(A5) RTS pt_FinePortaDown TST.L pt_Counter BNE.W pt_Return MOVE.B #$0F,pt_LowMask pt_PortaDown CLR.W D0 MOVE.B n_cmdlo(A6),D0 AND.B pt_LowMask,D0 MOVE.B #$FF,pt_LowMask ADD.W D0,n_period(A6) MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 CMP.W #$0358,D0 BMI.B pt_Portadskip AND.W #$F000,n_period(A6) OR.W #$0358,n_period(A6) pt_Portadskip MOVE.W n_period(A6),D0 AND.W #$0FFF,D0 MOVE.W D0,6(A5) RTS pt_SetTonePorta MOVE.L A0,-(SP) MOVE.W (A6),D2 AND.W #$0FFF,D2 MOVEQ #0,D0 MOVE.B n_finetune(A6),D0 MULU #37*2,D0 LEA pt_PeriodTable(PC),A0 ADD.L D0,A0 MOVEQ #0,D0 pt_StpLoop CMP.W 0(a0,D0.W),D2 BHS.B pt_StpFound ADDQ.W #2,D0 CMP.W #37*2,D0 BLO.B pt_StpLoop MOVEQ #35*2,D0 pt_StpFound MOVE.B n_finetune(A6),D2 AND.B #8,D2 BEQ.B pt_StpGoss TST.W D0 BEQ.B pt_StpGoss SUBQ.W #2,D0 pt_StpGoss MOVE.W 0(a0,D0.W),D2 MOVE.L (SP)+,A0 MOVE.W D2,n_wantedperiod(A6) MOVE.W n_period(A6),D0 CLR.B n_toneportdirec(A6) CMP.W D0,D2 BEQ.B pt_ClearTonePorta BGE.W pt_Return MOVE.B #1,n_toneportdirec(A6) RTS pt_ClearTonePorta CLR.W n_wantedperiod(A6) RTS pt_TonePortamento MOVE.B n_cmdlo(A6),D0 BEQ.B pt_TonePortNoChange MOVE.B D0,n_toneportspeed(A6) CLR.B n_cmdlo(A6) pt_TonePortNoChange TST.W n_wantedperiod(A6) BEQ.W pt_Return MOVEQ #0,D0 MOVE.B n_toneportspeed(A6),D0 TST.B n_toneportdirec(A6) BNE.B pt_TonePortaUp pt_TonePortaDown ADD.W D0,n_period(A6) MOVE.W n_wantedperiod(A6),D0 CMP.W n_period(A6),D0 BGT.B pt_TonePortaSetPer MOVE.W n_wantedperiod(A6),n_period(A6) CLR.W n_wantedperiod(A6) BRA.B pt_TonePortaSetPer pt_TonePortaUp SUB.W D0,n_period(A6) MOVE.W n_wantedperiod(A6),D0 CMP.W n_period(A6),D0 BLT.B pt_TonePortaSetPer MOVE.W n_wantedperiod(A6),n_period(A6) CLR.W n_wantedperiod(A6) pt_TonePortaSetPer MOVE.W n_period(A6),D2 MOVE.B n_glissfunk(A6),D0 AND.B #$0F,D0 BEQ.B pt_GlissSkip MOVEQ #0,D0 MOVE.B n_finetune(A6),D0 MULU #37*2,D0 LEA pt_PeriodTable(PC),A0 ADD.L D0,A0 MOVEQ #0,D0 pt_GlissLoop CMP.W 0(a0,D0.W),D2 BHS.B pt_GlissFound ADDQ.W #2,D0 CMP.W #37*2,D0 BLO.B pt_GlissLoop MOVEQ #35*2,D0 pt_GlissFound MOVE.W 0(a0,D0.W),D2 pt_GlissSkip MOVE.W D2,6(A5) ;Set period RTS pt_Vibrato MOVE.B n_cmdlo(A6),D0 BEQ.B pt_Vibrato2 MOVE.B n_vibratocmd(A6),D2 AND.B #$0F,D0 BEQ.B pt_vibskip AND.B #$F0,D2 OR.B D0,D2 pt_vibskip MOVE.B n_cmdlo(A6),D0 AND.B #$F0,D0 BEQ.B pt_vibskip2 AND.B #$0F,D2 OR.B D0,D2 pt_vibskip2 MOVE.B D2,n_vibratocmd(A6) pt_Vibrato2 MOVE.L A4,-(SP) MOVE.B n_vibratopos(A6),D0 LEA pt_VibratoTable(PC),A4 LSR.W #2,D0 AND.W #$001F,D0 MOVEQ #0,D2 MOVE.B n_wavecontrol(A6),D2 AND.B #$03,D2 BEQ.B pt_vib_sine LSL.B #3,D0 CMP.B #1,D2 BEQ.B pt_vib_rampdown MOVE.B #255,D2 BRA.B pt_vib_set pt_vib_rampdown TST.B n_vibratopos(A6) BPL.B pt_vib_rampdown2 MOVE.B #255,D2 SUB.B D0,D2 BRA.B pt_vib_set pt_vib_rampdown2 MOVE.B D0,D2 BRA.B pt_vib_set pt_vib_sine MOVE.B 0(A4,D0.W),D2 pt_vib_set MOVE.B n_vibratocmd(A6),D0 AND.W #15,D0 MULU D0,D2 LSR.W #7,D2 MOVE.W n_period(A6),D0 TST.B n_vibratopos(A6) BMI.B pt_VibratoNeg ADD.W D2,D0 BRA.B pt_Vibrato3 pt_VibratoNeg SUB.W D2,D0 pt_Vibrato3 MOVE.W D0,6(A5) MOVE.B n_vibratocmd(A6),D0 LSR.W #2,D0 AND.W #$003C,D0 ADD.B D0,n_vibratopos(A6) MOVE.L (SP)+,A4 RTS pt_TonePlusVolSlide BSR.W pt_TonePortNoChange BRA.W pt_VolumeSlide pt_VibratoPlusVolSlide BSR.B pt_Vibrato2 BRA.W pt_VolumeSlide pt_Tremolo MOVE.L A4,-(SP) MOVE.B n_cmdlo(A6),D0 BEQ.B pt_Tremolo2 MOVE.B n_tremolocmd(A6),D2 AND.B #$0F,D0 BEQ.B pt_treskip AND.B #$F0,D2 OR.B D0,D2 pt_treskip MOVE.B n_cmdlo(A6),D0 AND.B #$F0,D0 BEQ.B pt_treskip2 AND.B #$0F,D2 OR.B D0,D2 pt_treskip2 MOVE.B D2,n_tremolocmd(A6) pt_Tremolo2 MOVE.B n_tremolopos(A6),D0 LEA pt_VibratoTable(PC),A4 LSR.W #2,D0 AND.W #$001F,D0 MOVEQ #0,D2 MOVE.B n_wavecontrol(A6),D2 LSR.B #4,D2 AND.B #$03,D2 BEQ.B pt_tre_sine LSL.B #3,D0 CMP.B #1,D2 BEQ.B pt_tre_rampdown MOVE.B #255,D2 BRA.B pt_tre_set pt_tre_rampdown TST.B n_vibratopos(A6) BPL.B pt_tre_rampdown2 MOVE.B #255,D2 SUB.B D0,D2 BRA.B pt_tre_set pt_tre_rampdown2 MOVE.B D0,D2 BRA.B pt_tre_set pt_tre_sine MOVE.B 0(A4,D0.W),D2 pt_tre_set MOVE.B n_tremolocmd(A6),D0 AND.W #15,D0 MULU D0,D2 LSR.W #6,D2 MOVEQ #0,D0 MOVE.B n_volume(A6),D0 TST.B n_tremolopos(A6) BMI.B pt_TremoloNeg ADD.W D2,D0 BRA.B pt_Tremolo3 pt_TremoloNeg SUB.W D2,D0 pt_Tremolo3 BPL.B pt_TremoloSkip CLR.W D0 pt_TremoloSkip CMP.W #$40,D0 BLS.B pt_TremoloOk MOVE.W #$40,D0 pt_TremoloOk MOVE.W D0,8(A5) MOVE.B n_tremolocmd(A6),D0 LSR.W #2,D0 AND.W #$003C,D0 ADD.B D0,n_tremolopos(A6) MOVE.L (SP)+,A4 ADDQ.L #4,SP RTS pt_SampleOffset MOVEQ #0,D0 MOVE.B n_cmdlo(A6),D0 BEQ.B pt_sononew MOV