Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; DEPECHE TUFF VIDEO PRODUCTIONS!
- org $200
- load $40000
- datastart = $7f210 ;
- fontb = $3b200 ; fontbase
- bpsize = 100*40 ; ballplane size
- llen = 54 ; line width
- tpsize = 80*llen ; tuff line planesize
- bplane1 = fontb-[2*bpsize+tpsize] ; 1st ballplane
- bplane2 = bplane1+bpsize ; 2nd ballplane
- clistsize = $10a0 ; clist lenght
- copper = datastart-clistsize ; clist start
- height = 46 ; used in spin routine
- center = 63 ; used in spin routine
- psize = 110*40 ;
- plane0 = bplane1-[4*psize] ; 1st DEPECHE plane
- plane1 = plane0+psize ; 2nd
- plane2 = plane1+psize ; 3rd
- plane3 = plane2+psize ; 4th
- astart = $31d8 ; animation start
- tplane = bplane2+bpsize ; line plane
- xstart = -20 ; xpos of first letter
- nlet = 12 ; number of letters
- textypos = 16 ; ypos of line
- posm = textypos+60 ; mirror position
- mt_data = $15220 ; muzakdata
- lea $dff000,a6 ;
- lea $39f80,a0 ; copy fix chars and rotcode
- lea $7cf00,a1 ;
- move.w #3786/4-1,d0 ;
- cop1: move.l (a0)+,(a1)+ ;
- dbf d0,cop1 ;
- jsr $7da40 ; create font
- bsr.L mt_init ;
- bsr.L initb ; init balls
- bsr.L initr ; init tuff video
- bsr.L init ; init clist
- bsr.L init20 ; init stars
- move.l #l3init,$6c.w ;
- pea return(pc) ; comeback address
- move.w #$8020,$9c(a6) ; request vbint
- move.w #$c020,$9a(a6) ;
- freez2: bra.s freez2 ; do nothing
- return: move.l #copper,$84(a6) ;
- move.l #copper,$80(a6) ;
- tst.l $88(a6) ;
- move.w #$c000,$9a(a6) ; re-allow int
- freez: cmp.b #-1,$dff006 ;
- bne.s freez ;
- bsr.l mt_music ;
- move.b $dff006,d0 ;
- fr2: cmp.b $dff006,d0 ;
- beq.s fr2 ;
- bra.s freez ;
- *------ INIT COPPERLIST ---------------------------------------------*
- init: lea clist(pc),a0 ; copy clist
- move.l #copper,a1 ;
- bsr.L init12 ;
- lea starcol(pc),a2 ; star colours
- move.l #$0a07fffe,d1 ; first line
- moveq #10,d2 ;
- init3: move.l d1,(a1)+ ;
- move.w #$00e2,(a1)+ ;
- move.w #plane0,(a1)+ ;
- move.w #$00e6,(a1)+ ;
- move.w #plane1,(a1)+ ;
- move.w #$00ea,(a1)+ ;
- move.w #plane2,(a1)+ ;
- move.w #$00ee,(a1)+ ;
- move.w #plane3,(a1)+ ;
- move.w #$01a2,(a1)+ ; write star colour
- move.w (a2,d2.w),(a1)+ ;
- btst #24,d1 ; change all 2 lines colour
- beq.s init4 ;
- subq.w #2,d2 ; next colour
- bpl.s init4 ;
- moveq #10,d2 ;
- init4: add.l #$01000000,d1 ;
- cmp.l #$6607fffe,d1 ;
- bne.s init3 ;
- move.l #$01001200,(a1)+ ;
- move.l #$0104ffff,(a1)+ ; sprites infront planes
- move.l #$01820000,(a1)+ ; show nothing here
- init6: move.l d1,(a1)+ ;
- cmp.l #$0c07fffe,d1 ;
- bne.s init7 ;
- move.l #$01800005,(a1)+ ;
- init7: cmp.l #$7407fffe,d1 ;
- bne.s init5b ;
- lea clist3(pc),a0 ; copy balls clist
- bsr.L init12 ;
- init5b: cmp.l #$c807fffe,d1 ; dual playfield zone on
- bne.s init7b ;
- move.l #$c823fffe,-4(a1) ; crunch copper! ($1f)
- lea clist4(pc),a0 ;
- bsr.L init12 ;
- init7b: cmp.l #$d807fffe,d1 ; dual playfield zone off
- bne.s init7t ;
- lea clist2(pc),a0 ;
- bsr.L init12 ;
- init7t: move.w #$01a2,(a1)+ ;
- move.w (a2,d2.w),(a1)+ ;
- btst #24,d1 ;
- beq.s init8 ;
- subq.w #2,d2 ;
- bpl.s init8 ;
- moveq #10,d2 ;
- init8: add.l #$01000000,d1 ;
- cmp.l #$0007fffe,d1 ;
- bne.s init9 ;
- move.l #$ffdffffe,(a1)+ ; skip ntsc border
- init9: cmp.l #$1907fffe,d1 ;
- bne.L init6 ;
- move.l #$00e20000,d3 ; create mirror
- move.w #posm*llen+tplane,d3 ;
- move.l d1,(a1)+ ;
- move.l #$01820b08,(a1)+ ;
- subq.l #2,d2 ; equalize starcolour
- add.l #$01000000,d1 ;
- init10: move.l d1,(a1)+ ;
- move.l d3,(a1)+ ;
- move.w #$01a2,(a1)+ ;
- move.w (a2,d2.w),(a1)+ ;
- btst #24,d1 ;
- beq.s init11 ;
- subq.w #2,d2 ;
- bpl.s init11 ;
- moveq #10,d2 ;
- init11: add.l #$01000000,d1 ; wait next line
- sub.l #llen,d3 ;
- cmp.l #$2f07fffe,d1 ;
- bne.s init10 ;
- move.l #$01800000,(a1)+ ;
- move.l #$fffffffe,(a1)+ ; set endcode
- rts ;
- init12: move.l (a0)+,(a1)+ ; copy clist
- bne.s init12 ;
- subq.l #4,a1 ; equalize destination
- rts ;
- *------ INIT VERTICAL BLANKING INTERRUPT ----------------------------*
- l3init: move.w #$4000,$9a(a6) ;
- move.w #$0020,$9c(a6) ; kill request
- lea $80000,a7 ;
- lea newint(pc),a0 ;
- move.l a0,$6c.w ;
- move #$0,SR ; go into USER mode
- rts ;
- *------ NEW VERTICAL BLANKING ---------------------------------------*
- newint: movem.l a0-a6/d0-d7,-(a7) ; kill balls/scroll planes
- lea $dff000,a6 ;
- move.l #bplane1,$54(a6) ; destination D
- clr.l $64(a6) ; modulos a,d
- move.l #$01000000,$40(a6) ; bltcon0/1
- move.w #[308*64]+20,$58(a6) ; bltsize
- bsr.l spin ; spin DEPECHE sign
- bsr.l balls ;
- bsr.l flash ;
- bsr.l stars ; move stars
- bsr.s colour ;
- bsr.L bcols ; ball sequenzer
- movem.l (a7)+,a0-a6/d0-d7 ;
- move.w #$0020,$dff09c ;
- rte ;
- *------ COLOUR CYCLING ----------------------------------------------*
- colour: lea col1(pc),a0 ;
- add.l col2,a0 ;
- move.w (a0),d0 ;
- bne.s col3 ;
- clr.l col2 ;
- bra.s colour ;
- col3: move.w d0,copper+$cda ; change colour in dual zone
- move.w d0,copper+$d7e ; and in normal zone
- sub.w #$0444,d0 ;
- move.w d0,copper+$f92 ; in mirror zone
- moveq #0,d0 ;
- move.b flags+6,d0 ;
- add.l d0,col2 ; next colour
- rts ;
- col1: dc.w $0f4c,$0f4c,$0e4c,$0e4c,$0d4c,$0d4c,$0c4c,$0c4c
- dc.w $0b4c,$0b4c,$0a4c,$0a4c,$094c,$094c,$084c,$084c
- dc.w $074c,$074c,$084c,$084c,$094c,$094c,$0a4c,$0a4c
- dc.w $0b4c,$0b4c,$0c4c,$0c4c,$0d4c,$0d4c,$0e4c,$0e4c
- dc.w 0
- col2: dc.l 0
- *------ MEGA DEF POWER BALLS ---------------------------------------*
- bobheight = 15
- initb: move.l #astart,$100.w ;
- rts ;
- balls: move.w #$8400,$96(a6) ;
- wblit3: btst #14,$02(a6) ;
- bne.s wblit3 ;
- move.l #$ffff0000,$44(a6) ; FWM / LWM
- clr.w $42(a6) ; BLTCON1
- move.w #$24,$60(a6) ; backgr modulo
- move.w #24-4,$62(a6) ; image modulo
- move.w #24-4,$64(a6) ; mask modulo
- move.w #$24,$66(a6) ; dest modulo
- move.l $100.w,a1 ;
- add.l #60,$100.w ;
- mod1: cmp.l #astart+60,$100.w ;
- bne.s nxt ;
- mod2: move.l #astart,$100.w ;
- nxt: moveq #19,d2 ;
- loop: moveq #0,d0 ;
- moveq #0,d1 ;
- move.b (a1)+,d0 ;
- move.b (a1)+,d1 ;
- move.b (a1)+,d7 ;
- ext.w d7 ;
- add.w #45,d7 ;
- asr.w #3,d7 ;
- add.b #160,d0 ;
- add.b #43,d1 ;
- lea bplane1,a0 ; balls plane
- lea gb8(pc),a2 ; image
- add.w d7,d7 ;
- add.w d7,a2 ;
- lea 1*bobdlen(a2),a3 ; mask
- move.w d0,d5 ;
- and.w #$000f,d5 ; pixel shift
- ror.w #4,d5 ;
- move.w d5,d4 ;
- or.w #$0fca,d4 ; ABCD, AB or (-A)C
- muls #40,d1 ; line offset
- lsr.w #3,d0 ; make word offset
- and.w #$fffe,d0 ; in bytes
- lea (a0,d1.l),a4 ;
- add.w d0,a4 ; start address
- lea $40(a6),a5 ;
- move.w d4,(a5)+ ; BLTCON0 mask shift
- move.w d5,(a5)+ ; BLTCON1 image shift
- addq.l #4,a5 ;
- move.l a4,(a5)+ ; C background source
- move.l a2,(a5)+ ; B image
- move.l a3,(a5)+ ; A mask
- move.l a4,(a5)+ ; D destination
- move.w #[bobheight*64]+2,(a5) ; BLTSIZE & start
- add.w #bpsize,a4 ;
- move.l a4,$48(a6) ;
- move.l a4,$54(a6) ;
- move.w #[bobheight*64]+2,$58(a6); draw next plane
- dbf d2,loop ;
- rts ;
- bobdlen=720
- gb8: dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$00c0,$00c0,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0060,$0060,$0060,$00c0,$0060,$00c0,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$8000,$4000,$2030,$2060
- dc.w $1020,$1040,$0040,$0080,$0000,$0000,$0000,$0000
- dc.w $8000,$4000,$2000,$2000,$1000,$1000,$0800,$0800
- dc.w $0440,$0480,$0240,$0280,$c000,$6000,$2000,$2000
- dc.w $1000,$1000,$0800,$0800,$0400,$0400,$0200,$0200
- dc.w $c000,$6000,$2000,$2000,$1800,$1800,$0c00,$0c00
- dc.w $0600,$0600,$0300,$0300,$e000,$7000,$3000,$3000
- dc.w $1800,$1800,$0600,$0600,$0300,$0300,$01c0,$0180
- dc.w $7000,$3800,$1800,$1800,$0c00,$0c00,$0700,$0700
- dc.w $01c0,$0180,$0000,$0000,$7800,$3c00,$1c00,$1c00
- dc.w $0700,$0700,$01c0,$0180,$0000,$0000,$0000,$0000
- dc.w $3c00,$1e00,$0f00,$0f00,$03e0,$03c0,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$1f00,$0f00,$03e0,$03c0
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $07c0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$07c0,$03c0,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $1ff0,$0ff0,$03e0,$03c0,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$3ff8,$1ff8,$0ff8,$0ff0
- dc.w $03e0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $7ffc,$3ffc,$1ffc,$1ff8,$07f0,$07e0,$01c0,$0180
- dc.w $0000,$0000,$0000,$0000,$7ffc,$3ffc,$1ffc,$1ff8
- dc.w $0ff8,$0ff0,$07f0,$07e0,$01c0,$0180,$0000,$0000
- dc.w $7ffe,$3ffe,$1ffe,$1ffc,$0ffc,$0ff8,$07f0,$07e0
- dc.w $03e0,$03c0,$01c0,$0180,$7ffe,$3ffe,$1ffe,$1ffc
- dc.w $0ffc,$0ff8,$07f8,$07f0,$03f0,$03e0,$01e0,$01c0
- dc.w $3ffe,$1ffe,$1ffe,$1ffc,$0ffc,$0ff8,$07f8,$07f0
- dc.w $03f0,$03e0,$01e0,$01c0,$3ffe,$1ffe,$1ffe,$1ffc
- dc.w $07fc,$07f8,$03f8,$03f0,$01f0,$01e0,$00e0,$00c0
- dc.w $1ffe,$0ffe,$0ffe,$0ffc,$07fc,$07f8,$01f0,$01e0
- dc.w $00e0,$00c0,$0000,$0000,$0ffc,$07fc,$07fc,$07f8
- dc.w $03f8,$03f0,$00f0,$00e0,$0000,$0000,$0000,$0000
- dc.w $07fc,$03fc,$03fc,$03f8,$00f0,$00e0,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$03f8,$01f8,$00f8,$00f0
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $00f0,$00f0,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $07c0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$1ff0,$0ff0,$03e0,$03c0
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $3ff8,$1ff8,$0ff8,$0ff0,$03e0,$03c0,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$7ffc,$3ffc,$1ffc,$1ff8
- dc.w $07f0,$07e0,$01c0,$0180,$0000,$0000,$0000,$0000
- dc.w $7ffc,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0
- dc.w $01c0,$0180,$0000,$0000,$fffe,$7ffe,$3ffe,$3ffc
- dc.w $1ffc,$1ff8,$07f0,$07e0,$03e0,$03c0,$01c0,$0180
- dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0
- dc.w $07f0,$07e0,$03e0,$03c0,$fffe,$7ffe,$3ffe,$3ffc
- dc.w $1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0,$03e0,$03c0
- dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0
- dc.w $07f0,$07e0,$03e0,$03c0,$fffe,$7ffe,$3ffe,$3ffc
- dc.w $1ffc,$1ff8,$07f0,$07e0,$03e0,$03c0,$01c0,$0180
- dc.w $7ffc,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0
- dc.w $01c0,$0180,$0000,$0000,$7ffc,$3ffc,$1ffc,$1ff8
- dc.w $07f0,$07e0,$01c0,$0180,$0000,$0000,$0000,$0000
- dc.w $3ff8,$1ff8,$0ff8,$0ff0,$03e0,$03c0,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$1ff0,$0ff0,$03e0,$03c0
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $07c0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$07c0,$03c0,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $1ff0,$0ff0,$03e0,$03c0,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$3ff8,$1ff8,$0ff8,$0ff0
- dc.w $03e0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $7ffc,$3ffc,$1ffc,$1ff8,$07f0,$07e0,$01c0,$0180
- dc.w $0000,$0000,$0000,$0000,$7ffc,$3ffc,$1ffc,$1ff8
- dc.w $0ff8,$0ff0,$07f0,$07e0,$01c0,$0180,$0000,$0000
- dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$07f0,$07e0
- dc.w $03e0,$03c0,$01c0,$0180,$fffe,$7ffe,$3ffe,$3ffc
- dc.w $1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0,$03e0,$03c0
- dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0
- dc.w $07f0,$07e0,$03e0,$03c0,$fffe,$7ffe,$3ffe,$3ffc
- dc.w $1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0,$03e0,$03c0
- dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$07f0,$07e0
- dc.w $03e0,$03c0,$01c0,$0180,$7ffc,$3ffc,$1ffc,$1ff8
- dc.w $0ff8,$0ff0,$07f0,$07e0,$01c0,$0180,$0000,$0000
- dc.w $7ffc,$3ffc,$1ffc,$1ff8,$07f0,$07e0,$01c0,$0180
- dc.w $0000,$0000,$0000,$0000,$3ff8,$1ff8,$0ff8,$0ff0
- dc.w $03e0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $1ff0,$0ff0,$03e0,$03c0,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$07c0,$03c0,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
- ; length =$5a0
- *------ BALL ANIMATION SEQUENZER -----------------------------------*
- bcols: tst.b flags+7 ; new animation
- beq.L bend ;
- tst.w bcols4 ;
- beq.s bcols6 ;
- move.w #$0010,copper+$a06 ; sprites infront of balls
- bset #0,copper+$ce3 ; also in dual zone
- sub.w #1,bcols4 ;
- rts ;
- bcols6: clr.w copper+$a06 ; balls infront of sprites
- bclr #0,copper+$ce3 ;
- cmp.w #14*6,bcols2 ;
- bne.s bcols5 ;
- move.w #100,bcols4 ; delay between new anim
- moveq #0,d0 ;
- move.b flags+7,d0 ; set pointers to new
- asl.w #3,d0 ;
- lea anims(pc),a0 ; animation
- add.w d0,a0 ;
- move.l (a0),$100.w ;
- move.l (a0),mod2+2 ;
- move.l 4(a0),mod1+2 ;
- bcols5: lea bcols7(pc),a0 ; dawn in and out balls
- add.w bcols2,a0 ;
- add.w #6,bcols2 ;
- cmp.w #31*6,bcols2 ;
- bne.s bcols3 ;
- clr.w bcols2 ;
- clr.b flags+7 ; clear request
- bcols3: move.w (a0),copper+$9fa ; write colours
- move.w 2(a0),copper+$9fe ;
- move.w 4(a0),copper+$a02 ;
- bend: rts ;
- bcols4: dc.w 1050
- bcols2: dc.w 14*6
- anims: dc.l 0,0
- dc.l astart,astart+[360*60]
- dc.l astart+21600,astart+27000
- dc.l astart+27000,astart+34200
- dc.l astart+34200,astart+42840
- dc.l astart+42840,astart+51480
- dc.l astart+51480,astart+62280
- dc.l astart+62280,astart+69480
- dc.l astart+69480,astart+73800
- bcols7: dc.w $0007,$0005,$0ddd,$0007,$0005,$0ddd
- dc.w $0006,$0004,$0bbb,$0006,$0004,$0bbb
- dc.w $0005,$0003,$0999,$0005,$0003,$0999
- dc.w $0004,$0003,$0777,$0004,$0003,$0777
- dc.w $0003,$0002,$0555,$0003,$0002,$0555
- dc.w $0002,$0002,$0333,$0002,$0002,$0333
- dc.w $0001,$0001,$0222,$0001,$0001,$0222
- dc.w $0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0001,$0001,$0222,$0001,$0001,$0222
- dc.w $0002,$0002,$0333,$0002,$0002,$0333
- dc.w $0003,$0002,$0555,$0003,$0002,$0555
- dc.w $0004,$0003,$0777,$0004,$0003,$0777
- dc.w $0005,$0003,$0999,$0005,$0003,$0999
- dc.w $0006,$0004,$0bbb,$0006,$0004,$0bbb
- dc.w $0007,$0005,$0ddd,$0007,$0005,$0ddd
- dc.w $0008,$0006,$0fff,$0008,$0006,$0fff
- *------ SPIN DEPECHE SIGN -------------------------------------------*
- spin: move.w spin6,d6 ;
- lea flags(pc),a3 ; fetch spin speed
- moveq #0,d0 ;
- move.b 3(a3),d0 ;
- add.w d0,d6 ; even spin speed
- cmp.w #720,d6 ;
- blt.s spin2 ;
- moveq #0,d6 ;
- spin2: move.l #copper+cend-clist,a0 ;
- lea sine+180(pc),a1 ;
- move.w #-height+5,d1 ; get radius -R
- spin4: move.w d1,d3 ;
- add.w #height,d3 ; only positive line numbers
- mulu #40,d3 ; make line address offset
- add.w #plane0+40,d3 ; add base
- move.w (a1,d6.w),d0 ; get cos
- muls d1,d0 ; current radius*cos
- asr.l #8,d0 ;
- add.w #center,d0 ; vertical center
- mulu #24,d0 ; correct offset for clist
- cmp.w #$6507,(a0,d0.w) ; only till this line!
- bhi.s spin7 ;
- move.w (a0,d0.w),d7 ;
- cmp.b #$07,d7 ; no shit anymore!
- bne.s spin7 ;
- move.w d3,6(a0,d0.w) ; write plane pointers
- add.w #psize,d3 ;
- move.w d3,10(a0,d0.w) ;
- add.w #psize,d3 ;
- move.w d3,14(a0,d0.w) ;
- add.w #psize,d3 ;
- move.w d3,18(a0,d0.w) ;
- spin7: addq.w #1,d1 ; next line
- cmp.w #32,d1 ; loop until top line
- bne.s spin4 ; reached
- move.w d6,spin6 ; save cos pointer
- rts ;
- spin6: dc.w 0
- sprite1 = datastart
- spritepos = sprite1+1012
- starcount1 = spritepos+504
- starcount2 = starcount1+1
- starcount3 = starcount2+1
- dataend = starcount3
- *------ INIT STARS --------------------------------------------------*
- init20: lea datastart,a0 ;
- move.w #dataend-datastart/4-1,d0;
- init18: clr.l (a0)+ ;
- dbf d0,init18 ;
- lea flash-160(pc),a0 ; create sprite coords
- lea spritepos,a1 ;
- moveq #125,d0 ;
- init21: move.w (a0)+,d1 ;
- init22: cmp.w #448,d1 ;
- bls.s init13 ;
- sub.w #448,d1 ;
- bra.s init22 ;
- init13: cmp.w #128,d1 ;
- bhs.s init14 ;
- add.w #128,d1 ;
- bra.s init13 ;
- init14: move.w d1,(a1)+ ;
- dbf d0,init21 ;
- lea sprite1,a0 ; write start and end
- move.w #127,d0 ;
- moveq #46,d1 ;
- init15: move.w d1,d2 ;
- btst #8,d2 ;
- beq.s init16 ;
- bset #2,3(a0) ;
- init16: move.b d2,(a0) ;
- addq.w #1,d2 ;
- btst #8,d2 ;
- beq.s init17 ;
- bset #1,3(a0) ;
- init17: move.b d2,2(a0) ;
- bset #31,4(a0) ;
- addq.l #8,a0 ;
- addq.w #2,d1 ;
- dbf d0,init15 ;
- move.l #$04030000,starcount1 ;
- rts ;
- starcol:dc.w $0fff,$0ddd,$0bbb,$0999,$0777,$0555
- *------ MOVE STARS --------------------------------------------------*
- stars: moveq #0,d1 ;
- moveq #0,d2 ;
- moveq #0,d3 ;
- subq.b #1,starcount1 ;
- bne.s stars1 ;
- move.b #4,starcount1 ;
- moveq #1,d1 ;
- stars1: subq.b #1,starcount2 ;
- bne.s stars11 ;
- move.b #3,starcount2 ;
- moveq #1,d2 ;
- stars11:not.b starcount3 ;
- bne.s stars2 ;
- moveq #1,d3 ;
- stars2: moveq #20,d0 ;
- lea spritepos,a0 ;
- stars3: add.w d1,(a0)+ ;
- add.w d2,(a0)+ ;
- add.w d3,(a0)+ ;
- addq.w #2,(a0)+ ;
- addq.w #3,(a0)+ ;
- addq.w #4,(a0)+ ;
- dbf d0,stars3 ;
- move.w #251,d0 ;
- lea spritepos,a0 ;
- stars4: cmp.w #448,(a0)+ ;
- blo.s stars5 ;
- move.w #128,-2(a0) ;
- stars5: dbf d0,stars4 ;
- lea spritepos,a0 ;
- lea sprite1,a1 ;
- move.w #125,d0 ;
- stars6: move.w (a0)+,d1 ;
- bclr #0,3(a1) ;
- btst #0,d1 ;
- beq.s stars7 ;
- bset #0,3(a1) ;
- stars7: lsr.w #1,d1 ;
- move.b d1,1(a1) ;
- addq.l #8,a1 ;
- dbf d0,stars6 ;
- rts ;
- *------ INIT TUFF VIDEO ---------------------------------------------*
- initr: moveq #0,d1 ; ypos
- move.l #xstart,d2 ; xpos
- lea text(pc),a5 ;
- moveq #0,d5 ; angle
- moveq #0,d7 ; sinetable pointer
- lea sine+180(pc),a4 ;
- lea flags(pc),a3 ;
- lea $dff000,a6 ;
- movem.l a0-a6/d0-d7,$150.w ;
- rts ;
- *------ TUFF VIDEO! -------------------------------------------------*
- flash: movem.l $150.w,a0-a6/d0-d7 ;
- move.b #nlet,d4 ;
- move.w #$8400,$96(a6) ; nasty
- move.w (a4,d7.w),d1 ;
- tst.b (a3) ;
- beq.s jump3 ;
- move.b (a3),d6 ; fetch jump speed
- add.w d6,d7 ;
- cmp.w #720,d7 ;
- blo.s jump ;
- moveq #0,d7 ;
- jump3: move.b 2(a3),(a3) ;
- jump: asr.w #4,d1 ;
- add.w #textypos,d1 ;
- jump2: moveq #0,d6 ; scrolltextpointer
- flash4: moveq #0,d3 ;
- move.b (a5,d6),d3 ;
- cmp.b #$ff,d3 ;
- bne.s flash5 ; end of text?
- lea text(pc),a5 ;
- bra.s flash4 ;
- flash5: cmp.b #$40,d3 ;
- bhi.s flash6 ;
- addq.b #1,d4 ; skip commands
- addq.b #1,d6 ;
- bra.s flash4 ;
- flash6: sub.b #$41,d3 ;
- movem.l d1/d2/d3/d6,-(a7) ; draw letter
- cmp.w #26,d3 ;
- blo.s flash7 ;
- sub.w #26,d3 ; greater than Z?
- mulu #288,d3 ;
- add.l #$7cf00,d3 ; start of the fix chars
- bra.s flash8 ;
- flash7: mulu #36,d3 ;
- add.l d5,d3 ;
- mulu #288,d3 ; size of one letter
- add.l #$3b200,d3 ; char data start
- flash8: move.w #$8400,$96(a6) ;
- move.w #$0400,$96(a6) ;
- move.l d3,$50(a6) ; source A
- move.w #%1111110000001101,d6 ; word is swapped
- move.l d2,d3 ; d2 = xpos
- asl.l #4,d3 ;
- or.b d3,d6 ;
- ror.w #8,d6 ;
- asr.l #3,d2 ; calc word pos
- add.l #tplane,d2 ;
- mulu #llen,d1 ; d1 = ypos
- add.l d2,d1 ;
- move.l d1,$54(a6) ; destination D
- move.l d1,$4c(a6) ; source B
- move.w #llen-8,$62(a6) ; modulo B
- move.w #-2,$64(a6) ; modulo A
- move.w #llen-8,$66(a6) ; modulo D
- move.w d6,$40(a6) ; bltcon0
- move.l #$ffff0000,$44(a6) ; mask first,last
- clr.w $42(a6) ; bltcon1
- move.w #$0c04,$58(a6) ; bltsize
- movem.l (a7)+,d1/d2/d3/d6 ;
- add.l #36,d2 ; next x pos
- addq.b #1,d6 ; next letter in text
- cmp.b d4,d6 ; already all drawed?
- bne.L flash4 ;
- add.b 5(a3),d5 ;
- cmp.b #36,d5 ;
- bne.s flash9 ;
- moveq #0,d5 ; start with first angle
- flash9: sub.l #nlet*36,d2 ;
- move.b 4(a3),d6 ; fetch scroll speed
- sub.l d6,d2 ;
- cmp.l #xstart-36,d2 ;
- bne.L wmous ;
- addq.l #1,a5 ; shift to next letter
- def: cmp.b #1,(a5) ; jump
- bne.s def2 ;
- move.b 1(a5),2(a3) ;
- addq.l #2,a5 ;
- bra.s def ;
- def2: cmp.b #2,(a5) ; speed
- bne.s def3 ;
- move.b 1(a5),4(a3) ;
- addq.l #2,a5 ;
- bra.s def ;
- def3: cmp.b #3,(a5) ; flash
- bne.s def4 ;
- bchg #0,5(a3) ;
- addq.l #1,a5 ;
- bra.s def ;
- def4: cmp.b #4,(a5) ; change spin speed
- bne.s def5 ;
- move.b 1(a5),3(a3) ;
- addq.l #2,a5 ;
- bra.s def ;
- def5: cmp.b #5,(a5) ; colour cycling
- bne.s def6 ;
- bchg #1,6(a3) ;
- addq.l #1,a5 ;
- bra.s def ;
- def6: cmp.b #6,(a5) ; new ball animation
- bne.s def7 ;
- move.b 1(a5),7(a3) ; store new animation #
- addq.l #2,a5 ;
- bra.s def ;
- def7: moveq #xstart,d2 ;
- wmous: movem.l a0-a6/d0-d7,$150.w ;
- rts ;
- flags: dc.b 0 ; 00 real jump speed
- dc.b 0 ; 01 start/stop flag
- dc.b 0 ; 02 jump speed
- dc.b 0 ; 03 spin speed
- dc.b 6 ; 04 scroll speed
- dc.b 0 ; 05 flash on/off
- dc.b 2 ; 06 colour cycling
- dc.b 2 ; 07 animation # (startanim=2)
- text: blk.b nlet,'['
- dc.b '[[[JOIN[THE[POWER^'
- dc.b 2,1,'[[',4,2,'[[[[[',2,4,4,4,'[[[[[',4,6,'[[[[[['
- dc.b 'DEPECHE[TUFF[VIDEO'
- dc.b '[PRODUCTIONS[ARE[PROUD[TO['
- dc.b 'PRESENT\\\',3,'[[[[[[[[[[[[[[THE[POWER['
- dc.b 'DEMO^[[['
- dc.b '[[[[[[[[[[[[[['
- dc.b 'YEAH[GUYS][[[IT[WAS[ABOUT[TIME[TO',6,1
- dc.b '[SHOW[THE[WORLD[SOME[NEW[AND[REAL[COOL['
- dc.b 'EFFECT',4,4,'S[ON[THIS[MACH',4,2,'INE^[[[[',4,6
- dc.b '[[[[[[[AND[HEY][[[',3,'[[',1,10,'[I'
- dc.b '[THIN',1,20,'K[THEY[ARE',1,40
- dc.b '[RATHER',1,0,'[COOL^[[[[[[',4,2,'[[',4,4
- dc.b '[[[[',4,6,3
- dc.b '[[[[[[[[[['
- dc.b 'CREDITSd[[[[CODING[BY[THE[COOL[DEPECHE[[[[a'
- dc.b '[[[[GRAPHIX[BY[DEPECHE[[[['
- dc.b 4,4,'a[[[[VECTO',4,6
- dc.b 'R[MATHEMATIX'
- dc.b '[BY[THE[GREAT[AMICOM[AND[DEPECHE[[[[a'
- dc.b '[[[[LETTER[TURNING[MATHEMATIX[BY[THE[TUFF['
- dc.b 'DEPECHE[[[[a',6,3
- dc.b '[[[[LOGO[SPINROUTINE[BY[AMICOM[[[['
- dc.b 'a[[[[MEGA[DEF[SOUND[BY[D\O\C\'
- dc.b '[bDOCTOR[MABUSE[ORGASM[CRACKINGS^c[[[[a'
- dc.b '[[[[LOGOFONT[BY[TRISTAR[[[[',6,8
- dc.b '[[[[[[[[['
- dc.b 'DEPECHES[REGARDS[AND[HANDSHAKES[ARE['
- dc.b 'ROLLING[OVER[TOd[[[['
- dc.b 'SCA[[[[a[[[[POWER[POINT[[[[a[[[['
- dc.b 'D\O\C\[bTHIS[SOUND[IS[TUFF^c[[[[a'
- dc.b '[[[[DEFJAM[bYYEEEAAHHHHH]]]]c[[[[a'
- dc.b '[[[[MAHONEY[AND[KAKTUS[OF[NS[AND[FLT[b',6,4
- dc.b 'NICE[EFFECTS]c[[[['
- dc.b 4,2
- dc.b 'AMICOM[ADDS[THE[FOLLOWING[GUYSd[[['
- dc.b 'METALLaWAR[bNICE[EHB[DEMO[AND[SUPER['
- dc.b 'SOUND`[REAL[GOOD][[[PARADROID[POOI['
- dc.b 'bNICE[APPLEGUY[ROUTINEc[[['
- dc.b 6,5,4,4
- dc.b 'CBM[ENaJOY`[STILL[THE[TRUE[CREATOR['
- dc.b 'OF[THE[GARRISON[TITLE[MELODY[STOLEN['
- dc.b 'BY[P\[DE[SAPIO[[[[[[[[[[[',4,6
- dc.b 3
- dc.b 'A[WORD[ABOUT[COPYaPARTIESd[[[',4,2
- dc.b 'WE[HATE[TO[SEARCH[THE[LOCATIONS[',1,20,3
- dc.b 'OF[B',1,0,3,'AD[ORGANIZED[PARTIES[LIKE['
- dc.b 'THE[ONE[OF',1,20,3,'[ALC'
- dc.b 1,0,3,'ATRAZ[IN[GENEVA^['
- dc.b 3,4,6
- dc.b 6,7
- dc.b '[[[[[[[[[['
- dc.b 'YOU[ARE[READING[AMICOMS[COOL['
- dc.b 'WORDS[NOW\[[[[[[[FIRST[A[WORD[TO['
- dc.b 'ALL[THOSE[STUPID[GUYS[WHO[CANT[',4,4
- dc.b 'STOP[LAMENTING[ABOUT[FILLED[OR['
- dc.b 'UNFILLED[VECTOR[GRAPHICS][SHUT[YAR['
- dc.b 'MOUTH[AS[LONG[AS[YOU[DONT[EVEN[HAVE['
- dc.b 'ANY[MATHEMATICS[AT[ALL^[',4,6
- dc.b 6,6
- dc.b '[[[['
- dc.b 'ARE[YOU[AFRAID[OF[VIRUSES_[[[YES___['
- dc.b 'DO[YOU[MAYBE[PANIC[WHEN[ONE[OF['
- dc.b 'THESE[POOR[LITTLE[CREATURES[HITS[YOU_['
- dc.b 'THEN[YOU[ARE[EITHER[ONE[OF[THOSE[IDIOITS['
- dc.b 'WHO[STILL[THINK[EVERY[DISK[HAS[GOT[TO['
- dc.b 'HAVE[A[STANDARD[BOOTBLOCK`[OR[OTHERWISE[',6,5
- dc.b 'YOU[ARE[NOT[TUFF^^[[[[[['
- dc.b '[[[[[BEFORE[I[FORGET[IT][[[[['
- dc.b 'I[WANT[TO[POINT[MY[FINGER[ON[LASER[BEAM['
- dc.b '[[bHEY[HANS`[DONT[FORGET[TO[EAT[SOME['
- dc.b 'FROM[BITS[AND[TO[BRING[ME[EDELWEISSc['
- dc.b '[[[[[[['
- dc.b 'AND[HERE[ARE[THE[ANSWERS[TO[SOME[OF[YOUR['
- dc.b 'MOST[IMPORTANT[QUESTIONS[ABOUT[THIS[DEMOd['
- dc.b 'THE[WHOLE[AMIGA[CHIP[MEMORY[IS[USED[UP^[['
- dc.b 'THE[LAST[BYTE[HAS[BEEN[FILLED[WITH['
- dc.b 'SCROLLTEXT][[[THE[TURNING[MATHEMATIX['
- dc.b 'WAS[SPED[UP[FROM[A[QUARTER[OF[AN[HOUR['
- dc.b 'TO[TWENTY[SECONDS\\\[[[['
- dc.b 'WWWWOOOOOOWWWW^[',2,1
- dc.b '[[[[[[[',6,1,2,4,'[[[[[[[['
- dc.b '[[[[DEPECHE[IS[STILL[AT[THE[TOP[OF[EVERY['
- dc.b 'HIGHSCORE\\\[[[ESPECIALLY[IN[MY[TERRA[CRESTA['
- dc.b 'CARD]]_[[[[[[[[[[[[[['
- dc.b 'SEE[YOU[SOON[IN[AMICOMS[ATOM[DEMO\[[[[[[',6,2,3
- blk.b nlet,'['
- dc.b $ff
- even
- clist: dc.w $0180,$0000,$0100,$4200,$0102,$0000,$008e,$2c81
- dc.w $0090,$2cc1,$0092,$0038,$0094,$00d0,$0108,$0000
- dc.w $010a,$0000,$0104,$0000
- dc.w $00e0,plane0/$10000
- dc.w $00e2,plane0
- dc.w $00e4,plane1/$10000
- dc.w $00e6,plane1
- dc.w $00e8,plane2/$10000
- dc.w $00ea,plane2
- dc.w $00ec,plane3/$10000
- dc.w $00ee,plane3
- dc.w $0182,$0fff,$0184,$0def,$0186,$0bdf
- dc.w $0188,$09cf,$018a,$07bf,$018c,$059f,$018e,$036d
- dc.w $0190,$0fbd,$0192,$0eb9,$0194,$0d97,$0196,$0c75
- dc.w $0198,$0b53,$019a,$0a42,$019c,$0842,$019e,$0520
- dc.w $0120,sprite1/$10000
- dc.w $0122,sprite1&$ffff
- dc.w $0124,$0000,$0126,$0000,$0128,$0000,$012a,$0000
- dc.w $012c,$0000,$012e,$0000,$0130,$0000,$0132,$0000
- dc.w $0134,$0000,$0136,$0000,$0138,$0000,$013a,$0000
- dc.w $013c,$0000,$013e,$0000
- cend: dc.l 0
- clist2: dc.w $0100,$1200
- dc.w $00e0,tplane/$10000
- dc.w $00e2,tplane+[13*54]
- dc.w $0100,$1200
- dc.w $0108,llen-$2e
- dc.w $010a,$0000
- dc.w $0182,$0f4c
- dc.l 0
- clist3: dc.w $00e0,bplane1/$10000
- dc.w $00e2,bplane1
- dc.w $00e4,bplane2/$10000
- dc.w $00e6,bplane2
- dc.w $0100,$2200
- dc.w $0182,$0000
- dc.w $0184,$0000
- dc.w $0186,$0000
- dc.w $0104,$0000
- dc.l 0
- clist4: dc.w $00e0,bplane1/$10000
- dc.w $00e2,bplane1+[84*40]
- dc.w $00e8,bplane2/$10000
- dc.w $00ea,bplane2+[84*40]+8
- dc.w $00e4,tplane/$10000
- dc.w $00e6,tplane-[3*llen]+4
- dc.w $010a,llen-$2e
- dc.w $0108,-$0006
- dc.w $008e,$2c61
- dc.w $0090,$2dd1
- dc.w $0092,$0028
- dc.w $0094,$00d8
- dc.w $0192,$0f4c
- dc.w $0100,$3600
- dc.w $0104,$0040
- dc.l 0
- *------ SOUNDTRACKER ROUTINE ----------------------------------------*
- mt_init:move.l #mt_data,a0
- add.l #$01d8,a0
- move.l #$0080,d0
- moveq #$00,d1
- mt_init1:
- move.l d1,d2
- subq.w #1,d0
- mt_init2:
- move.b (a0)+,d1
- cmp.b d2,d1
- bgt.s mt_init1
- dbf d0,mt_init2
- addq.b #1,d2
- mt_init3:
- move.l #mt_data,a0
- lea mt_sample1(pc),a1
- asl.l #$08,d2
- asl.l #$02,d2
- add.l #$0258,d2
- add.l a0,d2
- moveq #$0e,d0
- mt_init4:
- move.l d2,(a1)+
- moveq #$00,d1
- move.w 42(a0),d1
- asl.l #1,d1
- add.l d1,d2
- add.l #$1e,a0
- dbf d0,mt_init4
- lea mt_sample1(pc),a0
- moveq #$00,d0
- mt_clear:
- move.l (a0,d0),a1
- clr.l (a1)
- addq.l #4,d0
- cmp.l #$3c,d0
- bne.s mt_clear
- clr.w $dff0a8
- clr.w $dff0b8
- clr.w $dff0c8
- clr.w $dff0d8
- clr.l mt_partnrplay
- clr.l mt_partnote
- clr.l mt_partpoint
- move.b mt_data+$1d6,mt_maxpart+1
- rts
- mt_music:
- addq.l #1,mt_counter
- mt_cool:cmp.l #6,mt_counter
- bne.s mt_notsix
- clr.l mt_counter
- bra mt_rout2
- mt_notsix:
- lea mt_aud1temp(pc),a6
- tst.b 3(a6)
- beq.s mt_arp1
- lea $dff0a0,a5
- bsr.s mt_arprout
- mt_arp1:lea mt_aud2temp(pc),a6
- tst.b 3(a6)
- beq.s mt_arp2
- lea $dff0b0,a5
- bsr.s mt_arprout
- mt_arp2:lea mt_aud3temp(pc),a6
- tst.b 3(a6)
- beq.s mt_arp3
- lea $dff0c0,a5
- bsr.s mt_arprout
- mt_arp3:lea mt_aud4temp(pc),a6
- tst.b 3(a6)
- beq.s mt_arp4
- lea $dff0d0,a5
- bra.s mt_arprout
- mt_arp4:rts
- mt_arprout:
- move.b 2(a6),d0
- and.b #$0f,d0
- tst.b d0
- beq.s mt_arpegrt
- cmp.b #1,d0
- beq.s mt_portup
- cmp.b #2,d0
- beq.s mt_portdwn
- rts
- mt_portup:
- moveq #$00,d0
- move.b 3(a6),d0
- sub.w d0,22(a6)
- cmp.w #$71,22(a6)
- bpl.s mt_ok1
- move.w #$71,22(a6)
- mt_ok1: move.w 22(a6),6(a5)
- rts
- mt_portdwn:
- moveq #$00,d0
- move.b 3(a6),d0
- add.w d0,22(a6)
- cmp.w #$358,22(a6)
- bmi.s mt_ok2
- move.w #$358,22(a6)
- mt_ok2: move.w 22(a6),6(a5)
- rts
- mt_arpegrt:
- cmp.l #1,mt_counter
- beq.s mt_loop2
- cmp.l #2,mt_counter
- beq.s mt_loop3
- cmp.l #3,mt_counter
- beq.s mt_loop4
- cmp.l #4,mt_counter
- beq.s mt_loop2
- cmp.l #5,mt_counter
- beq.s mt_loop3
- rts
- mt_loop2:
- moveq #$00,d0
- move.b 3(a6),d0
- lsr.b #4,d0
- bra.s mt_cont
- mt_loop3:
- moveq #$00,d0
- move.b 3(a6),d0
- and.b #$0f,d0
- bra.s mt_cont
- mt_loop4:
- move.w 16(a6),d2
- bra.s mt_endpart
- mt_cont:
- asl.w #1,d0
- moveq #$00,d1
- move.w 16(a6),d1
- lea mt_arpeggio(pc),a0
- mt_loop5:
- move.w (a0,d0),d2
- cmp.w (a0),d1
- beq.s mt_endpart
- addq.l #2,a0
- bra.s mt_loop5
- mt_endpart:
- move.w d2,6(a5)
- rts
- mt_rout2:
- move.l #mt_data,a0
- move.l a0,a3
- add.l #$0c,a3
- move.l a0,a2
- add.l #$1d8,a2
- add.l #$258,a0
- move.l mt_partnrplay,d0
- moveq #$00,d1
- move.b (a2,d0),d1
- asl.l #$08,d1
- asl.l #$02,d1
- add.l mt_partnote,d1
- move.l d1,mt_partpoint
- clr.w mt_dmacon
- lea $dff0a0,a5
- lea mt_aud1temp(pc),a6
- bsr mt_playit
- lea $dff0b0,a5
- lea mt_aud2temp(pc),a6
- bsr mt_playit
- lea $dff0c0,a5
- lea mt_aud3temp(pc),a6
- bsr mt_playit
- lea $dff0d0,a5
- lea mt_aud4temp(pc),a6
- bsr mt_playit
- move.w #$01f4,d0
- mt_rls: dbf d0,mt_rls
- move.w #$8000,d0
- or.w mt_dmacon,d0
- move.w d0,$dff096
- lea mt_aud4temp(pc),a6
- cmp.w #1,14(a6)
- bne.s mt_voice3
- move.l 10(a6),$dff0d0
- move.w #1,$dff0d4
- mt_voice3:
- lea mt_aud3temp(pc),a6
- cmp.w #1,14(a6)
- bne.s mt_voice2
- move.l 10(a6),$dff0c0
- move.w #1,$dff0c4
- mt_voice2:
- lea mt_aud2temp(pc),a6
- cmp.w #1,14(a6)
- bne.s mt_voice1
- move.l 10(a6),$dff0b0
- move.w #1,$dff0b4
- mt_voice1:
- lea mt_aud1temp(pc),a6
- cmp.w #1,14(a6)
- bne.s mt_voice0
- move.l 10(a6),$dff0a0
- move.w #1,$dff0a4
- mt_voice0:
- move.l mt_partnote,d0
- add.l #$10,d0
- move.l d0,mt_partnote
- cmp.l #$400,d0
- bne.s mt_stop
- mt_higher:
- clr.l mt_partnote
- addq.l #1,mt_partnrplay
- moveq #$00,d0
- move.w mt_maxpart,d0
- move.l mt_partnrplay,d1
- cmp.l d0,d1
- bne.s mt_stop
- clr.l mt_partnrplay
- mt_stop:tst.w mt_status
- beq.s mt_stop2
- clr.w mt_status
- bra.s mt_higher
- mt_stop2:
- rts
- mt_playit:
- move.l (a0,d1),(a6)
- addq.l #4,d1
- moveq #$00,d2
- move.b 2(a6),d2
- and.b #$f0,d2
- lsr.b #4,d2
- tst.b d2
- beq.s mt_nosamplechange
- moveq #$00,d3
- lea mt_samples(pc),a1
- move.l d2,d4
- asl.l #2,d2
- mulu #$1e,d4
- move.l (a1,d2),4(a6)
- move.w (a3,d4),8(a6)
- move.w 2(a3,d4),18(a6)
- move.w 4(a3,d4),d3
- tst.w d3
- beq.s mt_displace
- move.l 4(a6),d2
- add.l d3,d2
- move.l d2,4(a6)
- move.l d2,10(a6)
- move.w 6(a3,d4),8(a6)
- move.w 6(a3,d4),14(a6)
- move.w 18(a6),8(a5)
- bra.s mt_nosamplechange
- mt_displace:
- move.l 4(a6),d2
- add.l d3,d2
- move.l d2,10(a6)
- move.w 6(a3,d4),14(a6)
- move.w 18(a6),8(a5)
- mt_nosamplechange:
- tst.w (a6)
- beq.s mt_retrout
- move.w (a6),16(a6)
- move.w 20(a6),$dff096
- move.l 4(a6),(a5)
- move.w 8(a6),4(a5)
- move.w (a6),6(a5)
- move.w 20(a6),d0
- or.w d0,mt_dmacon
- mt_retrout:
- tst.w (a6)
- beq.s mt_nonewper
- move.w (a6),22(a6)
- mt_nonewper:
- move.b 2(a6),d0
- and.b #$0f,d0
- cmp.b #11,d0
- beq.s mt_posjmp
- cmp.b #12,d0
- beq.s mt_setvol
- cmp.b #13,d0
- beq.s mt_break
- cmp.b #14,d0
- beq.s mt_setfil
- cmp.b #15,d0
- beq.s mt_setspeed
- rts
- mt_posjmp:
- not.w mt_status
- moveq #$00,d0
- move.b 3(a6),d0
- subq.b #$01,d0
- move.l d0,mt_partnrplay
- rts
- mt_setvol:
- move.b 3(a6),8(a5)
- rts
- mt_break:
- not.w mt_status
- rts
- mt_setfil:
- moveq #$00,d0
- move.b 3(a6),d0
- and.b #$01,d0
- rol.b #$01,d0
- and.b #$fd,$bfe001
- or.b d0,$bfe001
- rts
- mt_setspeed:
- move.b 3(a6),d0
- and.b #$0f,d0
- beq.s mt_back
- clr.l mt_counter
- move.b d0,mt_cool+5
- mt_back:rts
- mt_aud1temp:
- blk.w 10,0
- dc.w $0001
- blk.w 2,0
- mt_aud2temp:
- blk.w 10,0
- dc.w $0002
- blk.w 2,0
- mt_aud3temp:
- blk.w 10,0
- dc.w $0004
- blk.w 2,0
- mt_aud4temp:
- blk.w 10,0
- dc.w $0008
- blk.w 2,0
- mt_partnote: dc.l 0
- mt_partnrplay: dc.l 0
- mt_counter: dc.l 0
- mt_partpoint: dc.l 0
- mt_samples:dc.l 0
- mt_sample1:blk.l 15,0
- mt_maxpart:dc.w $0000
- mt_dmacon:dc.w $0000
- mt_status:dc.w $0000
- mt_arpeggio:
- dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
- dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
- dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
- dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
- dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
- ; AMICOM'S SINE TABLE 1988-03-03 BY AMICOM AND DEPECHE
- sine: dc.w $0000,$0004,$0009,$000d,$0012,$0016,$001b,$001f
- dc.w $0024,$0028,$002c,$0031,$0035,$003a,$003e,$0042
- dc.w $0047,$004b,$004f,$0053,$0058,$005c,$0060,$0064
- dc.w $0068,$006c,$0070,$0074,$0078,$007c,$0080,$0084
- dc.w $0088,$008b,$008f,$0093,$0096,$009a,$009e,$00a1
- dc.w $00a5,$00a8,$00ab,$00af,$00b2,$00b5,$00b8,$00bb
- dc.w $00be,$00c1,$00c4,$00c7,$00ca,$00cc,$00cf,$00d2
- dc.w $00d4,$00d7,$00d9,$00db,$00de,$00e0,$00e2,$00e4
- dc.w $00e6,$00e8,$00ea,$00ec,$00ed,$00ef,$00f1,$00f2
- dc.w $00f3,$00f5,$00f6,$00f7,$00f8,$00f9,$00fa,$00fb
- dc.w $00fc,$00fd,$00fe,$00fe,$00ff,$00ff,$00ff,$0100
- dc.w $0100,$0100,$0100,$0100,$0100,$0100,$00ff,$00ff
- dc.w $00ff,$00fe,$00fe,$00fd,$00fc,$00fb,$00fa,$00f9
- dc.w $00f8,$00f7,$00f6,$00f5,$00f3,$00f2,$00f1,$00ef
- dc.w $00ed,$00ec,$00ea,$00e8,$00e6,$00e4,$00e2,$00e0
- dc.w $00de,$00db,$00d9,$00d7,$00d4,$00d2,$00cf,$00cc
- dc.w $00ca,$00c7,$00c4,$00c1,$00be,$00bb,$00b8,$00b5
- dc.w $00b2,$00af,$00ab,$00a8,$00a5,$00a1,$009e,$009a
- dc.w $0096,$0093,$008f,$008b,$0088,$0084,$0080,$007c
- dc.w $0078,$0074,$0070,$006c,$0068,$0064,$0060,$005c
- dc.w $0058,$0053,$004f,$004b,$0047,$0042,$003e,$003a
- dc.w $0035,$0031,$002c,$0028,$0024,$001f,$001b,$0016
- dc.w $0012,$000d,$0009,$0004,$0000,$fffc,$fff7,$fff3
- dc.w $ffee,$ffea,$ffe5,$ffe1,$ffdc,$ffd8,$ffd4,$ffcf
- dc.w $ffcb,$ffc6,$ffc2,$ffbe,$ffb9,$ffb5,$ffb1,$ffad
- dc.w $ffa8,$ffa4,$ffa0,$ff9c,$ff98,$ff94,$ff90,$ff8c
- dc.w $ff88,$ff84,$ff80,$ff7c,$ff78,$ff75,$ff71,$ff6d
- dc.w $ff6a,$ff66,$ff62,$ff5f,$ff5b,$ff58,$ff55,$ff51
- dc.w $ff4e,$ff4b,$ff48,$ff45,$ff42,$ff3f,$ff3c,$ff39
- dc.w $ff36,$ff34,$ff31,$ff2e,$ff2c,$ff29,$ff27,$ff25
- dc.w $ff22,$ff20,$ff1e,$ff1c,$ff1a,$ff18,$ff16,$ff14
- dc.w $ff13,$ff11,$ff0f,$ff0e,$ff0d,$ff0b,$ff0a,$ff09
- dc.w $ff08,$ff07,$ff06,$ff05,$ff04,$ff03,$ff02,$ff02
- dc.w $ff01,$ff01,$ff01,$ff00,$ff00,$ff00,$ff00,$ff00
- dc.w $ff00,$ff00,$ff01,$ff01,$ff01,$ff02,$ff02,$ff03
- dc.w $ff04,$ff05,$ff06,$ff07,$ff08,$ff09,$ff0a,$ff0b
- dc.w $ff0d,$ff0e,$ff0f,$ff11,$ff13,$ff14,$ff16,$ff18
- dc.w $ff1a,$ff1c,$ff1e,$ff20,$ff22,$ff25,$ff27,$ff29
- dc.w $ff2c,$ff2e,$ff31,$ff34,$ff36,$ff39,$ff3c,$ff3f
- dc.w $ff42,$ff45,$ff48,$ff4b,$ff4e,$ff51,$ff55,$ff58
- dc.w $ff5b,$ff5f,$ff62,$ff66,$ff6a,$ff6d,$ff71,$ff75
- dc.w $ff78,$ff7c,$ff80,$ff84,$ff88,$ff8c,$ff90,$ff94
- dc.w $ff98,$ff9c,$ffa0,$ffa4,$ffa8,$ffad,$ffb1,$ffb5
- dc.w $ffb9,$ffbe,$ffc2,$ffc6,$ffcb,$ffcf,$ffd4,$ffd8
- dc.w $ffdc,$ffe1,$ffe5,$ffea,$ffee,$fff3,$fff7,$fffc
- dc.w $0000,$0004,$0009,$000d,$0012,$0016,$001b,$001f
- dc.w $0024,$0028,$002c,$0031,$0035,$003a,$003e,$0042
- dc.w $0047,$004b,$004f,$0053,$0058,$005c,$0060,$0064
- dc.w $0068,$006c,$0070,$0074,$0078,$007c,$0080,$0084
- dc.w $0088,$008b,$008f,$0093,$0096,$009a,$009e,$00a1
- dc.w $00a5,$00a8,$00ab,$00af,$00b2,$00b5,$00b8,$00bb
- dc.w $00be,$00c1,$00c4,$00c7,$00ca,$00cc,$00cf,$00d2
- dc.w $00d4,$00d7,$00d9,$00db,$00de,$00e0,$00e2,$00e4
- dc.w $00e6,$00e8,$00ea,$00ec,$00ed,$00ef,$00f1,$00f2
- dc.w $00f3,$00f5,$00f6,$00f7,$00f8,$00f9,$00fa,$00fb
- dc.w $00fc,$00fd,$00fe,$00fe,$00ff,$00ff,$00ff,$0100
- dc.w $0100,$0100,$0100,$0100,$0100,$0100,$00ff,$00ff
- dc.w $00ff,$00fe,$00fe,$00fd,$00fc,$00fb,$00fa,$00f9
- dc.w $00f8,$00f7,$00f6,$00f5,$00f3,$00f2,$00f1,$00ef
- dc.w $00ed,$00ec,$00ea,$00e8,$00e6,$00e4,$00e2,$00e0
- dc.w $00de,$00db,$00d9,$00d7,$00d4,$00d2,$00cf,$00cc
- dc.w $00ca,$00c7,$00c4,$00c1,$00be,$00bb,$00b8,$00b5
- dc.w $00b2,$00af,$00ab,$00a8,$00a5,$00a1,$009e,$009a
- dc.w $0096,$0093,$008f,$008b,$0088,$0084,$0080,$007c
- dc.w $0078,$0074,$0070,$006c,$0068,$0064,$0060,$005c
- dc.w $0058,$0053,$004f,$004b,$0047,$0042,$003e,$003a
- dc.w $0035,$0031,$002c,$0028,$0024,$001f,$001b,$0016
- dc.w $0012,$000d,$0009,$0004,$0000,$fffc,$fff7,$fff3
- dc.w $ffee,$ffea,$ffe5,$ffe1,$ffdc,$ffd8,$ffd4,$ffcf
- dc.w $ffcb,$ffc6,$ffc2,$ffbe,$ffb9,$ffb5,$ffb1,$ffad
- dc.w $ffa8,$ffa4,$ffa0,$ff9c,$ff98,$ff94,$ff90,$ff8c
- dc.w $ff88,$ff84,$ff80,$ff7c,$ff78,$ff75,$ff71,$ff6d
- dc.w $ff6a,$ff66,$ff62,$ff5f,$ff5b,$ff58,$ff55,$ff51
- dc.w $ff4e,$ff4b,$ff48,$ff45,$ff42,$ff3f,$ff3c,$ff39
- dc.w $ff36,$ff34,$ff31,$ff2e,$ff2c,$ff29,$ff27,$ff25
- dc.w $ff22,$ff20,$ff1e,$ff1c,$ff1a,$ff18,$ff16,$ff14
- dc.w $ff13,$ff11,$ff0f,$ff0e,$ff0d,$ff0b,$ff0a,$ff09
- dc.w $ff08,$ff07,$ff06,$ff05,$ff04,$ff03,$ff02,$ff02
- dc.w $ff01,$ff01,$ff01,$ff00,$ff00,$ff00,$ff00,$ff00
- dc.w $ff00,$ff00,$ff01,$ff01,$ff01,$ff02,$ff02,$ff03
- dc.w $ff04,$ff05,$ff06,$ff07,$ff08,$ff09,$ff0a,$ff0b
- dc.w $ff0d,$ff0e,$ff0f,$ff11,$ff13,$ff14,$ff16,$ff18
- dc.w $ff1a,$ff1c,$ff1e,$ff20,$ff22,$ff25,$ff27,$ff29
- dc.w $ff2c,$ff2e,$ff31,$ff34,$ff36,$ff39,$ff3c,$ff3f
- dc.w $ff42,$ff45,$ff48,$ff4b,$ff4e,$ff51,$ff55,$ff58
- dc.w $ff5b,$ff5f,$ff62,$ff66,$ff6a,$ff6d,$ff71,$ff75
- dc.w $ff78,$ff7c,$ff80,$ff84,$ff88,$ff8c,$ff90,$ff94
- dc.w $ff98,$ff9c,$ffa0,$ffa4,$ffa8,$ffad,$ffb1,$ffb5
- dc.w $ffb9,$ffbe,$ffc2,$ffc6,$ffcb,$ffcf,$ffd4,$ffd8
- dc.w $ffdc,$ffe1,$ffe5,$ffea,$ffee,$fff3,$fff7,$fffc
- *------ TURNING MATHEMATIX -----------------------------------------*
- org $7da40
- load $7a8c0
- font = bplane1
- table = bplane1
- nolet = 26
- sprite = $7dce8
- sprsize = 36
- rot: bset #1,$bfe001 ; powerled off
- move.w #$83e0,$96(a6) ;
- move.l #clist5,$80(a6) ;
- move.l #clist5,$84(a6) ;
- clr.l $88(a6) ;
- clr.l 0 ;
- move.l #font,a0 ; chars source
- move.l #fontb,a1 ; chars dest
- move.l a1,a2 ;
- move.l #[$7cf00-fontb]/4-1,d0 ;
- clear: clr.l (a1)+ ; clear destination
- subq.l #1,d0 ; memory
- bne.s clear ;
- moveq #nolet-1,d1 ;
- copy_2: moveq #71,d0 ;
- copy: move.l (a0)+,(a2)+ ;
- dbf d0,copy ;
- add.l #$2760,a2 ;
- dbf d1,copy_2 ;
- moveq #10,d7 ; angle
- fetch: lea sine,a0 ;
- move.w d7,d5 ;
- lsl.w #1,d5 ; make offset
- lea (a0,d5.w),a0 ;
- move.w (a0)+,d5 ; d5=sin a
- move.w 180(a0),d6 ; d6=cos a
- move.w d5,sindat ; save sin a
- move.w d6,cosdat ; save con a
- moveq #47,d3 ;
- moveq #-23,d0 ; x pos
- moveq #-23,d1 ; y pos
- move.l #table,a5 ; dest for table
- fix: movem.w d0/d1,-(a7) ; *** calc x' pos
- move.l d0,d5 ; x pos
- move.l d1,d6 ; y pos
- muls cosdat,d5 ; x cos a
- muls sindat,d6 ; y sin a
- add.l d5,d6 ; x' = x cos a + y sin a
- asr.l #8,d6 ; div 256
- muls sindat,d0 ; x sin a
- muls cosdat,d1 ; y cos a
- sub.l d0,d1 ; y' = -x sin a + y cos a
- asr.l #8,d1 ; div 256 x'=d6 y'=d1
- add.l #23,d6 ; xpos
- add.l #23,d1 ; ypos
- ror.l #3,d6 ;
- mulu #6,d1 ;
- add.w d6,d1 ;
- rol.l #3,d6 ; get shift back
- and.w #%111,d6 ;
- moveq #7,d2 ; from left to right
- sub.b d6,d2 ;
- move.w d2,(a5)+ ; save rotated points
- move.w d1,(a5)+ ; (create rotated pointstable)
- movem.w (a7)+,d0/d1 ;
- addq.l #1,d0 ;
- dbf d3,fix ;
- moveq #-23,d0 ;
- moveq #47,d3 ;
- addq.l #1,d1 ;
- cmp.l #24,d1 ;
- bne.s fix ;
- move.l #fontb,a5 ; set px / fontsource
- move.l dest(pc),a6 ; destination
- moveq #nolet-1,d6 ; number of letters
- fast_5: move.l a6,a2 ;
- move.l a5,a0 ;
- move.l #table,a1 ; rotated points
- move.w #42*6,d1 ;
- fast_4: moveq #7,d0 ;
- fast_2: move.w (a1)+,d2 ;
- move.w (a1)+,a4 ;
- btst d0,(a0) ;
- beq.s fast_3 ;
- add.l a2,a4 ;
- bset d2,(a4) ;
- fast_3: dbf d0,fast_2 ;
- addq.l #1,a0 ;
- dbf d1,fast_4 ;
- add.w #36*288,a5 ; next letter
- add.w #36*288,a6 ;
- dbf d6,fast_5 ;
- add.l #288,dest ;
- add.l #10,d7 ;
- cmp.l #360,d7 ; all angels?
- bne.L fetch ;
- shift: lea $dff000,a6 ; remove errors
- lea shift6(pc),a0 ;
- moveq #29,d0 ;
- shift7: move.l (a0)+,a1 ;
- clr.b (a1) ;
- dbf d0,shift7 ;
- lea shifts(pc),a0 ;
- moveq #2,d0 ;
- shift2: btst #14,$02(a6) ;
- bne.s shift2 ;
- move.l (a0)+,$50(a6) ;
- move.l (a0)+,$54(a6) ;
- move.l (a0)+,$48(a6) ;
- clr.w $60(a6) ;
- clr.l $64(a6) ;
- move.l #$ffffffff,$44(a6) ;
- move.l #$1bfa0000,$40(a6) ;
- move.w (a0)+,$58(a6) ;
- dbf d0,shift2 ;
- lea $3b205,a0 ;
- shift5: bclr #0,(a0) ;
- addq.l #6,a0 ;
- cmp.l #$7cf00,a0 ;
- blo.s shift5 ;
- rts ;
- shifts: dc.l $3b200,$3b200,$3b200 ;
- dc.w $f300 ;
- dc.l $59800,$59800,$59800 ;
- dc.w $f300 ;
- dc.l $77e00,$77e00,$77e00 ;
- dc.w $2880 ;
- shift6: dc.l $4b6dd,$4b7fc,$4b7fd,$507dd
- dc.l $508fc,$508fd,$5287c,$5287d
- dc.l $5299c,$5305d,$5317c,$5317d
- dc.l $5815d,$5827c,$5827d
- dc.l $6b6dd,$6b7fc,$6b7fd,$707dd
- dc.l $708fc,$708fd,$7287c,$7287d
- dc.l $7299c,$7305d,$7317c,$7317d
- dc.l $7815d,$7827c,$7827d
- sindat: dc.w 0 ; sin a
- cosdat: dc.w 0 ; cos a
- dest: dc.l fontb+$120 ;
- clist5: dc.w $0100,$1200
- dc.w $0180,$0000
- dc.w $0182,$0000
- dc.w $01a2,$0fff
- dc.w $01aa,$0fff
- dc.w $01b2,$0fff
- dc.w $0120,sprite/$10000
- dc.w $0122,sprite
- dc.w $0124,sprite/$10000
- dc.w $0126,sprite+sprsize
- dc.w $0128,sprite/$10000
- dc.w $012a,sprite+[2*sprsize]
- dc.w $012c,sprite/$10000
- dc.w $012e,sprite+[3*sprsize]
- dc.w $0130,sprite/$10000
- dc.w $0132,sprite+[4*sprsize]
- dc.w $0134,$0000
- dc.w $0136,$0000
- dc.w $0138,$0000
- dc.w $013a,$0000
- dc.w $013c,$0000
- dc.w $013e,$0000
- dc.w $ffff,$fffe
- spr1: dc.w $857c,$8c00,$f8f3,$0000,$cd86,$0000,$cd86,$0000
- dc.w $cdf3,$0000,$cd80,$0000,$cd80,$0000,$f8f7,$0000
- dc.w $0000,$0000
- spr2: dc.w $8584,$8c00,$dfbe,$0000,$0633,$0000,$0633,$0000
- dc.w $863e,$0000,$c633,$0000,$c633,$0000,$8633,$0000
- dc.w $0000,$0000
- spr3: dc.w $858c,$8c00,$3cc5,$0000,$62c5,$0000,$62c5,$0000
- dc.w $6279,$0000,$6231,$0000,$6231,$0000,$3c31,$0000
- dc.w $0000,$0000
- spr4: dc.w $8594,$8c00,$9e3e,$0000,$a360,$0000,$a360,$0000
- dc.w $a36e,$0000,$a362,$0000,$a362,$0000,$a33c,$0000
- dc.w $0000,$0000
- spr5: dc.w $859c,$8c00,$0000,$0000,$0000,$0000,$0000,$0000
- dc.w $0000,$0000,$0000,$0000,$0000,$0000,$2222,$0000
- dc.w $0000,$0000
- dc.b 'FUCK YOU AMMON, PIRANHASEN AND OTHER SUCKERS!!'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement