headline
Screenshot Amiga Demo: Silents | Danish Quality

Danish Quality

Silents

Demo 1990


Code: Mr. Perfect
Grafik: Mikael Balle
Sound: Jesper Kyd


Auf Stolen Data #1


Amiga Diskfile Image (ADF)

Downloadcode eingeben:

Downloadcode


Textauszug generiert aus ADF-Image:

(Text gehört zur ganzen Disk, nicht immer zwangsläufig zum angezeigten Demo!)


| include source/customregisters | ;------ copy bobs into bobmem -------- | move #memforbobs/225/16,d0 | lea ball,a1 | lea mask,a3 | ;------- create second ypos ----------- | lea ypos2,a0 | ;--------- switch copper dma ---------- | lea spr0data,a0 | ;---------- demo loop -------- | ;----------- move the bobs ----------- | eor d0,bobplst+2 | eor d0,bobplst+10 | eor d0,bobbank+2 | lea xpos(pc),a5 | lea shift(pc),a6 | rept nobobs | ;--------- end program ------------ | ;---- restore old copper list ----- | mov $fac1,diwstop | mov 40,bpl1mod | mov 40,bpl2mod | mov 0,bplcon1 | mov 0,bplcon2 | mov 0,bplcon0 | clsize equ clend-clstart | ;-------- various table etc. --------- | ypos1 incbin binary/ypos | incbin binary/ypos | ypos2 incbin binary/ypos | incbin binary/ypos | xpos incbin binary/xpos | incbin binary/xpos | shift incbin binary/shifts | incbin binary/shifts | ;--------- bob data ------------- | ball incbin binary/balls | mask incbin binary/mask | incbin binary/bob | mov $4081,diwstrt ;define the screen window as | mov $08c1,diwstop ;320 x 200 starting on line 80 | mov 0,bplcon1 ;no scrolling | mov 0,bplcon2 ;clear bitplane/sprite priorities | mov 40,bpl1mod ;we want the bitplanes to be arranged | mov 40,bpl2mod ;side by side for faster bob plo | mov 0,bpl1ptl ;set the start of the screen | mov 7,bpl1pth ;memory (must be placed in a | mov 40,bpl2ptl ;copperlist as it needs to be | mov 7,bpl2pth ;set every frame) | mov $2200,bplcon0 ;we want a 2 bitplane, single playfield | mov $000,color00 ;black background | mov $00f,color01 ;shades of blue for the balls | wait 254,255 ;wait for an impossible position | ;tells the copper, this is the end | ;of the copperlist | mov $4081,diwstrt ;define the screen window as | mov $08c1,diwstop ;320 x 200 starting on line 80 | mov 0,bplcon1 ;no scrolling | mov 0,bplcon2 ;clear bitplane/sprite priorities | mov 40,bpl1mod ;we want the bitplanes to be arranged | mov 40,bpl2mod ;side by side for faster bob plo | s out. see the 196 bob source for | ;an example of how far you can take this. also | ;i have not used double buffering which is | ;essential for a large number of bobs. | move #length*no_pln*64+width/2,bltsize | x ;the right place | or.l #$fe20000,d0 ;use all 4 channels and set the | ;minterms for bob use. | move #length*no_pln*64+width/2,bltsize ;blit the bob | rts ;this bob routine is not particularly fast | ;for instance in a demo you would create tables | ;for x,y position conversions, also some of the | ;blitter registers do not need to be changed | ;when plotting a new bob, but as this is supposed | ;to be a general bob routine i left these | .c before being | ;sent back to the screen. | move.l bob_pt(pc),bltapth ;ch.a is used for the bob data | move.l msk_pt(pc),bltbpth ;ch.b used for the mask,only a&b | ;can be shifted remember | move.l #$ffff0000,bltafwm ;mask out the last word from a | clr bltamod ;move back a word | move #scr_width-width,bltcmod ;move on to next screen | move #scr_width-width,bltdmod ;line | move d2,d0 ;this gets the a-b shift value into | add d0,d0 ;find which word to start drawing the bob on | mulu #80,d1 ;find the screenline to start | ;drawing the bob | move.l bob_scr(pc),a0 ;start of the screen | lea (a0,d0),a0 ;a0 now has the first word to which | ;we want to copy the bob | move.l a0,bltcpth ;ch.c reads the screen data, ch a is | ;masked with ch.b, and the masked | ;area copied onto ch | sub d0,xpos | move pointer(pc),d2 | move xpos(pc),(a0,d2) | move ypos(pc),(a1,d2) | ;--------- bob routine ---------- | no_pln = 2 ;number of screen bitplanes | move last_posy(pc),d0 | move joy0dat,d1 | move d1,last_posy | sub d0,ypos | move last_posx(pc),d0 | move joy0dat,d1 | move d1,last_posx | lea width(a0),a0 | lea width(a1),a1 | lea width(a2),a2 | lea width(a3),a3 | ;-- reset the mouse counters | move joy0dat,d0 | move d0,last_posx | move d1,last_posy | move.l #clstart,cop1lc ;start up my own copperlist | ;--------- mouse routine ---------- | lea spr0data,a0 ;now clear all sprite data to eliminate | moveq #7,d0 ;the lines you occasionaly get if you | clr.l (a0) ;clear both data words simultaneously | ;-- clear the screen | ;-- create the mask | lea bob_data(pc),a0 | lea width(a0),a1 | lea bob_mask(pc),a2 | lea width(a2),a3 | move #length-1,d1 | move #width/2-1,d0 | n---- restore old copper list ----------- | jsr oldopenlibrary(a6) ;open the graphics library | move.l startlist(a4),cop1lc ;restore the old copperlist | jsr enable(a6) ;re-enable the interrupts | clr.l d0 ;no return-code errors | ;-------- setup routine ---------- | move.w #$8780,dmacon ;make sure copper,blitter and other | ;dma is switched on. | move.w #$0020,dmacon ;turn o | ;-- check the mouse and update the bob position accordingly | ;-- now plot the bobs in their new positions | move pointer(pc),d6 | btst #6,ciaapra ;have you pressed the left button | wable = -$7e ;enable interrupts,including multitasking | startlist = 38 ;the standard workbench copperlist. | execbase = 4 ;a pointer to the exec library which | ;contains all the fundamental operating | ;system routines. | jsr disable(a6) ;disable interrupts | ;------ wait for vertical position 1 -------- | wait move.l vposr,d2 | ;-- clear the previous bobs | ciaapra = $bfe001 ;cia port a register, bit 6 is used for | ;the left mouse button, and bit 1 toggles | ;the power led which is connected to the | ;low pass filter | oldopenlibrary = -$198 ;open a library of functions, a pointer | ;to the library name is sent in a1, | ;ignores the library version no. | disable = -$78 ;switch off interrupts,and multitasking | ;( taskswitching occurs in the vertical | ;blanking interrupt ) | include source/customregisters | ;-- customregisters is an include file which defines all the custom | ;-- chip registers i use and also creates three macros which make | ;-- creating copperlists much easier ( mov, wait, skip ) | ***** sorry but these examples will only work with devpac ii ****** | ***** despite what i said in the magazine ****** | lea mt_samples(pc),a1 | lea mt_aud4temp(pc),a6 | lea mt_aud3temp(pc),a6 | lea mt_aud2temp(pc),a6 | lea mt_aud1temp(pc),a | lea mt_data,a0 | lea mt_aud1temp(pc),a6 | lea mt_aud2temp(pc),a6 | lea mt_aud3temp(pc),a6 | lea mt_arpeggio(pc),a0 | mt_arp3:lea mt_aud4temp(pc),a6 | beq mt_arpegrt | ; the playroutine - call this every frame | lea mt_aud1temp(pc),a6 | mt_arp1:lea mt_aud2temp(pc),a6 | mt_arp2:lea mt_aud3temp(pc),a6 | lea mt_sample1(pc),a0 | ; call 'mt_end' to switch the sound off | ; call 'mt_init' to initialize the playroutine | mt_init:lea mt_data,a0 | lea mt_data,a0 | lea mt_sample1(pc),a1 | er, this is the end | ;of the copperlist | incbin binary/bob | incbin binary/sin | mov $4081,diwstrt ;define the screen window as | mov $08c1,diwstop ;320 x 200 starting on line 80 | mov 0,bplcon1 ;no scrolling | mov 0,bplcon2 ;clear bitplane/sprite priorities | mov 40,bpl1mod ;we want the bitplanes to be arranged | ,bpl2mod ;side by side for faster bob plotting | mov 0,bpl1ptl ;set the start of the screen | mov 7,bpl1pth ;memory (must be placed in a | mov 40,bpl2ptl ;copperlist as it needs to be | mov 7,bpl2pth ;set every frame) | mov $2200,bplcon0 ;we want a 2 bitplane, single playfield | mov $000,color00 ;black background | mov $900,color01 ;shades of red for the balls | wait 254,255 ;wait for an impossible position | ;tells the copp | mov $4081,diwstrt ;define the screen window as | mov $08c1,diwstop ;320 x 200 starting on line 80 | mov 0,bplcon1 ;no scrolling | mov 0,bplcon2 ;clear bitplane/sprite priorities | mov 40,bpl1mod ;we want the bitplanes to be arranged | ;i have not used double buffering which is | ;essential for a large number of bobs. | move #length*no_pln*64+width/2,bltsize | ;minterms for bob use. | move #length*no_pln*64+width/2,bltsize ;blit the bob | rts ;this bob routine is not particularly fast | ;for instance in a demo you would create tables | ;for x,y position conversions, also some of the | ;blitter registers do not need to be changed | ;when plotting a new bob, but as this is supposed | ;to be a general bob routine i left these | ;optimisations out. see the 196 bob source for | ;an example of how far you can take this | ^b_pt(pc),bltapth ;ch.a is used for the bob data | move.l msk_pt(pc),bltbpth ;ch.b used for the mask,only a&b | ;can be shifted remember | move.l #$ffff0000,bltafwm ;mask out the last word from a | move #scr_width-width,bltcmod ;move on to next screen | move #scr_width-width,bltdmod ;line | move d2,d0 ;this gets the a-b shift value into | ;the right place | or.l #$fe20000,d0 ;use all 4 channels and set the | no_pln = 2 ;number of screen bitplanes | add d0,d0 ;find which word to start drawing the bob on | mulu #80,d1 ;find the screenline to start | ;drawing the bob | move.l bob_scr(pc),a0 ;start of the screen | lea (a0,d0),a0 ;a0 now has the first word to which | ;we want to copy the bob | move.l a0,bltcpth ;ch.c reads the screen data | add #x_add1*2,d0 ;update the sine_pointers | and #$1fe,d0 ;for the next bob | ;--------- bob routine ---------- | move x_pt1(pc),d0 ;update the sine-pointers | move (a0,d0),d5 ;the sine-table ranges from -32768 | ;--------- sine bob calculate --------- | ; this is a very slow sine-bob routine, but it is | ; intentional as i think it is easier to understand | ; this way. you will soon find ways of increasing | ; the speed yourself. | lea sintable(pc),a0 | move.l xa(pc),d0 ;swap the sine pointer | ;-- clear the previous bobs | ;-- calculate the new sine-positions | ;-- now plot the bobs in their new positions | or (a1)+,d2 ;to determine its outline for the mask | lea width(a0),a0 | lea width(a1),a1 | lea width(a2),a2 | lea width(a3),a3 | move.l #clstart,cop1lc ;start up my own copperlist | ;----- wait for the blitter to finish ----- | ;--------- the main demo routine ---------- | ;-- double buffer the pointers and screens | lea spr0data,a0 ;now clear all sprite data to eliminate | moveq #7,d0 ;the lines you occasionaly get if you | ;-- clear the screen | ;-- create the mask | lea bob_data(pc),a0 | lea width(a0),a1 | lea bob_mask(pc),a2 | lea width(a2),a3 | move #length-1,d1 | move #width/2-1,d0 | move (a0)+,d2 ;or the seperate bitplanes of the bob | ;------ restore old copper list ----------- | jsr oldopenlibrary(a6) ;open the graphics library | move.l startlist(a4),cop1lc ;restore the old copperlist | jsr enable(a6) ;re-enable the interrupts | clr.l d0 ;no return-code errors | ;-------- setup routine ---------- | move.w #$8780,dmacon ;make sure copper,blitter dma is on | move.w #$0020,dmacon ;turn off sprite dma | able = -$7e ;enable interrupts,including multitasking | startlist = 38 ;the standard workbench copperlist. | execbase = 4 ;a pointer to the exec library which | ;contains all the fundamental operating | ;system routines. | jsr disable(a6) ;disable interrupts | ;------ wait for vertical position 1 -------- | wait move.l vposr,d2 | btst #6,ciaapra ;have you pressed the left button | ciaapra = $bfe001 ;cia port a register, bit 6 is used for | ;the left mouse button, and bit 1 toggles | ;the power led which is connected to the | ;low pass filter | oldopenlibrary = -$198 ;open a library of functions, a pointer | ;to the library name is sent in a1, | ;ignores the library version no. | disable = -$78 ;switch off interrupts,and multitasking | ;( taskswitching occurs in the vertical | ;blanking interrupt ) | include source/customregisters | ;-- customregisters is an include file which defines all the custom | ;-- chip registers i use and also creates three macros which make | ;-- creating copperlists much easier ( mov, wait, skip ) | ***** sorry but these examples will only work with devpac ii ****** | ***** despite what i said in the magazine ****** | ;--------- bob data ------------- | ball incbin binary/balls | mask incbin binary/mask | mov 0,bplcon0 | clsize equ clend-clstart | ;-------- various table etc. --------- | ypos1 incbin binary/ypos | incbin binary/ypos | ypos2 incbin binary/ypos | incbin binary/ypos | xpos incbin binary/xpos | incbin binary/xpos | shift incbin binary/shifts | incbin binary/shifts | ;--------- bob data ------------- | ball incbin binary/balls | mask incbin binary/mask | mov $fac1,diwstop | mov 40,bpl1mod | mov 40,bpl2mod | mov 0,bplcon1 | rept nobobs | ;--------- end program ------------ | ;---- restore old copper list ----- | lea xpos(pc),a5 | lea shift(pc),a6 | ;----------- move the bobs ----------- | eor d0,bobplst+2 | eor d0,bobplst+10 | eor d0,bobbank+2 | lea ball(pc),a1 | lea mask(pc),a3 | ;------- create second ypos ----------- | lea ypos2,a0 | ;--------- switch copper dma ---------- | lea spr0data,a0 | ;---------- demo loop | include source/customregisters | ;------ copy bobs into bobmem -------- | move #memforbobs/225/16,d0 | skip macro | temp set \2&$ff | temp set \1&$fe | ;macros to help in writing copperlists | temp set \2&$1fe | temp set \2&$ff | ;copper registers | ***** custom chip register table ***** | ;general registers | ;blitter registers | stolen data is an anarchy dcs tristar | we are proud to present to you this new | and original disk-paper magazine, if you | are not in possesion of the accompanying | paper magazine then you will find | details for obtaining this essential | partner, in the text section of the | k magazine. the aim of this mag, is | to exploit to the full the medium of | each component, therefore we will be | restricting the amount of text on the | disk and using it for more suitable | purposes such as demos/music/graphics | in fact anything which benefits from | this more visual of media. | right, thats enough of the waffle onto | your selections, use the mouse and left | button to select. | ---------- top three demos ----------- | 1> seven sins - scoopex finl | 2> danish quality - the silents | 3> der blockhaus - setrox | the selections were made by frap of | magnetic fields | > the crackers charts | look out for the demo/trainers/music & | graphics charts next issue. | > text magazine | inc. an article from count zero of the | rising force called 'telecommunications | in the near future', frap's demo reviews | + my own comments on his selecti | an update on the iguana music comp., the | beginning of a new classified ads. | section and finally my own article on | demo-coding which this month covers the | subject of bobs. | source for any of the examples can be | found in the source directory on this | well that's all for this issue,but don't | forget, send in your votes and if you | have anything which may be of interest | to us then send it in, all disks will be | in case you missed them here are the | addresses of myself ( kreator ) and | nosah (dave), kreator (michael) | 99 st lucia park, 42 browfield terr. | hope you enjoyed the first issue of | ----------- stolen data ----------- | watch out for the next issue in about | six weeks time. | well here we are with the first issue of stolen data | a little late but well worth the wait well this | disk will be winging its way to nosah for distribution | on monday so you should all be in | possesion of your | mags before the 16-bit show i should be there on | sunday ( propping up the bar no doubt ) so i hope to | meet a lot of new faces there. | credits for this part are as follows | absolutely everything by me ( kreator ), sorry | for the lack of music but i had a few problems | getting this menu to work with the seven sins demo | ( lack of memory i think ), despite the fact that i | was relinquising all memory before starting the load. | this will be rectified by next ti | mme this first issue | of the disk mag is a little empty ( although i still | managed to fill the disk ) but things should improve | once we establish ourselves. my coding | section this month covers bobs a very simple topic i know, but | its suprising the number of people i've had asking | me how to move bobs about the screen, so you will find | the source on this disk for a number of bob routines | ranging from the very simple to my 196 bob routine. | next month i will probably cover 3d g | raphics routines | including vectors, (a simple form of) hidden-line removal | and vector bobs. i am always on the | lookout for new, cool contacts, if you want to write | to me then you'll find my address in the text above. | i'll be back at university in a few days, back | to the life of drunkeness and debauchery ( wishful | thinking !! ) so i hope all my contacts take note of | this. i hope the house is still habitable, we had | an end of term party cum drinking session before i | , after about ten pints it was getting on for | one a'clock in the morning and we still had a full bottle | of whisky to finish, by this time there was only the | two of us left so we drank it between us. i dont remember | going to bed ( or puking my guts in the toilet, which | i've since been reliably informed i woke up the student | next door to the bathroom with my noisy vomming ) | but i do remember my mother coming to pick me up at | eleven in the morning, with the place in an absolute | wrry stains all over the kitchen and a stack of | beer cans and bottles littered about the place, and | me still recovering in bed. worse still we had a five | hour car journey to get home. nevertheless it still | wasn't as bad as the time i locked myself out of my | room after a party, i was so drunk i lost about two hours | of my life, the last moment i can remember was at about | midnight, the next thing i knew i was stood outside my | door without a key. it turns out i had gone back to my | r some reason, puked on the floor dropping my keys | at the same time then walked back out without the keys. | and people say we students are a bunch of dossers. | well i must dash now, things to do etc... | so until the next issue of stolen data ( or the | forthcoming anarchy megademo whichever is the sooner )

Amiga Demo Archiv


bottom