Preview
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