rubber RUBBER spline SPLINE nummer NUMMER greetz GREETZ theend THEEND ---------------- yeah rite .... elysion presents a little bbs-tro ---------------- ---------------- let's start with a transforming rubbervector ---------------- ---------------- yo that was cool but now something else ---------------- ---------------- comming up is an elastic b-spline vector ---------------- ---------------- here is the part you have been waiting for .. ---------------- ---------------- the numbers of our boards and fax !! ---------------- ---------------- got them ??? okay ..... and now ..... ---------------- ---------------- we have got to greet some friends ---------------- ---------------- dont feel too sorry if we missed you !! ---------------- ---------------- and finally the last part the end !!! ---------------- rubber RUBBER GREETINGS FLY OUT TO THE ONES WHO DESERVE IT: YOYO 5TH GENERATION SKINDIVER ABYSS XENTEC ADDICTS CONQUEST ANARCHY DARYL ANDROMEDA AGENT ATOMIC FRONE DARK DEMON CRAZY SLIME DESERT MATTHEW EPSYLON PINHEAD LEGEND MR.MIXX MELON DEZIGN DARK NOXIOUS MARLOW PANIC PALADIN PRINCIPES CELIC SCEPTIC FLITE SCEPTIC MAGGY SUBMISSION MR.MAGNOSE SUBMISSION JOKER TECH MAC TEK CETERUS VANISH RACKLER WILDFIRE SHOCKWAVE TRIAD NEUROMANCER ORBITAL DEMENTED FORM ORBITAL REBEL FAIRLIGHT DAMAGE FAIRLIGHT V-CUT ADDONIC ORGASMATRON X-TRADE CHUCKY X-TRADE SLAM X-TRADE D-ZIRE SILENTS MR.ELAKA HARDCORE D. INCUBUS HARDCORE D. ARVID TUBA HARDCORE DESIGN LACOSTE SHINING 8 ZYNC IMAGINE TITANIC ZENITH KAYO FREESTYLE OMEGA MEGA IND. REPOMAN MEGA IND. STEARO PARADISE DAMION PLATIN ZYNC IMAGINE BULLDOG ICE MOSQUITO MANITOU KRIS REBELS DIP-STICK CRUSADER-X HAUSS SPIRIT PANIC INTRUDER SORRY IF WE FORGOT YOU BUT WE WERE IN A BIG HURRY !! call our boards -------------------- angel ice: -46 27 055 303 243 black lodge: -46 52 024 399 dark angel: -49 212 201 611 elysion fax: -49 212 49338 YEAH RIGHT A REAL B SPLINE ELASTIC VECTOR CUBE ROTATED AROUND THREE AXIS AINT THAT COOL YEAH WELL WELL LETS CONTINUE WITH SOME MORE ROUTINES you reached the end of this little bbs'tro by elysion the complete credits ---------------------- loaderpicture drawn by shrike intropart coded by tim logo by fenrir and rodder other gfx by tim loaderpart coded by tim logo by galaxy font by stormcrow the rubbervector coded by sure the vectorsplinebox coded by sure font by stormcrow bbs-number writer coded by tim font by stormcrow greetingspart coded by tim font by galaxy greets by frame one this end part coded by tim font by stromcrow mountains by galaxy music by zardax the tune during the demo was composed by galaxy don't forget to call our boards ---------------------- angel ice -46 27 055 303 243 the black lodge -46 52 024 399 dark angel -49 212 201 611 or fax elysion: -49 21 249 338 phew! that was that! now there isn't much to say so the text will restart in a few seconds end of line text restarting ; onder=$1000 ; beeld=$2a40 ; font=$6000 ; >extern "df3:dik.raw",$81000 ; >extern "df3:style.raw",$86000 >extern "df0:sullekes",$50000 org $c0 load $80000 jsr initmusic jsr $64000 jsr init jsr clea ; move.w #$7fff,$dff09a volgpart: move.w #$7ff0,$dff096 move.l #copper,$dff080 move.l #action,$74 move.l #inter6,$78 move.w #$a7f0,$dff096 ve.w #$c800,$dff09a ",$50000 org $c0 load $80000 jsr initmusic jsr $64000 jsr init jsr clea ; move.w #$7fff,$dff09a volgpart: move.w #$7ff0,$dff096 move.l #copper,$dff080 move.l #action,$74 move.l #inter6,$78 move.w #$a7f0,$dff096 move.w #$c800,$dff09a jsr fadein jsr typetext jsr fade move.w #0,langer jsr copynam move.l $0,file jsr loader tryla: cmp.w #300,langer blt tryla jsr fade3 jsr typetext jsr fade move.w #0,langer move.l $0,a0 move.w noop,$de(a0) move.w noop,$e0(a0) move.w noop,$ea(a0) move.w noop,$ec(a0) move.w noop,$16a(a0) move.w noop,$16c(a0) move.l $f8(a0),startadd move.l #addy,$f8(a0) jmp $20(a0) addy: tryla2: cmp.w #300,langer blt tryla2 jsr fade3 jsr fadeout2 move.w #$800,$dff09a move.l startadd,a0 jsr (a0) btst #6,$bfe001 bne volgpart move.b #$8a,$bfed01 rts noop: nop inter6: tst.b $bfdd00 move.w #$2000,$dff09c rte startadd: dc.l 0 copynam: lea name,a0 lea namen,a1 move.w part,d0 mulu #14,d0 add.l d0,a1 move.l #14,d7 baby: move.b (a1)+,(a0)+ dbf d7,baby add.w #1,part ; and.w #3,part ;<==================watch this rts part: dc.w 0 namen: dc.b 6,"rubber" dc.b 6,"RUBBER" dc.b 6,"spline" dc.b 6,"SPLINE" dc.b 6,"nummer" dc.b 6,"NUMMER" dc.b 6,"greetz" dc.b 6,"GREETZ" dc.b 6,"theend" dc.b 6,"THEEND" fade: move.l $dff004,d0 and.l #$1ff00,d0 cmp.l #$13000,d0 bne fade fade2: move.l $dff004,d0 and.l #$1ff00,d0 cmp.l #$13000,d0 beq fade2 add.b #2,rast1 add.b #2,rast1+20 add.b #2,rast1+40 add.b #2,rast1+60 add.b #2,rast1+80 add.b #2,rast1+100 add.b #2,rast1+120 add.b #2,rast1+140 add.b #2,rast1+160 cmp.b #$d0,rast1 bne fade rts fade3: move.l $dff004,d0 and.l #$1ff00,d0 cmp.l #$13000,d0 bne fade3 fade4: move.l $dff004,d0 and.l #$1ff00,d0 cmp.l #$13000,d0 beq fade4 sub.b #2,rast1 sub.b #2,rast1+20 sub.b #2,rast1+40 sub.b #2,rast1+60 sub.b #2,rast1+80 sub.b #2,rast1+100 sub.b #2,rast1+120 sub.b #2,rast1+140 sub.b #2,rast1+160 cmp.b #$20,rast1 bne fade3 add.w #1,texttel rts fadeout:cmp.w #5,part bne blur move.w #-1,pr_musicfadedirection blur: move.l $dff004,d0 and.l #$1ff00,d0 cmp.l #$13000,d0 bne fadeout fadeout2: move.l $dff004,d0 and.l #$1ff00,d0 cmp.l #$13000,d0 beq fadeout2 sub.b #1,sprite1+1 sub.b #1,sprite2+1 sub.b #1,sprite3+1 sub.b #1,sprite4+1 sub.b #1,sprite5+1 sub.b #1,sprite6+1 sub.b #2,zulu cmp.b #0,sprite1+1 bne fadeout rts fadeIN: move.l $dff004,d0 and.l #$1ff00,d0 cmp.l #$13000,d0 bne fadein fadein2: move.l $dff004,d0 and.l #$1ff00,d0 cmp.l #$13000,d0 beq fadein2 add.b #1,sprite1+1 add.b #1,sprite2+1 add.b #1,sprite3+1 add.b #1,sprite4+1 add.b #1,sprite5+1 add.b #1,sprite6+1 add.b #2,zulu cmp.b #$40,sprite1+1 bne fadein rts clea: lea beeld,a0 cle: move.l #0,(a0)+ cmp.l #[beeld+$35c0],a0 bne cle rts typetext: lea beeld,a0 ruig: move.l #0,(a0)+ cmp.l #[beeld+$35c0],a0 bne ruig lea text,a0 move.w texttel,d0 mulu #100,d0 add.l d0,a0 lea beeld,a2 move.l #4,d5 walk2: move.l #19,d7 walk: moveq #0,d1 lea fontok,a1 move.b (a0)+,d0 dikzoek:cmp.b (a1)+,d0 beq found cmp.b #$ff,(A1) beq notfound addq #1,d1 bra dikzoek found: divu #20,d1 move.w d1,d0 swap d1 add.w d1,d1 mulu #[32*40],d0 add.w d1,d0 lea font,a1 add.l d0,a1 move.l a2,a3 move.l #31,d6 lettel: move.w (a1),(a3) move.w $f00(a1),$1ae0(a3) add.l #40,a1 add.l #40,a3 dbf d6,lettel notfound:add.l #2,a2 dbf d7,walk add.l #$500,a2 dbf d5,walk2 rts action: movem.l d0-d7/a0-a6,-(sp) jsr beweeg jsr colrout add.w #1,langer movem.l (sp)+,d0-d7/a0-a6 move.w #$800,$dff09c rte langer: dc.w 0 colrout:lea kilo+6,a0 lea killcol,a1 lea dumdum,a3 move.w #0,tel2 lea dikkiedik,a2 move.l #0,d0 add.l tel,d0 move.l #11,d2 move.l #83,d7 catch: move.l d0,d1 asr.l d2,d1 add.w d1,d1 add.w d1,d1 move.w (a1,d1.w),(a0) move.w 2(a1,d1.w),4(a0) move.l #$1000*1*64,d3 divu (a2)+,d3 and.l #$ffff,d3 add.l d3,d0 cmp.l #$40000,d0 blt ok sub.l #$40000,d0 ok: add.l #12,a0 add.w #1,tel2 move.w (a3),d3 cmp.w tel2,d3 bne screw addq #2,a3 move.w #0,tel2 add.l #512,a1 screw: dbf d7,catch sub.l #$2800,tel cmp.l #00,tel bgt ok2 add.l #$40000,tel ok2: rts tel: dc.l $40000-$2800 tel2: dc.w 0 dumdum: dc.w 1,2,4,8,16,32,64 beweeg: lea saaisin,a0 add.l giveup,a0 move.w (a0),d0 move.b d0,sprite1 move.b d0,sprite2 move.b d0,sprite3 move.b d0,sprite4 move.b d0,sprite5 move.b d0,sprite6 add.w #150,d0 move.b d0,sprite1+2 move.b d0,sprite2+2 move.b d0,sprite3+2 move.b d0,sprite4+2 move.b d0,sprite5+2 move.b d0,sprite6+2 cmp.w #256,d0 blt boe move.b #$82,sprite1+3 move.b #$82,sprite2+3 move.b #$82,sprite3+3 move.b #$82,sprite4+3 move.b #$82,sprite5+3 move.b #$82,sprite6+3 bra boe2 boe: move.b #$80,sprite1+3 move.b #$80,sprite2+3 move.b #$80,sprite3+3 move.b #$80,sprite4+3 move.b #$80,sprite5+3 move.b #$80,sprite6+3 boe2: add.l #2,giveup and.l #$fe,giveup rts giveup: dc.l 0 even dikkiedik: DC.B $00,$08,$00,$09,$00,$0A,$00,$0B DC.B $00,$0C,$00,$0C,$00,$0E,$00,$0E DC.B $00,$10,$00,$10,$00,$10,$00,$12 DC.B $00,$12,$00,$14,$00,$14,$00,$15 DC.B $00,$16,$00,$17,$00,$18,$00,$19 DC.B $00,$19,$00,$1A,$00,$1B,$00,$1C DC.B $00,$1D,$00,$1D,$00,$1F,$00,$1F DC.B $00,$21,$00,$21,$00,$22,$00,$23 DC.B $00,$23,$00,$25,$00,$25,$00,$26 DC.B $00,$27,$00,$28,$00,$29,$00,$2A DC.B $00,$2A,$00,$2B,$00,$2C,$00,$2D DC.B $00,$2E,$00,$2E,$00,$30,$00,$30 DC.B $00,$32,$00,$32,$00,$33,$00,$34 DC.B $00,$34,$00,$36,$00,$36,$00,$37 DC.B $00,$38,$00,$39,$00,$3A,$00,$3B DC.B $00,$3B,$00,$3D,$00,$3D,$00,$3E DC.B $00,$3F,$00,$3F,$00,$41,$00,$41 DC.B $00,$43,$00,$43,$00,$44,$00,$45 DC.B $00,$45,$00,$47,$00,$47,$00,$48 DC.B $00,$49,$00,$4A,$00,$4B,$00,$4C DC.B $00,$4C,$00,$4E,$00,$4E,$00,$4F dc.b $00,$4f ;01234567890123456789 text: dc.b " ---------------- " dc.b " yeah rite .... " dc.b " elysion presents " dc.b " a little bbs-tro " dc.b " ---------------- " dc.b " ---------------- " dc.b " let's start with " dc.b " a transforming " dc.b " rubbervector " dc.b " ---------------- " dc.b " ---------------- " dc.b " yo that was cool " dc.b " but now " dc.b " something else " dc.b " ---------------- " dc.b " ---------------- " dc.b " comming up is an " dc.b " elastic b-spline " dc.b " vector " dc.b " ---------------- " dc.b " ---------------- " dc.b " here is the part " dc.b " you have been " dc.b " waiting for .. " dc.b " ---------------- " dc.b " ---------------- " dc.b " the numbers of " dc.b " our boards and " dc.b " fax !! " dc.b " ---------------- " dc.b " ---------------- " dc.b " got them ??? " dc.b " okay ..... " dc.b " and now ..... " dc.b " ---------------- " dc.b " ---------------- " dc.b " we have " dc.b " got to greet " dc.b " some friends " dc.b " ---------------- " dc.b " ---------------- " dc.b " dont feel too " dc.b " sorry if we " dc.b " missed you !! " dc.b " ---------------- " dc.b " ---------------- " dc.b " and finally " dc.b " the last part " dc.b " the end !!! " dc.b " ---------------- " texttel:dc.w 0 fontok: dc.b "abcdefghijklmnopqrstuvwxyz1234567890!?.-()",$ff even copper: dc.w $120,0,$122,$0,$124,$0,$126,$0 dc.w $128,0,$12a,$0,$12c,$0,$12e,$0 dc.w $130,0,$132,$0,$134,$0,$136,$0 dc.w $138,0,$13a,$0,$13c,$0,$13e,$0 dc.w $9c,$8800 dc.w $8e,$3081,$90 zulu: dc.w $b0c1,$92,$38,$94,$d0 dc.w $102,$0,$104,$20,$108,$0,$10a,$0 dc.w $e0,[beeld+$0000]/$10000,$e2,[beeld+$0000]&$ffff dc.w $e4,[beeld+$1ae0]/$10000,$e6,[beeld+$1ae0]&$ffff dc.w $100,$2200 dc.w $0180,$0000,$0182,$0fff,$0184,$0bbb,$0186,$0555 rast1: dc.w $300f,-2 dc.w $0180,$0000,$0182,$0ddd,$0184,$0aaa,$0186,$0444 dc.w $310f,-2 dc.w $0180,$0000,$0182,$0bbb,$0184,$0999,$0186,$0444 dc.w $330f,-2 dc.w $0180,$0000,$0182,$0999,$0184,$0777,$0186,$0333 dc.w $340f,-2 dc.w $0180,$0000,$0182,$0777,$0184,$0666,$0186,$0333 dc.w $350f,-2 dc.w $0180,$0000,$0182,$0555,$0184,$0444,$0186,$0222 dc.w $360f,-2 dc.w $0180,$0000,$0182,$0333,$0184,$0333,$0186,$0222 dc.w $370f,-2 dc.w $0180,$0000,$0182,$0111,$0184,$0111,$0186,$0111 dc.w $380f,-2 dc.w $0180,$0000,$0182,$0000,$0184,$0000,$0186,$0000 dc.w $1a2,$000,$1a2,$db6,$1a4,$fd9,$1a6,$fff dc.w $1a8,$b84,$1aa,$a63,$1ac,$852,$1ae,$731 dc.w $1b0,$620,$1b2,$510 dc.w $dbdb,-2 dc.w $e0,[onder+$0000]/$10000,$e2,[onder+$0000]&$ffff dc.w $e4,[onder+$0d20]/$10000,$e6,[onder+$0d20]&$ffff dc.w $100,$2200 kilo: dc.w $dbe1,-2,$182,$00f,$186,$fff blk.l 84*3,0 dc.l -2 init: move.l #sprite1,d0 move.w d0,copper+6 swap d0 move.w d0,copper+2 move.l #sprite2,d0 move.w d0,copper+14 swap d0 move.w d0,copper+10 move.l #sprite3,d0 move.w d0,copper+22 swap d0 move.w d0,copper+18 move.l #sprite4,d0 move.w d0,copper+30 swap d0 move.w d0,copper+26 move.l #sprite5,d0 move.w d0,copper+38 swap d0 move.w d0,copper+34 move.l #sprite6,d0 move.w d0,copper+46 swap d0 move.w d0,copper+42 lea kilo,a0 move.l #$dbe1fffe,d0 move.l #83,d7 rijbewijs: move.l d0,(a0)+ move.l #$182000f,(a0)+ move.l #$1860fff,(a0)+ add.l #$01000000,d0 dbf d7,rijbewijs rts killcol:blk.l 64,$00040444 blk.l 64,$04440004 blk.l 64,$00050555 blk.l 64,$05550005 blk.l 64,$00060666 blk.l 64,$06660006 blk.l 64,$00070777 blk.l 64,$07770007 blk.l 64,$00080888 blk.l 64,$08880008 blk.l 64,$00090999 blk.l 64,$09990009 blk.l 64,$000a0aaa blk.l 64,$0aaa000a saaisin: DC.W $0065,$0067,$006A,$006C,$006F,$0071,$0074,$0076,$0079,$007B DC.W $007D,$0080,$0082,$0084,$0086,$0088,$008A,$008C,$008D,$008F DC.W $0090,$0092,$0093,$0094,$0095,$0096,$0097,$0098,$0098,$0099 DC.W $0099,$0099,$0099,$0099,$0099,$0099,$0099,$0098,$0097,$0096 DC.W $0096,$0095,$0093,$0092,$0091,$008F,$008E,$008C,$008A,$0088 DC.W $0086,$0084,$0082,$0080,$007E,$007C,$0079,$0077,$0074,$0072 DC.W $006F,$006D,$006A,$0068,$0065,$0063,$0061,$005E,$005C,$0059 DC.W $0057,$0054,$0052,$004F,$004D,$004B,$0049,$0046,$0044,$0042 DC.W $0040,$003F,$003D,$003B,$003A,$0038,$0037,$0036,$0035,$0034 DC.W $0033,$0032,$0032,$0031,$0031,$0031,$0031,$0031,$0031,$0031 DC.W $0031,$0032,$0033,$0033,$0034,$0035,$0036,$0038,$0039,$003A DC.W $003C,$003E,$003F,$0041,$0043,$0045,$0047,$004A,$004C,$004E DC.W $0050,$0053,$0055,$0058,$005A,$005D,$005F,$0062 loader: move.w #$0008,$dff09a move.l #kaykay,$68 move.b #$7f,$bfed01 move.b #$ff,$bfe401 move.b #$0a,$bfe501 move.b #$19,$bfee01 move.b #$81,$bfed01 move.w #$8210,$dff096 move.w #$c008,$dff09a jsr driveinit jsr zero move.w #880,block jsr leesblok jsr copyroot jsr searchf jsr driveoff move.w #$0008,$dff09a rts kaykay: move.w #1,sux tst.b $bfed01 move.w #$8,$dff09c rte searchf:lea root+24,a0 moveq #0,d0 moveq #0,d7 lea name2,a1 move.b (a1),d7 sub.w #1,d7 move.b (a1)+,d0 has: mulu #13,d0 moveq #0,d1 move.b (a1)+,d1 add.l d1,d0 and.l #2047,d0 dbf d7,has divu #72,d0 swap d0 add.w d0,d0 add.w d0,d0 move.l (a0,d0.w),d0 saai: move.w d0,block jsr leesblok lea trackin,a1 move.w sect,d0 mulu #512,d0 lea (a1,d0.l),a1 lea 432(a1),a2 lea name,a3 moveq #0,d0 move.b (a3)+,d0 cmp.b (a2)+,d0 bne next2 sub.w #1,d0 filenam:move.b (a3)+,d1 cmp.b (a2)+,d1 bne next2 dbf d0,filenam lea filepoints,a3 filelis:lea 312(a1),a2 move.l #71,d7 nogeens:move.l -(a2),d0 tst.l d0 beq next3 move.w d0,(a3)+ dbf d7,nogeens move.l 504(a1),d0 tst.l d0 beq next3 move.w d0,block jsr leesblok lea trackin,a1 move.w sect,d0 mulu #512,d0 lea (a1,d0.l),a1 bra filelis next3: move.w #$ffff,(a3)+ move.l file,a2 lea filepoints,a3 kilosa: move.w (a3)+,d0 cmp.w #$ffff,d0 beq out move.w d0,block jsr leesblok move.w sect,d0 mulu #512,d0 lea trackin+24,a4 lea (a4,d0.l),a4 move.l #121,d6 loopje: move.l (a4)+,(a2)+ dbf d6,loopje bra kilosa next2: move.l 496(a1),d0 tst.l d0 bne saai bra halve out: rts copyroot: move.l #127,d7 lea root,a1 lea trackin,a0 copyr: move.l (a0)+,(a1)+ dbf d7,copyr rts leesblok: movem.l d0-d7/a0-a6,-(a7) jsr sblock jsr sside jsr search jsr load movem.l (a7)+,d0-d7/a0-a6 rts sblock: moveq #0,d0 move.w block,d0 divu #22,d0 move.w d0,track moveq #0,d0 move.w block,d0 divu #11,d0 move.l d0,d1 and.w #$1,d0 move.w d0,side swap d1 move.w d1,sect rts mouse: btst #6,$bfe001 bne mouse rts sside: cmp.w #0,side beq sidea bclr #2,$bfd100 nop nop rts sidea: bset #2,$bfd100 nop nop rts driveinit: move.b #$7f,$bfd100 nop nop move.b #$77,$bfd100 nop nop jsr drvwait rts driveoff: move.b #$ff,$bfd100 nop nop move.b #$f7,$bfd100 nop nop move.b #$ff,$bfd100 rts zero: bset #1,$bfd100 bclr #0,$bfd100 nop nop bset #0,$bfd100 nop nop jsr drvwait btst #4,$bfe001 bne zero move.w #0,current rts search: move.w track,d0 cmp.w current,d0 bgt voorw cmp.w current,d0 blt terug rts terug: moveq #0,d0 move.w current,d0 sub.w track,d0 sub.w #1,d0 s2: bset #1,$bfd100 bclr #0,$bfd100 nop nop bset #0,$bfd100 nop nop jsr drvwait dbf d0,s2 move.w track,current rts voorw: move.w track,d0 sub.w current,d0 sub.w #1,d0 s3: bclr #1,$bfd100 bclr #0,$bfd100 nop nop bset #0,$bfd100 nop nop jsr drvwait dbf d0,s3 move.w track,current rts load: move.w inbuf,d0 lsr.w #1,d0 cmp.w track,d0 bne exload2 move.w inbuf,d0 and.w #$1,d0 cmp.w side,d0 beq exload exload2:move.w track,d0 add.w d0,d0 add.w side,d0 move.w d0,inbuf move.w #0,cola afstraf:move.w #$2,$dff09c move.w #$4489,$dff07e move.w #$7fff,$dff09e move.w #$9500,$dff09e move.l #trackbuffer,$dff020 move.w #$4000,$dff024 move.w #$8000+$19f0,$dff024 move.w #$8000+$19f0,$dff024 dwait: btst #1,$dff01f beq dwait lea trackbuffer,a0 lea trackin,a1 move.l #$55555555,d2 move.l #10,d6 gap3: cmp.w #$4489,(a0)+ bne gap3 gap2: cmp.w #$4489,(a0) bne gap lea 2(a0),a0 bra gap2 gap: move.l (a0)+,d0 move.l (a0)+,d1 and.l d2,d0 and.l d2,d1 add.l d0,d0 or.l d1,d0 and.l #$0000ff00,d0 lsl.l #1,d0 lea (a1,d0.l),a2 lea 40(a0),a0 move.l (a0)+,d4 move.l (a0)+,d5 and.l d2,d4 and.l d2,d5 add.l d4,d4 or.l d5,d4 move.l #0,d3 move.l #127,d7 decode: move.l 512(a0),d1 move.l (a0)+,d0 eor.l d0,d3 eor.l d1,d3 and.l d2,d0 and.l d2,d1 add.l d0,d0 or.l d0,d1 move.l d1,(a2)+ dbf d7,decode and.l d2,d3 cmp.l d4,d3 bne fuckyou lea 512(a0),a0 dbf d6,gap3 exload: rts fuckyou:add.w #1,cola cmp.w #3,cola bne afstraf move.w #$ffff,d7 halve: move.w d7,$dff180 dbf d7,halve btst #6,$bfe001 bne halve move.w #0,cola bra afstraf drvwait:move.w #0,sux move.b #$19,$bfee01 oetje2: tst.w sux beq oetje2 rts name: dc.b 6,"rubber" name2: dc.b 6,"RUBBER" even inbuf: dc.w 160 block: dc.w 11 current:dc.w 0 track: dc.w 0 side: dc.w 0 sect: dc.w 0 sux: dc.w 0 cola: dc.w 0 met: dc.w 0 filepoints: blk.w 2000,0 trackbuffer: blk.l $1000 trackin:blk.l $580 root: blk.l 128 file: dc.l $0000 sprite1:dc.l $3000c680 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $03FF,$0000 dc.w $0AFF,$1400 dc.w $00FE,$0FFF dc.w $0296,$03E8 dc.w $01CF,$03F0 dc.w $01D4,$01E2 dc.w $0001,$0001 dc.w $0007,$0004 dc.w $0006,$0008 dc.w $003D,$0020 dc.w $003F,$0040 dc.w $01FB,$0000 dc.w $03D6,$0001 dc.w $008D,$0023 dc.w $0E7F,$0840 dc.w $03BF,$1CFF dc.w $1D81,$1FFE dc.w $0F62,$1FFD dc.w $07C2,$03EB dc.w $01F0,$02E0 dc.w $00C0,$0040 dc.w $0015,$0006 dc.w $002F,$0030 dc.w $003A,$0040 dc.w $0055,$008A dc.w $0030,$0160 dc.w $01E8,$0280 dc.w $0351,$0504 dc.w $0240,$0620 dc.w $0580,$0600 dc.w $0100,$0600 dc.w $0000,$0000 dc.w $0E80,$0080 dc.w $1180,$0800 dc.w $0F80,$1840 dc.w $17C0,$1C20 dc.w $1CE0,$1E10 dc.w $1F74,$0F0C dc.w $0CBE,$1F81 dc.w $0A7F,$07C0 dc.w $042B,$0FF0 dc.w $024F,$07BF dc.w $0117,$02E8 dc.w $00AD,$0052 dc.w $000B,$0024 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $00AF,$0030 dc.w $0CBF,$2F00 dc.w $03FF,$0FFF dc.w $01A1,$02FE dc.w $0078,$004F dc.w $0003,$0004 dc.w $0000,$0000 dc.w $0026,$004A dc.w $0088,$0130 dc.w $0390,$0440 dc.w $0120,$0880 dc.w $0300,$0020 dc.w $0880,$1200 dc.w $0F00,$0040 dc.w $19C0,$0440 dc.w $1FC0,$0400 dc.w $1F00,$0480 dc.w $0D80,$0480 dc.w $0B80,$1400 dc.w $0380,$0E80 dc.w $0B00,$0681 dc.w $08C1,$0600 dc.w $0CC3,$0F40 dc.w $0787,$0340 dc.w $0745,$0303 dc.w $01DC,$030F dc.w $0191,$019E dc.w $0000,$0000 dc.w $0600,$0100 dc.w $0BC0,$1040 dc.w $1DC0,$0820 dc.w $1B60,$0E10 dc.w $1CB0,$1F80 dc.w $1A10,$1FC8 dc.w $0998,$0C60 dc.w $0168,$0190 dc.w $0000,$0000 dc.w $006D,$0043 dc.w $0087,$0030 dc.w $006D,$0058 dc.w $003B,$0024 dc.w $0046,$0010 dc.w $057D,$0180 dc.w $07EB,$1000 dc.w $19D7,$1001 dc.w $1522,$18C2 dc.w $1FF0,$1F04 dc.w $1870,$1F88 dc.w $1C00,$1FA0 dc.w $1C00,$1E80 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0BFA,$1006 dc.w $13FF,$1800 dc.w $15FF,$1800 dc.w $1FF0,$1FFF dc.w $1AAE,$1F50 dc.w $1C5F,$1FA0 dc.w $1A3D,$1FC0 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $03C0,$0800 dc.w $09A0,$0C00 dc.w $0560,$0E00 dc.w $0BE0,$0F00 dc.w $05C0,$0F20 dc.w $09E0,$0E20 dc.w $0ACD,$0602 dc.w $0BC7,$0603 dc.w $0B83,$0E41 dc.w $03C1,$0640 dc.w $0381,$0600 dc.w $0680,$0200 dc.w $09FA,$1206 dc.w $11FF,$1900 dc.w $15FF,$1900 dc.w $1F03,$1FFC dc.w $105D,$1FA0 dc.w $1C2F,$1FD0 dc.w $1A57,$1FA8 dc.w $0101,$0180 dc.w $0183,$0080 dc.w $0003,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 sprite2:dc.l $3000c680 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $1FFF,$0000 dc.w $11FF,$0000 dc.w $0800,$0000 dc.w $0401,$0000 dc.w $0000,$0000 dc.w $000E,$0000 dc.w $0001,$0000 dc.w $0007,$0000 dc.w $000F,$0010 dc.w $003E,$0000 dc.w $0079,$0080 dc.w $00F7,$0100 dc.w $01EF,$0200 dc.w $03DF,$0400 dc.w $099F,$0000 dc.w $1000,$0000 dc.w $0000,$0000 dc.w $1000,$0000 dc.w $001B,$0000 dc.w $0210,$0000 dc.w $00A0,$0000 dc.w $0007,$0018 dc.w $003F,$0000 dc.w $007F,$0000 dc.w $00E0,$0000 dc.w $018F,$0000 dc.w $023F,$0000 dc.w $04FC,$0003 dc.w $01E0,$0010 dc.w $0080,$0040 dc.w $0100,$0080 dc.w $0000,$0000 dc.w $1780,$0000 dc.w $0780,$0040 dc.w $03C0,$0000 dc.w $01E0,$0000 dc.w $01F0,$0000 dc.w $00FC,$0002 dc.w $107F,$0000 dc.w $001F,$0000 dc.w $0807,$0000 dc.w $0400,$0000 dc.w $0200,$0000 dc.w $0080,$0100 dc.w $0030,$0040 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $003F,$00C0 dc.w $307F,$0000 dc.w $0800,$0000 dc.w $0200,$0000 dc.w $0060,$0000 dc.w $0006,$0000 dc.w $0000,$0000 dc.w $0072,$0080 dc.w $01C0,$0204 dc.w $0720,$0008 dc.w $0E40,$0010 dc.w $0CE0,$1000 dc.w $15C0,$0020 dc.w $11C0,$0000 dc.w $03C0,$0000 dc.w $0380,$0040 dc.w $0380,$0000 dc.w $1380,$0000 dc.w $1100,$0080 dc.w $0180,$1001 dc.w $0181,$0000 dc.w $0981,$0042 dc.w $08C2,$0000 dc.w $00C4,$0000 dc.w $04C8,$0000 dc.w $0040,$0000 dc.w $0001,$0000 dc.w $0000,$0000 dc.w $0F00,$1080 dc.w $17C0,$0000 dc.w $13E0,$0000 dc.w $00F0,$0000 dc.w $0070,$0008 dc.w $0038,$0000 dc.w $0E18,$0000 dc.w $01C8,$0000 dc.w $0000,$0000 dc.w $007F,$0000 dc.w $00CF,$0100 dc.w $0063,$0000 dc.w $0030,$0000 dc.w $001B,$0060 dc.w $01FB,$0600 dc.w $0FF7,$0000 dc.w $07EF,$0000 dc.w $021E,$0000 dc.w $000C,$0000 dc.w $0008,$0000 dc.w $0060,$0010 dc.w $0180,$0040 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $07FE,$0001 dc.w $07FF,$0000 dc.w $03FF,$0000 dc.w $0000,$0000 dc.w $0001,$0000 dc.w $0000,$0000 dc.w $0002,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $07E0,$0000 dc.w $03E0,$0000 dc.w $00E0,$0000 dc.w $00E0,$0000 dc.w $00E0,$0000 dc.w $00E0,$0000 dc.w $01C9,$0020 dc.w $09C4,$0000 dc.w $09C2,$0000 dc.w $01C0,$0000 dc.w $0181,$0040 dc.w $0180,$0000 dc.w $04FE,$0001 dc.w $06FF,$0000 dc.w $02FF,$0000 dc.w $0000,$0000 dc.w $0002,$0000 dc.w $0000,$0000 dc.w $0002,$0000 dc.w $0200,$0000 dc.w $0102,$0000 dc.w $0081,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 sprite3:dc.l $3008c680 dc.w $0000,$0000 dc.w $0001,$0001 dc.w $0003,$0002 dc.w $000B,$000C dc.w $FFFF,$0000 dc.w $8263,$0000 dc.w $817E,$FFF8 dc.w $803E,$0021 dc.w $5FFC,$1084 dc.w $7FF8,$4308 dc.w $FFE0,$0C20 dc.w $8100,$3080 dc.w $0000,$C200 dc.w $6000,$0800 dc.w $D000,$3000 dc.w $8050,$4060 dc.w $15E0,$0608 dc.w $7FEC,$8004 dc.w $FFDE,$0002 dc.w $A5FE,$FA01 dc.w $A8B7,$0000 dc.w $F449,$0000 dc.w $BA15,$0003 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $FA00,$0600 dc.w $FF40,$00C0 dc.w $67C0,$0020 dc.w $01E0,$FC10 dc.w $4BF0,$0708 dc.w $24FC,$0184 dc.w $8BF8,$2044 dc.w $0F5E,$08A2 dc.w $02BC,$0172 dc.w $015E,$00F0 dc.w $002E,$00F8 dc.w $005E,$0078 dc.w $001E,$005C dc.w $0000,$0000 dc.w $0030,$0028 dc.w $00B0,$00C0 dc.w $0AD8,$0300 dc.w $97A8,$9828 dc.w $FE40,$00C0 dc.w $F590,$0310 dc.w $FA00,$FC20 dc.w $D500,$0040 dc.w $EB00,$0000 dc.w $BC06,$0403 dc.w $015F,$0060 dc.w $AFFE,$3000 dc.w $FFFE,$0000 dc.w $FF4F,$0000 dc.w $E071,$FF80 dc.w $7901,$8000 dc.w $B400,$4000 dc.w $7A81,$8001 dc.w $0000,$0000 dc.w $1A00,$0600 dc.w $2FA0,$0060 dc.w $1FF8,$0008 dc.w $27FC,$0000 dc.w $135E,$0780 dc.w $42AF,$45F0 dc.w $0273,$45F8 dc.w $6F37,$00F8 dc.w $533B,$083C dc.w $B017,$883C dc.w $4C27,$911C dc.w $A617,$100C dc.w $6C7B,$1244 dc.w $D81B,$2444 dc.w $EC03,$2408 dc.w $C04D,$4881 dc.w $E0E3,$9110 dc.w $C1D4,$2220 dc.w $0DA4,$0044 dc.w $73F8,$4D80 dc.w $6740,$BE90 dc.w $78A0,$1F20 dc.w $1A00,$0480 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0050,$001F dc.w $AAFC,$6301 dc.w $FFFB,$0001 dc.w $CFFA,$0000 dc.w $22F6,$1C00 dc.w $97E4,$03F2 dc.w $EEB6,$8142 dc.w $1564,$2280 dc.w $12D0,$1904 dc.w $0164,$0184 dc.w $0000,$0000 dc.w $00A8,$00D8 dc.w $063C,$0404 dc.w $06B8,$2FE4 dc.w $071E,$01E2 dc.w $0174,$0092 dc.w $00BE,$0040 dc.w $003E,$0008 dc.w $0062,$0008 dc.w $0016,$0000 dc.w $000A,$0024 dc.w $0002,$0004 dc.w $0002,$0015 dc.w $0012,$0014 dc.w $0151,$0066 dc.w $97F6,$1801 dc.w $FEBD,$0004 dc.w $EBFE,$0004 dc.w $7C94,$800E dc.w $A006,$004E dc.w $D408,$0204 dc.w $300C,$6000 dc.w $0008,$0008 dc.w $0004,$0000 dc.w $00B0,$00C8 dc.w $0D78,$0804 dc.w $005E,$2FC2 dc.w $082C,$0BE2 dc.w $0216,$02F0 dc.w $000E,$0070 dc.w $000A,$0038 dc.w $0066,$0058 dc.w $8006,$401C dc.w $6026,$003C dc.w $2016,$900C dc.w $F002,$800C dc.w $3013,$C01C dc.w $32BA,$C0C4 dc.w $BFF5,$4008 dc.w $3F5F,$4021 dc.w $A8BE,$4700 dc.w $F2FC,$0002 dc.w $450E,$0052 dc.w $8410,$0204 dc.w $7818,$0820 dc.w $8020,$2000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 sprite4:dc.l $3008c680 dc.w $0000,$0000 dc.w $0001,$0000 dc.w $0003,$0000 dc.w $000F,$0010 dc.w $FFFE,$0000 dc.w $FD9C,$0000 dc.w $0001,$0000 dc.w $7FC3,$0000 dc.w $DE04,$2000 dc.w $7818,$0000 dc.w $E060,$0000 dc.w $CE80,$0040 dc.w $3E00,$0100 dc.w $F800,$0400 dc.w $F000,$0000 dc.w $C070,$2080 dc.w $07F8,$9800 dc.w $FFFC,$0000 dc.w $FFFE,$0000 dc.w $000F,$0000 dc.w $57FF,$0000 dc.w $0BFF,$0000 dc.w $C5FF,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $FE00,$0100 dc.w $FFC0,$0000 dc.w $9FE0,$0000 dc.w $03F0,$0000 dc.w $B0F8,$0000 dc.w $DA7C,$0000 dc.w $343C,$C002 dc.w $0C1E,$0000 dc.w $020E,$0000 dc.w $0006,$0000 dc.w $0006,$0000 dc.w $0082,$0000 dc.w $0062,$0000 dc.w $0000,$0000 dc.w $0038,$0000 dc.w $00F8,$0000 dc.w $03E8,$0C00 dc.w $9FD8,$6000 dc.w $FF30,$0008 dc.w $F870,$0000 dc.w $01E0,$0000 dc.w $2AC0,$0000 dc.w $1500,$0080 dc.w $4C03,$0004 dc.w $007F,$0180 dc.w $3FFF,$C000 dc.w $FFFF,$0000 dc.w $FFF1,$0000 dc.w $000F,$0000 dc.w $06FF,$0000 dc.w $0BFF,$0000 dc.w $057F,$0000 dc.w $0000,$0000 dc.w $3E00,$0100 dc.w $1FE0,$0000 dc.w $2FF8,$0000 dc.w $1FFC,$0002 dc.w $283E,$4001 dc.w $780F,$0000 dc.w $7807,$0000 dc.w $5003,$0000 dc.w $2403,$0000 dc.w $C703,$0000 dc.w $A723,$0000 dc.w $CE23,$0100 dc.w $8E43,$0000 dc.w $0C63,$0200 dc.w $1C77,$0080 dc.w $38F7,$0000 dc.w $11EE,$0001 dc.w $23CC,$0402 dc.w $8B9C,$1000 dc.w $6008,$0000 dc.w $8030,$0000 dc.w $4060,$0000 dc.w $1180,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $001F,$8060 dc.w $E3FF,$1C00 dc.w $FFFF,$0000 dc.w $3FFE,$0001 dc.w $C1FE,$0000 dc.w $E80E,$0000 dc.w $D00E,$0000 dc.w $281C,$4000 dc.w $1C2C,$0000 dc.w $01DC,$0200 dc.w $0000,$0000 dc.w $00F8,$0000 dc.w $07FC,$0800 dc.w $301C,$0000 dc.w $040E,$0800 dc.w $000E,$0000 dc.w $0006,$0000 dc.w $0046,$0000 dc.w $0056,$0000 dc.w $002A,$0000 dc.w $0032,$0000 dc.w $001A,$0020 dc.w $001B,$0000 dc.w $001B,$0000 dc.w $0078,$0180 dc.w $1FF8,$A000 dc.w $FFC3,$0000 dc.w $FC32,$0000 dc.w $03F2,$0000 dc.w $5FC2,$0020 dc.w $2E00,$0102 dc.w $E008,$1000 dc.w $000C,$0000 dc.w $0004,$0000 dc.w $00F8,$0100 dc.w $0EFC,$0000 dc.w $303E,$0000 dc.w $0C1E,$0000 dc.w $030E,$0000 dc.w $0086,$0000 dc.w $0046,$0000 dc.w $0042,$0000 dc.w $C022,$0000 dc.w $E022,$0000 dc.w $7002,$0000 dc.w $3012,$0000 dc.w $3013,$0000 dc.w $30FB,$0300 dc.w $3FF3,$0000 dc.w $BF8F,$0000 dc.w $B07E,$0000 dc.w $0FFE,$0000 dc.w $BFD6,$0020 dc.w $7E1C,$0000 dc.w $9828,$0004 dc.w $6030,$0008 dc.w $8000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 sprite5:dc.l $3010c680 dc.w $0000,$0000 dc.w $C000,$6000 dc.w $E000,$0000 dc.w $E000,$0000 dc.w $E000,$2000 dc.w $6800,$1800 dc.w $B000,$1000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $8000,$0000 dc.w $E000,$4000 dc.w $D000,$3000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $8000,$0000 dc.w $4000,$0000 dc.w $8000,$4000 dc.w $C000,$4000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $8000,$8000 dc.w $8000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $8000,$8000 dc.w $0000,$8000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $0000,$8000 dc.w $8000,$8000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$4000 dc.w $A000,$0000 dc.w $C000,$0000 dc.w $0000,$C000 dc.w $8000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $2000,$2000 dc.w $4000,$6000 dc.w $6000,$8000 dc.w $6000,$2000 dc.w $C000,$4000 dc.w $8000,$8000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 sprite6:dc.l $3010c680 dc.w $0000,$0000 dc.w $A000,$0000 dc.w $8000,$0000 dc.w $2000,$0000 dc.w $2000,$0000 dc.w $F800,$0000 dc.w $7000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$8000 dc.w $C000,$2000 dc.w $F000,$0000 dc.w $0000,$8000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $C000,$0000 dc.w $C000,$0000 dc.w $C000,$0000 dc.w $C000,$0000 dc.w $8000,$4000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $0000,$8000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$8000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $8000,$0000 dc.w $0000,$8000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $6000,$0000 dc.w $C000,$0000 dc.w $0000,$2000 dc.w $4000,$0000 dc.w $8000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $2000,$0000 dc.w $6000,$0000 dc.w $E000,$0000 dc.w $E000,$0000 dc.w $C000,$0000 dc.w $8000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 dc.w $0000,$0000 initmusic: move.w #$7fff,$dff09a move.l #inter,$6c move.l #inter7,$78 move.l #pr_data,pr_module bsr.w pr_init move.w #$e020,$dff09a rts inter: movem.l d0-d7/a0-a6,-(sp) bsr.w pr_music movem.l (sp)+,d0-d7/a0-a6 move.w #$20,$dff09c rte inter7: move.w #$2000,$dff09c rte ***************************************** * * * PRORUNNER V2.0 * * -------------- * * CODED BY COSMOS OF SANITY IN 1992 * * * ***************************************** * * * Supporting the following effects: * * * * - Running with 68010/20/30/40 * * - Using VBR-register * * - Packed/Normal PT-Moduleformat * * - Fade Sound in/out * * - Variable Musicfadespeed * * - Variable Interrupt-timing * * - Finetune * * - Normal play or Arpeggio * * - Slide Frequenz up * * - Slide Frequenz down * * - Tone Portamento * * - Vibrato * * - Tone Portamento+Volume Slide * * - Vibrato + Volume Slide * * - Tremolo * * - Set SampleOffset * * - Volume Slide * * - Position Jump * * - Set Volume * * - Pattern Break * * - Set Speed * * - E-Commands: * * - Set Filter * * - Fine Slide Up * * - Fine Slide Down * * - Glissando Control * * - Set Vibrato Waveform * * - Set Finetune * * - Set Loop / Jump to Loop * * - Set Tremolo Waveform * * - Retrig Note * * - Fine VolumeSlide Up * * - Fine VolumeSlide Down * * - NoteCut * * - NoteDelay * * - PatternDelay * * - FunkRepeat * * * ***************************************** YES=1 NO=0 INCLUDEFADINGROUTINE=YES PACKEDSONGFORMAT=NO FADINGSTEPS=6 ; ( 0< FADINGSTEPS <9 ) MAXVOLUME=2^FADINGSTEPS INTERRUPTTIME=$180 SAMPLELENGTHOFFSET=4 SAMPLEVOLUMEOFFSET=6 SAMPLEREPEATPOINTOFFSET=8 SAMPLEWITHLOOP=12 SAMPLEREPEATLENGTHOFFSET=14 SAMPLEFINETUNEOFFSET=16 * Init-Routine ******************************************************* pr_init: lea pr_framecounter(pc),a6 move.w #$7fff,pr_oldledvalue-pr_framecounter(a6) move.l pr_module(pc),a0 cmp.l #0,a0 bne.s pr_init1 rts pr_init1: IFEQ PACKEDSONGFORMAT-YES cmp.l #'SNT!',(a0) beq.s pr_init2 ELSE cmp.l #'M.K.',1080(a0) beq.s pr_init2 cmp.l #'SNT.',1080(a0) beq.s pr_init2 ENDC rts pr_init2: IFEQ PACKEDSONGFORMAT-YES lea 8(a0),a1 ELSE lea 20(a0),a1 ENDC lea pr_Sampleinfos(pc),a2 moveq.l #32,d7 moveq #30,d0 pr_init3: IFNE PACKEDSONGFORMAT-YES lea 22(a1),a1 ; Samplenamen überspringen ENDC move.w (a1)+,SAMPLELENGTHOFFSET(a2) ; Samplelength in Words lea pr_periods(pc),a3 moveq #$f,d2 and.b (a1)+,d2 ; Finetuning mulu.w #36*2,d2 add.l d2,a3 move.l a3,SAMPLEFINETUNEOFFSET(a2) moveq #0,d1 move.b (a1)+,d1 move.w d1,SAMPLEVOLUMEOFFSET(a2) ; Volume moveq.l #0,d1 move.w (a1)+,d1 ; Repeatpoint in Bytes add.l d1,d1 move.l d1,SAMPLEREPEATPOINTOFFSET(a2) move.w (a1)+,d1 clr.w SAMPLEWITHLOOP(a2) cmp.w #1,d1 bls.s pr_init3_2 addq.w #1,SAMPLEWITHLOOP(a2) pr_init3_2: move.w d1,SAMPLEREPEATLENGTHOFFSET(a2) ; Repeatlength add.l d7,a2 dbf d0,pr_init3 moveq #0,d0 IFEQ PACKEDSONGFORMAT-YES move.b 256(a0),d0 ELSE move.b 950(a0),d0 ; Number of patterns ENDC subq.w #1,d0 move.w d0,pr_highestpattern-pr_framecounter(a6) moveq.l #0,d1 lea pr_Patternpositions(pc),a3 IFEQ PACKEDSONGFORMAT-YES lea 258(a0),a1 ; 1.Patternpos lea 770(a0),a2 ; 1.Patterndata lea 642(a0),a4 ; 1.Patternoffset pr_init4: moveq.l #0,d2 move.b (a1)+,d2 add.w d2,d2 move.w (a4,d2.w),d2 add.l a2,d2 move.l d2,(a3)+ dbf d0,pr_init4 ELSE lea 952(a0),a1 ; 1. Patternpos lea 1084(a0),a2 ; 1. Patterndata pr_init4: move.b (a1)+,d2 ; x. Patternpos moveq.l #0,d3 move.b d2,d3 mulu.w #1024,d3 add.l a2,d3 move.l d3,(a3)+ dbf d0,pr_init4 ENDC IFEQ PACKEDSONGFORMAT-YES move.l 4(a0),d2 add.l a0,d2 ELSE lea 952(a0),a1 moveq.l #0,d1 moveq #127,d0 pr_init4_1: move.b (a1)+,d2 cmp.b d1,d2 ; Highest Pattern ? bls.s pr_init4_2 move.b d2,d1 pr_init4_2: dbf d0,pr_init4_1 addq.w #1,d1 move.l a0,d2 mulu.w #1024,d1 ; Highest Pattern * 1024 Bytes add.l #1084,d2 add.l d1,d2 ENDC lea pr_Sampleinfos(pc),a3 lea pr_Sampleinfos+SAMPLELENGTHOFFSET(pc),a2 moveq.l #32,d7 move.l d2,(a3) moveq #29,d0 pr_init4_3: move.l (a3),d1 add.l d7,a3 moveq.l #0,d2 move.w (a2),d2 add.l d7,a2 add.l d2,d2 add.l d2,d1 move.l d1,(a3) dbf d0,pr_init4_3 lea pr_Sampleinfos(pc),a2 lea pr_Sampleinfos+SAMPLEREPEATPOINTOFFSET(pc),a3 moveq.l #32,d7 moveq #30,d0 pr_init4_4: move.l (a2),d1 add.l d1,(a3) add.l d7,a2 add.l d7,a3 dbf d0,pr_init4_4 IFNE PACKEDSONGFORMAT-YES cmp.l #'SNT.',1080(a0) beq.s pr_init7 lea 1084(a0),a1 move.l pr_Sampleinfos(pc),a2 move.b #$f0,d6 move.w #$fff,d7 pr_init5: move.b (a1),d0 move.b 2(a1),d1 move.w (a1),d2 and.w d7,2(a1) and.w d7,d2 and.b d6,d0 lsr.b #4,d1 or.b d1,d0 move.b d0,(a1) tst.w d2 beq.s pr_init5_3 lea pr_periods(pc),a4 moveq #0,d1 pr_init5_2: addq.w #1,d1 cmp.w (a4)+,d2 bne.s pr_init5_2 move.b d1,1(a1) pr_init5_3: cmp.b #$d,2(a1) bne.s pr_init5_4 moveq #0,d1 move.b 3(a1),d1 moveq #$f,d2 and.w d1,d2 lsr.w #4,d1 mulu.w #10,d1 add.w d2,d1 cmp.b #63,d1 bls.s pr_init5_3_2 moveq #63,d1 pr_init5_3_2: move.b d1,3(a1) pr_init5_4: addq.l #4,a1 cmp.l a2,a1 blt.s pr_init5 move.l #'SNT.',1080(a0) ENDC pr_init7: lea pr_Arpeggiofastlist(pc),a2 lea pr_Arpeggiofastlistperiods(pc),a1 lea 35*2(a1),a1 ; to the end of list... moveq #0,d0 moveq #35,d1 move.w #999,d2 moveq #0,d6 pr_init8: move.w -(a1),d7 addq.w #1,d6 pr_init8_2: cmp.w d7,d0 blt.s pr_init8_4 subq.w #1,d1 tst.b d1 bne.s pr_init8 pr_init8_3: move.b d1,(a2)+ dbf d2,pr_init8_3 bra.s pr_init8_5 pr_init8_4: move.b d1,(a2)+ addq.w #1,d0 dbf d2,pr_init8_2 pr_init8_5: lea pr_Channel0(pc),a1 move.w #1,pr_Channel1-pr_Channel0(a1) move.w #1,pr_Channel2-pr_Channel0(a1) move.w #1,pr_Channel3-pr_Channel0(a1) move.w #1,(a1)+ moveq #(pr_Channel1-pr_Channel0)/2-2,d0 pr_init9_2: clr.w pr_Channel1-pr_Channel0(a1) clr.w pr_Channel2-pr_Channel0(a1) clr.w pr_Channel3-pr_Channel0(a1) clr.w (a1)+ dbf d0,pr_init9_2 lea pr_fastperiodlist(pc),a1 lea pr_periods(pc),a2 move.l a2,(a1) moveq.l #36*2,d1 moveq #14,d0 pr_init9_3: move.l (a1)+,d2 add.l d1,d2 move.l d2,(a1) dbf d0,pr_init9_3 lea pr_Arpeggiofastdivisionlist(pc),a1 moveq #0,d1 move.w #$ff,d0 pr_init9_4: move.b d1,(a1)+ subq.b #1,d1 bpl.s pr_init9_4_2 moveq #2,d1 pr_init9_4_2: dbf d0,pr_init9_4 move.w #6,pr_speed-pr_framecounter(a6) move.w pr_speed(pc),(a6) clr.w pr_Patternct-pr_framecounter(a6) move.w pr_highestpattern(pc),d0 move.w pr_startposition(pc),d1 blt.s pr_init9_5 cmp.w d0,d1 bls.s pr_init9_5_2 pr_init9_5: clr.w pr_startposition-pr_framecounter(a6) pr_init9_5_2: move.w pr_startposition(pc),pr_currentpattern-pr_framecounter(a6) lea pr_Patternpositions(pc),a3 move.l a3,d0 moveq.l #0,d1 move.w pr_startposition(pc),d1 lsl.l #2,d1 add.l d1,d0 move.l d0,pr_Patternpt-pr_framecounter(a6) move.l pr_Patternpt(pc),a5 move.l (a5),pr_Currentposition-pr_framecounter(a6) lea $dff000,a5 lea $bfd000,a0 move.w #$2000,d0 move.w d0,$9a(a5) move.w d0,$9c(a5) lea pr_int(pc),a1 move.l pr_Vectorbasept(pc),a3 move.l a1,$78(a3) move.b #$7f,$d00(a0) move.b #$08,$e00(a0) move.w #INTERRUPTTIME,d0 move.b d0,$400(a0) lsr.w #8,d0 move.b d0,$500(a0) pr_init10: btst #0,$bfdd00 beq.s pr_init10 move.b #$81,$d00(a0) move.w #$2000,$9c(a5) move.w #$a000,$9a(a5) move.w #$f,$96(a5) move.w #$8000,pr_dmacon-pr_framecounter(a6) clr.w $a8(a5) clr.w $b8(a5) clr.w $c8(a5) clr.w $d8(a5) moveq #0,d0 move.b $bfe001,d0 move.w d0,pr_oldledvalue-pr_framecounter(a6) bset #1,$bfe001 rts * End-Routine ********************************************************* pr_end: lea $dff000,a5 move.w #$f,$96(a5) clr.w $a8(a5) clr.w $b8(a5) clr.w $c8(a5) clr.w $d8(a5) move.w #$2000,$9a(a5) move.w pr_oldledvalue(pc),d0 cmp.w #$7fff,d0 beq.s pr_end3 btst #1,d0 beq.s pr_end2 bset #1,$bfe001 rts pr_end2: bclr #1,$bfe001 pr_end3: rts * Music-Fading ******************************************************** IFEQ INCLUDEFADINGROUTINE-YES pr_fademusic: macro lea pr_musicfadect(pc),a0 move.w pr_musicfadedirection(pc),d0 add.w d0,(a0) cmp.w #MAXVOLUME,(a0) bls.s pr_fademusicend bgt.s pr_fademusictoohigh clr.w (a0) clr.w pr_musicfadedirection-pr_musicfadect(a0) rts pr_fademusictoohigh: move.w #MAXVOLUME,(a0) clr.w pr_musicfadedirection-pr_musicfadect(a0) pr_fademusicend: endm pr_musicfadect: dc.w MAXVOLUME pr_musicfadedirection: dc.w 0 ENDC * MACROS ************************************************************** pr_playchannel: macro ; do not change: d7,a2-a6 moveq #0,d2 moveq #0,d0 moveq #0,d1 IFEQ PACKEDSONGFORMAT-YES move.b (a6),d6 bpl.s .pr_playchannel1 btst #6,d6 bne.s .pr_playchannel0 subq.l #2,a6 clr.w 4(a4) bra.s .pr_playchannelend .pr_playchannel0: subq.l #2,a6 move.b 56(a4),d0 move.b 57(a4),d1 move.b 58(a4),d2 move.w 58(a4),4(a4) bra.s .pr_playchanneljump .pr_playchannel1: moveq #$f,d0 and.b 1(a6),d0 move.b d0,4(a4) move.b d0,d2 move.b 2(a6),5(a4) move.w 4(a4),58(a4) moveq #1,d0 and.b (a6),d0 move.b 1(a6),d1 lsr.b #3,d1 bclr #0,d1 or.b d1,d0 move.b d0,56(a4) move.b (a6),d1 lsr.b #1,d1 move.b d1,57(a4) ELSE move.w 2(a6),4(a4) move.b 2(a6),d2 move.b (a6),d0 move.b 1(a6),d1 ENDC .pr_playchanneljump: add.w d2,d2 lea pr_playchannellist(pc),a0 move.w (a0,d2.w),d2 jsr (a0,d2.w) .pr_playchannelend: IFEQ PACKEDSONGFORMAT-YES addq.l #3,a6 ELSE addq.l #4,a6 ENDC endm pr_checkchannel: macro ; do not change: d7,a2-a6 bsr.w pr_checkfunkrepeat moveq #0,d0 move.b 4(a4),d0 add.b d0,d0 lea pr_Effectchecklist(pc),a0 move.w (a0,d0.w),d0 jsr (a0,d0.w) endm pr_copyplayvalues: macro tst.w pr_commandnotedelay-pr_framecounter(a2) bne.s .pr_copyplayvalues2 move.w 2(a4),6(a3) .pr_copyplayvalues2: IFEQ INCLUDEFADINGROUTINE-YES move.w 12(a4),d0 mulu.w pr_musicfadect-pr_framecounter(a2),d0 lsr.l #FADINGSTEPS,d0 move.w d0,8(a3) ELSE move.w 12(a4),8(a3) ENDC endm * Music-Routine ******************************************************* pr_music: IFEQ INCLUDEFADINGROUTINE-YES pr_fademusic ENDC lea $dff000,a5 lea pr_framecounter(pc),a2 subq.w #1,(a2) beq.s pr_music2 bra.w pr_checkeffects pr_music2: cmp.b #1,pr_patterndelaytime-pr_framecounter+1(a2) blt.s pr_music2_2 bsr.w pr_checkeffects bra.w pr_music2_9 pr_music2_2: move.l pr_Currentposition(pc),a6 lea pr_Channel0(pc),a4 lea $a0(a5),a3 moveq #1,d7 pr_playchannel pr_copyplayvalues pr_music2_3: lea pr_Channel1(pc),a4 lea $b0(a5),a3 moveq #2,d7 pr_playchannel pr_copyplayvalues pr_music2_4: lea pr_Channel2(pc),a4 lea $c0(a5),a3 moveq #4,d7 pr_playchannel pr_copyplayvalues pr_music2_5: lea pr_Channel3(pc),a4 lea $d0(a5),a3 moveq #8,d7 pr_playchannel pr_copyplayvalues lea pr_int(pc),a0 move.l pr_Vectorbasept(pc),a1 move.l a0,$78(a1) move.b #$19,$bfde00 pr_music2_9: move.w pr_speed(pc),(a2) tst.w pr_patternhasbeenbreaked-pr_framecounter(a2) bne.s pr_music3 tst.w pr_patterndelaytime-pr_framecounter(a2) beq.s pr_music3_1 subq.w #1,pr_patterndelaytime-pr_framecounter(a2) beq.s pr_music3_1 bra.s pr_nonextpattern pr_music3: clr.w pr_patternhasbeenbreaked-pr_framecounter(a2) tst.w pr_patterndelaytime-pr_framecounter(a2) beq.s pr_music3_1 subq.w #1,pr_patterndelaytime-pr_framecounter(a2) pr_music3_1: lea pr_Patternct(pc),a1 tst.w pr_dontcalcnewposition-pr_framecounter(a2) bne.s pr_music3_2 move.l a6,pr_Currentposition-pr_framecounter(a2) addq.w #1,(a1) pr_music3_2: clr.w pr_dontcalcnewposition-pr_framecounter(a2) moveq.l #64,d1 cmp.w (a1),d1 bgt.s pr_nonextpattern sub.w d1,(a1) lea pr_currentpattern(pc),a0 move.w (a1),d1 beq.s pr_music3_3 IFEQ PACKEDSONGFORMAT-YES move.l pr_module(pc),a1 lea 386(a1),a1 move.w (a0),d1 add.w d1,d1 move.w (a1,d1.w),d1 ELSE lsl.w #4,d1 ENDC pr_music3_3: addq.l #4,pr_Patternpt-pr_framecounter(a2) addq.w #1,(a0) move.w (a0),d0 cmp.w pr_highestpattern-pr_framecounter(a2),d0 bls.s pr_nohighestpattern lea pr_Patternpositions(pc),a1 move.l a1,pr_Patternpt-pr_framecounter(a2) clr.w (a0) pr_nohighestpattern: move.l pr_Patternpt-pr_framecounter(a2),a6 move.l (a6),d0 add.l d1,d0 move.l d0,pr_Currentposition-pr_framecounter(a2) pr_nonextpattern: rts pr_int: tst.b $bfdd00 move.b #$19,$bfde00 move.w pr_dmacon(pc),$dff096 move.w #$2000,$dff09c move.l a0,-(sp) move.l pr_Vectorbasept(pc),a0 add.l #pr_int2-pr_int,$78(a0) move.l (sp)+,a0 rte pr_int2: tst.b $bfdd00 movem.l a5-a6,-(sp) lea $dff000,a5 lea pr_Channel0+6(pc),a6 move.l (a6),$a0(a5) move.w 4(a6),$a4(a5) move.l pr_Channel1-pr_Channel0(a6),$b0(a5) move.w 4+pr_Channel1-pr_Channel0(a6),$b4(a5) move.l pr_Channel2-pr_Channel0(a6),$c0(a5) move.w 4+pr_Channel2-pr_Channel0(a6),$c4(a5) move.l pr_Channel3-pr_Channel0(a6),$d0(a5) move.w 4+pr_Channel3-pr_Channel0(a6),$d4(a5) move.w #$2000,$9c(a5) move.l pr_Vectorbasept(pc),a6 move.l pr_old78(pc),$78(a6) movem.l (sp)+,a5-a6 rte pr_playchannellist: dc.w pr_playnormalchannel-pr_playchannellist ; 0 dc.w pr_playnormalchannel-pr_playchannellist ; 1 dc.w pr_playnormalchannel-pr_playchannellist ; 2 dc.w pr_playtpchannel-pr_playchannellist ; 3 dc.w pr_playnormalchannel-pr_playchannellist ; 4 dc.w pr_playtpchannel-pr_playchannellist ; 5 dc.w pr_playnormalchannel-pr_playchannellist ; 6 dc.w pr_playnormalchannel-pr_playchannellist ; 7 dc.w pr_playnormalchannel-pr_playchannellist ; 8 dc.w pr_playsochannel-pr_playchannellist ; 9 dc.w pr_playnormalchannel-pr_playchannellist ; A dc.w pr_playnormalchannel-pr_playchannellist ; B dc.w pr_playnormalchannel-pr_playchannellist ; C dc.w pr_playnormalchannel-pr_playchannellist ; D dc.w pr_playnormalchannel-pr_playchannellist ; E dc.w pr_playnormalchannel-pr_playchannellist ; F * KANAL NORMAL SPIELEN ************************************************ pr_playnormalchannel: lea pr_Sampleinfos(pc),a0 lea (a0),a1 lea SAMPLEFINETUNEOFFSET(a1),a1 clr.w pr_commandnotedelay-pr_framecounter(a2) moveq #-1,d4 lsl.w #4,d4 and.w 4(a4),d4 cmp.w #$ed0,d4 bne.s pr_playnormalsamplenotedelay addq.w #1,pr_commandnotedelay-pr_framecounter(a2) pr_playnormalsamplenotedelay: tst.b d0 beq.w pr_playnormalnonewsample ; Irgendein Sample ? move.w d0,(a4) ; Trage Samplenummer ein tst.b d1 bne.s pr_playnormalsample subq.b #1,d0 lsl.l #5,d0 add.l d0,a0 addq.l #6,a0 move.w (a0)+,12(a4) move.l (a0)+,d2 move.l d2,6(a4) tst.w (a0)+ beq.s pr_playnormalchannel2 move.l d2,36(a4) move.l d2,40(a4) pr_playnormalchannel2: move.w (a0)+,10(a4) bra.w pr_playnormalnonewperiod pr_playnormalsample: or.w d7,pr_dmacon-pr_framecounter(a2) tst.w pr_commandnotedelay-pr_framecounter(a2) beq.w pr_playnormalsamplenoedcom subq.b #1,d0 lsl.l #5,d0 add.l d0,a0 move.w 6(a0),12(a4) move.l 8(a0),6(a4) move.w 14(a0),10(a4) bra.s pr_playnormalnewperiod pr_playnormalsamplenoedcom: move.w d7,$96(a5) subq.b #1,d0 lsl.l #5,d0 add.l d0,a0 move.l (a0)+,(a3) ; Setze Samplestart move.w (a0)+,4(a3) ; Setze Audiodatenlänge move.w (a0)+,12(a4) ; Setze Samplelautstärke move.l (a0)+,d2 move.l d2,6(a4) ; Samplerepeatpoint eintragen tst.w (a0)+ beq.s pr_playnormalsample2 move.l d2,36(a4) move.l d2,40(a4) pr_playnormalsample2: move.w (a0)+,10(a4) ; Samplerepeatlength eintragen bra.s pr_playnormalnewperiod pr_playnormalnonewsample: clr.l 14(a4) tst.b d1 beq.s pr_playnormalnonewperiod ; Irgend ne neue Frequenz ? move.w (a4),d0 ; Alte Samplenummer holen or.w d7,pr_dmacon-pr_framecounter(a2) tst.w pr_commandnotedelay-pr_framecounter(a2) bne.s pr_playnormalnewperiod move.w d7,$96(a5) pr_playnormalnonewsamplenoedcom: subq.b #1,d0 lsl.l #5,d0 add.l d0,a0 move.l (a0)+,(a3) ; Setze Samplestart move.w (a0)+,4(a3) ; Setze Audiodatenlänge addq.l #2,a0 move.l (a0)+,d2 move.l d2,6(a4) ; Samplerepeatpoint eintragen tst.w (a0)+ beq.s pr_playnormalnonewsample2 move.l d2,36(a4) move.l d2,40(a4) pr_playnormalnonewsample2: move.w (a0)+,10(a4) ; Samplerepeatlength eintragen pr_playnormalnewperiod: subq.b #1,d1 add.b d1,d1 move.w (a4),d0 subq.b #1,d0 lsl.w #5,d0 move.l (a1,d0.w),a1 move.w (a1,d1.w),2(a4) ; Frequenz eintragen pr_playnormalnonewperiod: bra.w pr_playeffect * KANAL MIT OFFSET SPIELEN ********************************************* pr_playsochannel: lea pr_Sampleinfos(pc),a0 lea (a0),a1 lea SAMPLEFINETUNEOFFSET(a1),a1 tst.b d0 beq.w pr_playsononewsample ; Irgendein Sample ? move.w d0,(a4) ; Trage Samplenummer ein tst.b d1 bne.s pr_playsosample subq.b #1,d0 lsl.l #5,d0 add.l d0,a0 addq.l #6,a0 move.w (a0)+,12(a4) move.l (a0)+,d2 move.l d2,6(a4) tst.w (a0)+ beq.s pr_playsochannel2 move.l d2,36(a4) move.l d2,40(a4) pr_playsochannel2: move.w (a0)+,10(a4) bra.w pr_playsononewperiod pr_playsosample: move.w d7,$96(a5) or.w d7,pr_dmacon-pr_framecounter(a2) moveq.l #0,d6 move.b 5(a4),d6 lsl.w #7,d6 subq.b #1,d0 lsl.l #5,d0 add.l d0,a0 move.l (a0)+,d2 move.w (a0)+,d3 cmp.w d3,d6 bge.s pr_playsosample2 sub.w d6,d3 add.l d6,d6 add.l d6,d2 move.l d2,(a3) ; Setze Samplestart move.w d3,4(a3) ; Setze Audiodatenlänge move.w (a0)+,12(a4) ; Setze Samplelautstärke move.l (a0)+,d2 move.l d2,6(a4) ; Samplerepeatpoint eintragen tst.w (a0)+ beq.s pr_playsosample1 move.l d2,36(a4) move.l d2,40(a4) pr_playsosample1: move.w (a0)+,10(a4) ; Samplerepeatlength eintragen bra.w pr_playsonewperiod pr_playsosample2: move.w (a0)+,12(a4) move.l (a0),(a3) move.w 4(a0),4(a3) move.l (a0)+,d2 move.l d2,6(a4) tst.w (a0)+ beq.s pr_playsosample4 move.l d2,36(a4) move.l d2,40(a4) pr_playsosample4: move.w (a0)+,10(a4) bra.s pr_playsonewperiod pr_playsononewsample: clr.l 14(a4) tst.b d1 beq.b pr_playsononewperiod ; Irgend ne neue Frequenz ? move.w (a4),d0 ; Alte Samplenummer holen move.w d7,$96(a5) or.w d7,pr_dmacon-pr_framecounter(a2) moveq.l #0,d6 move.b 5(a4),d6 lsl.w #7,d6 subq.b #1,d0 lsl.l #5,d0 add.l d0,a0 move.l (a0)+,d2 move.w (a0)+,d3 cmp.w d3,d6 bge.s pr_playsosample3 sub.w d6,d3 add.l d6,d6 add.l d6,d2 move.l d2,(a3) ; Setze Samplestart move.w d3,4(a3) ; Setze Audiodatenlänge addq.l #2,a0 move.l (a0)+,d2 move.l d2,6(a4) ; Samplerepeatpoint eintragen tst.w (a0)+ beq.s pr_playsononewsample2 move.l d2,36(a4) move.l d2,40(a4) pr_playsononewsample2: move.w (a0)+,10(a4) ; Samplerepeatlength eintragen bra.s pr_playsonewperiod pr_playsosample3: addq.l #2,a0 move.l (a0),(a3) move.w 4(a0),4(a3) move.l (a0)+,d2 move.l d2,6(a4) tst.w (a0)+ beq.s pr_playsosample5 move.l d2,36(a4) move.l d2,40(a4) pr_playsosample5: move.w (a0)+,10(a4) bra.w pr_playsonewperiod pr_playsonewperiod: subq.w #1,d1 add.b d1,d1 move.w (a4),d0 subq.b #1,d0 lsl.w #5,d0 move.l (a1,d0.w),a1 move.w (a1,d1.w),2(a4) ; Frequenz eintragen pr_playsononewperiod: bra.b pr_playeffect * Kanal spielen mit TONE PORTAMENTO ********************************** pr_playtpchannel: lea pr_Sampleinfos(pc),a0 lea (a0),a1 lea SAMPLEFINETUNEOFFSET(a1),a1 tst.b d0 beq.s pr_playtpnonewsample ; Irgendein Sample ? move.w d0,(a4) ; Trage Samplenummer ein subq.b #1,d0 lsl.l #5,d0 add.l d0,a0 addq.l #6,a0 move.w (a0)+,12(a4) ; Lautstärke eintragen move.l (a0)+,d2 move.l d2,6(a4) ; Repeatpoint eintragen tst.w (a0)+ beq.s pr_playtpchannel2 move.l d2,36(a4) move.l d2,40(a4) pr_playtpchannel2: move.w (a0)+,10(a4) ; Repeatlength eintragen pr_playtpnonewsample: tst.b d1 beq.s pr_playtpnonewperiod ; Irgend ne neue Frequenz ? pr_playtpnewperiod: move.w 2(a4),14(a4) subq.w #1,d1 add.b d1,d1 move.w (a4),d0 subq.b #1,d0 lsl.w #5,d0 move.l (a1,d0.w),a1 move.w (a1,d1.w),d2 move.w d2,16(a4) ; Frequenz eintragen bra.s pr_playtpallowed pr_playtpnonewperiod: tst.w 16(a4) bne.s pr_playtpallowed clr.w 14(a4) clr.l 26(a4) pr_playtpallowed: bra.w pr_playeffect pr_playeffect: bsr.w pr_checkfunkrepeat moveq #0,d0 move.b 4(a4),d0 add.b d0,d0 lea pr_normaleffectlist(pc),a0 move.w (a0,d0.w),d0 jmp (a0,d0.w) pr_playnoeffect: rts pr_normaleffectlist: dc.w pr_playnoeffect-pr_normaleffectlist ; 0 dc.w pr_playnoeffect-pr_normaleffectlist ; 1 dc.w pr_playnoeffect-pr_normaleffectlist ; 2 dc.w pr_preptoneportamento-pr_normaleffectlist ; 3 dc.w pr_prepvibrato-pr_normaleffectlist ; 4 dc.w pr_playnoeffect-pr_normaleffectlist ; 5 dc.w pr_prepvibandvolslide-pr_normaleffectlist ; 6 dc.w pr_preptremolo-pr_normaleffectlist ; 7 dc.w pr_playnoeffect-pr_normaleffectlist ; 8 dc.w pr_playnoeffect-pr_normaleffectlist ; 9 dc.w pr_playnoeffect-pr_normaleffectlist ; A dc.w pr_jumptopattern-pr_normaleffectlist ; B dc.w pr_newvolume-pr_normaleffectlist ; C dc.w pr_patternbreak-pr_normaleffectlist ; D dc.w pr_play_e_command-pr_normaleffectlist ; E dc.w pr_newspeed-pr_normaleffectlist ; F pr_play_e_command: moveq #0,d0 move.b 5(a4),d0 lsr.b #3,d0 bclr #0,d0 lea pr_e_commandeffectlist(pc),a0 move.w (a0,d0.w),d0 jmp (a0,d0.w) pr_e_commandeffectlist: dc.w pr_setfilter-pr_e_commandeffectlist ; 0 dc.w pr_fineslideup-pr_e_commandeffectlist ; 1 dc.w pr_fineslidedown-pr_e_commandeffectlist ; 2 dc.w pr_setglissandocontrol-pr_e_commandeffectlist ; 3 dc.w pr_setvibratowaveform-pr_e_commandeffectlist ; 4 dc.w pr_playfinetune-pr_e_commandeffectlist ; 5 dc.w pr_jumptoloop-pr_e_commandeffectlist ; 6 dc.w pr_settremolowaveform-pr_e_commandeffectlist ; 7 dc.w pr_playnoeffect-pr_e_commandeffectlist ; 8 dc.w pr_prepretrignote-pr_e_commandeffectlist ; 9 dc.w pr_finevolumeslideup-pr_e_commandeffectlist ; A dc.w pr_finevolumeslidedown-pr_e_commandeffectlist ; B dc.w pr_prepnotecut-pr_e_commandeffectlist ; C dc.w pr_prepnotedelay-pr_e_commandeffectlist ; D dc.w pr_preppatterndelay-pr_e_commandeffectlist ; E dc.w pr_prepfunkrepeat-pr_e_commandeffectlist ; F pr_preppatterndelay: cmp.b #1,pr_patterndelaytime-pr_framecounter+1(a2) bge.s pr_preppatterndelayend moveq #$f,d0 and.b 5(a4),d0 addq.b #1,d0 move.b d0,pr_patterndelaytime-pr_framecounter+1(a2) pr_preppatterndelayend: rts pr_setvibratowaveform: moveq #$f,d0 and.b 5(a4),d0 move.w d0,50(a4) rts pr_settremolowaveform: moveq #$f,d0 and.b 5(a4),d0 move.w d0,52(a4) rts pr_setglissandocontrol: moveq #$f,d0 and.b 5(a4),d0 move.w d0,48(a4) rts pr_playfinetune: moveq #$f,d0 and.b 5(a4),d0 lsl.w #2,d0 lea pr_fastperiodlist(pc),a0 move.l (a0,d0.w),a0 moveq #0,d1 IFEQ PACKEDSONGFORMAT-YES move.b (a6),d1 lsr.b #1,d1 ELSE move.b 1(a6),d1 ENDC beq.s pr_playfinetuneend subq.b #1,d1 add.w d1,d1 move.w (a0,d1.w),2(a4) ; Frequenz eintragen pr_playfinetuneend: rts pr_jumptoloop: moveq #$f,d0 and.b 5(a4),d0 beq.s pr_prepjumptoloop addq.b #1,47(a4) cmp.b 47(a4),d0 blt.s pr_jumptoloopend moveq.l #0,d0 move.w 44(a4),d0 move.w d0,pr_Patternct-pr_framecounter(a2) move.l pr_Patternpt(pc),a0 move.l (a0),d5 IFEQ PACKEDSONGFORMAT-YES moveq.l #0,d0 move.w 60(a4),d0 ELSE lsl.l #4,d0 ENDIF add.l d0,d5 move.l d5,pr_Currentposition-pr_framecounter(a2) addq.w #1,pr_dontcalcnewposition-pr_framecounter(a2) rts pr_jumptoloopend: clr.w 46(a4) rts pr_prepjumptoloop: tst.w 46(a4) bne.s pr_prepjumptoloopend move.w pr_Patternct-pr_framecounter(a2),44(a4) IFEQ PACKEDSONGFORMAT-YES move.l pr_Currentposition(pc),d0 move.l pr_Patternpt(pc),a1 sub.l (a1),d0 move.w d0,60(a4) ENDC clr.w 46(a4) pr_prepjumptoloopend: rts pr_prepnotedelay: IFEQ PACKEDSONGFORMAT-YES tst.b 57(a4) ELSE tst.b 1(a6) ENDC beq.s pr_prepnotedelayend2 moveq #$f,d0 and.b 5(a4),d0 bne.s pr_prepnotedelay2 move.w #$fff,18(a4) bra.w pr_checknotedelay2 pr_prepnotedelay2: move.w d7,d0 not.b d0 and.b d0,pr_dmacon-pr_framecounter+1(a2) clr.w 18(a4) rts pr_prepnotedelayend2: move.w #$fff,18(a4) rts pr_prepretrignote: clr.w 18(a4) IFEQ PACKEDSONGFORMAT-YES tst.b 56(a4) ELSE tst.w (a6) ENDC bne.s pr_prepretrignoteend bra.w pr_checkretrignote2 pr_prepretrignoteend: rts pr_prepnotecut: clr.w 18(a4) moveq #$f,d0 and.b 5(a4),d0 tst.b d0 bne.s pr_prepnotecutend clr.w 12(a4) pr_prepnotecutend: rts pr_finevolumeslideup: moveq #$f,d0 and.b 5(a4),d0 move.w 12(a4),d1 add.w d0,d1 moveq #64,d0 cmp.w d0,d1 bls.s pr_finevolumeslideup2 move.w d0,d1 pr_finevolumeslideup2: move.w d1,12(a4) rts pr_finevolumeslidedown: moveq #$f,d0 and.b 5(a4),d0 move.w 12(a4),d1 sub.w d0,d1 bpl.s pr_finevolumeslidedown2 moveq #0,d1 pr_finevolumeslidedown2: move.w d1,12(a4) rts pr_fineslideup: moveq #$f,d0 and.b 5(a4),d0 move.w 2(a4),d1 sub.w d0,d1 cmp.w #108,d1 bge.s pr_fineslideup2 move.w #108,d1 pr_fineslideup2: move.w d1,2(a4) rts pr_fineslidedown: moveq #$f,d0 and.b 5(a4),d0 move.w 2(a4),d1 add.w d0,d1 cmp.w #907,d1 bls.s pr_fineslidedown2 move.w #907,d1 pr_fineslidedown2: move.w d1,2(a4) rts pr_setfilter: btst #0,5(a4) beq.s pr_setfilteron pr_setfilteroff: bset #1,$bfe001 rts pr_setfilteron: bclr #1,$bfe001 rts pr_prepvibandvolslide: cmp.b #1,pr_speed-pr_framecounter+1(a2) beq.s pr_prepvibandvolslide2 IFEQ PACKEDSONGFORMAT-YES move.b (a6),d1 lsr.b #1,d1 ELSE tst.b 1(a6) ENDC beq.s pr_prepvibandvolslide2 clr.w 18(a4) pr_prepvibandvolslide2: rts pr_preptoneportamento: tst.b 5(a4) beq.s pr_preptoneportamento2 move.w 4(a4),22(a4) pr_preptoneportamento2: rts pr_prepvibrato: cmp.b #1,pr_speed-pr_framecounter+1(a2) beq.s pr_prepvibrato2 IFEQ PACKEDSONGFORMAT-YES move.b (a6),d1 lsr.b #1,d1 ELSE tst.b 1(a6) ENDC beq.s pr_prepvibrato0 clr.w 18(a4) pr_prepvibrato0: move.b 5(a4),d0 move.b d0,d1 lsr.b #4,d1 beq.s pr_prepvibrato1 move.b d1,24(a4) pr_prepvibrato1: and.b #$f,d0 beq.s pr_prepvibrato2 move.b d0,25(a4) pr_prepvibrato2: rts pr_preptremolo: cmp.b #1,pr_speed-pr_framecounter+1(a2) beq.s pr_preptremolo2 IFEQ PACKEDSONGFORMAT-YES move.b (a6),d1 lsr.b #1,d1 ELSE tst.b 1(a6) ENDC beq.s pr_preptremolo0 clr.w 18(a4) pr_preptremolo0: move.w 12(a4),20(a4) move.b 5(a4),d0 move.b d0,d1 lsr.b #4,d1 beq.s pr_preptremolo1 move.b d1,30(a4) pr_preptremolo1: and.b #$f,d0 beq.s pr_preptremolo2 move.b d0,31(a4) pr_preptremolo2: rts pr_newvolume: move.b 5(a4),d0 cmp.b #64,d0 bls.s pr_newvolumeend moveq #64,d0 pr_newvolumeend: move.b d0,13(a4) rts pr_newspeed: move.b 5(a4),d0 tst.b d0 bne.s pr_newspeed2 moveq #1,d0 pr_newspeed2: move.b d0,pr_speed-pr_framecounter+1(a2) rts pr_patternbreak: moveq #0,d0 move.b 5(a4),d0 add.w #64,d0 move.w d0,pr_Patternct-pr_framecounter(a2) addq.w #1,pr_patternhasbeenbreaked-pr_framecounter(a2) addq.w #1,pr_dontcalcnewposition-pr_framecounter(a2) rts pr_jumptopattern: moveq.l #0,d0 move.b 5(a4),d0 subq.b #1,d0 bpl.s pr_playjumptopattern2 move.w #128,d0 pr_playjumptopattern2: move.b d0,pr_currentpattern-pr_framecounter+1(a2) lsl.l #2,d0 lea pr_Patternpositions(pc),a0 add.l a0,d0 move.l d0,pr_Patternpt-pr_framecounter(a2) move.w #64,pr_Patternct-pr_framecounter(a2) addq.w #1,pr_patternhasbeenbreaked-pr_framecounter(a2) addq.w #1,pr_dontcalcnewposition-pr_framecounter(a2) rts * Control FX every frame ********************************************** pr_checkeffects: moveq #1,d7 lea $a0(a5),a3 lea pr_Channel0(pc),a4 move.w 12(a4),54(a4) pr_checkchannel IFEQ INCLUDEFADINGROUTINE-YES move.w 54(a4),d0 mulu.w pr_musicfadect-pr_framecounter(a2),d0 lsr.l #FADINGSTEPS,d0 move.w d0,8(a3) ELSE move.w 54(a4),8(a3) ENDC moveq #2,d7 lea $b0(a5),a3 lea pr_Channel1(pc),a4 move.w 12(a4),54(a4) pr_checkchannel IFEQ INCLUDEFADINGROUTINE-YES move.w 54(a4),d0 mulu.w pr_musicfadect-pr_framecounter(a2),d0 lsr.l #FADINGSTEPS,d0 move.w d0,8(a3) ELSE move.w 54(a4),8(a3) ENDC moveq #4,d7 lea $c0(a5),a3 lea pr_Channel2(pc),a4 move.w 12(a4),54(a4) pr_checkchannel IFEQ INCLUDEFADINGROUTINE-YES move.w 54(a4),d0 mulu.w pr_musicfadect-pr_framecounter(a2),d0 lsr.l #FADINGSTEPS,d0 move.w d0,8(a3) ELSE move.w 54(a4),8(a3) ENDC moveq #8,d7 lea $d0(a5),a3 lea pr_Channel3(pc),a4 move.w 12(a4),54(a4) pr_checkchannel IFEQ INCLUDEFADINGROUTINE-YES move.w 54(a4),d0 mulu.w pr_musicfadect-pr_framecounter(a2),d0 lsr.l #FADINGSTEPS,d0 move.w d0,8(a3) ELSE move.w 54(a4),8(a3) ENDC lea pr_int(pc),a0 move.l pr_Vectorbasept(pc),a1 move.l a0,$78(a1) move.b #$19,$bfde00 rts *********************************************************************** pr_checknotchannel: rts pr_check_e_commands: moveq #0,d0 move.b 5(a4),d0 lsr.b #3,d0 bclr #0,d0 lea pr_E_Command_checklist(pc),a0 move.w (a0,d0.w),d0 jmp (a0,d0.w) pr_Effectchecklist: dc.w pr_checkarpeggio-pr_Effectchecklist ; 0 dc.w pr_checkperiodslideup-pr_Effectchecklist ; 1 dc.w pr_checkperiodslidedown-pr_Effectchecklist ; 2 dc.w pr_checktoneportamento-pr_Effectchecklist ; 3 dc.w pr_checkvibrato-pr_Effectchecklist ; 4 dc.w pr_checktpandvolslide-pr_Effectchecklist ; 5 dc.w pr_checkvibandvolslide-pr_Effectchecklist ; 6 dc.w pr_checktremolo-pr_Effectchecklist ; 7 dc.w pr_checknotchannel-pr_Effectchecklist ; 8 dc.w pr_checknotchannel-pr_Effectchecklist ; 9 dc.w pr_checkvolumeslide-pr_Effectchecklist ; A dc.w pr_checknotchannel-pr_Effectchecklist ; B dc.w pr_checknotchannel-pr_Effectchecklist ; C dc.w pr_checknotchannel-pr_Effectchecklist ; D dc.w pr_check_e_commands-pr_Effectchecklist ; E dc.w pr_checknotchannel-pr_Effectchecklist ; F pr_E_Command_checklist: dc.w pr_checknotchannel-pr_E_Command_checklist ; 0 dc.w pr_checknotchannel-pr_E_Command_checklist ; 1 dc.w pr_checknotchannel-pr_E_Command_checklist ; 2 dc.w pr_checknotchannel-pr_E_Command_checklist ; 3 dc.w pr_checknotchannel-pr_E_Command_checklist ; 4 dc.w pr_checknotchannel-pr_E_Command_checklist ; 5 dc.w pr_checknotchannel-pr_E_Command_checklist ; 6 dc.w pr_checknotchannel-pr_E_Command_checklist ; 7 dc.w pr_checknotchannel-pr_E_Command_checklist ; 8 dc.w pr_checkretrignote-pr_E_Command_checklist ; 9 dc.w pr_checknotchannel-pr_E_Command_checklist ; A dc.w pr_checknotchannel-pr_E_Command_checklist ; B dc.w pr_checknotecut-pr_E_Command_checklist ; C dc.w pr_checknotedelay-pr_E_Command_checklist ; D dc.w pr_checknotchannel-pr_E_Command_checklist ; E dc.w pr_checknotchannel-pr_E_Command_checklist ; F pr_prepfunkrepeat: moveq #$f,d0 and.b 5(a4),d0 move.b d0,33(a4) tst.b d0 bne.s pr_checkfunkrepeat rts pr_checkfunkrepeat: move.w 32(a4),d0 beq.s pr_checkfunkrepeatend lea pr_FunkTable(pc),a0 move.b (a0,d0.w),d0 move.b 35(a4),d1 add.b d0,d1 bmi.s pr_checkfunkrepeat2 move.b d1,35(a4) rts pr_checkfunkrepeat2: clr.b 35(a4) move.l 36(a4),d0 beq.s pr_checkfunkrepeatend move.l d0,d2 moveq.l #0,d1 move.w 10(a4),d1 add.l d1,d0 add.l d1,d0 move.l 40(a4),a0 addq.l #1,a0 cmp.l d0,a0 blo.s pr_checkfunkrepeatok move.l d2,a0 pr_checkfunkrepeatok: move.l a0,40(a4) moveq #-1,d0 sub.b (a0),d0 move.b d0,(a0) pr_checkfunkrepeatend: rts pr_checknotedelay: move.w 18(a4),d1 addq.w #1,d1 cmp.w d0,d1 bne.s pr_checknotedelayend pr_checknotedelay2: move.w d7,$96(a5) or.w d7,pr_dmacon-pr_framecounter(a2) moveq.l #0,d0 move.w (a4),d0 subq.w #1,d0 lsl.w #5,d0 lea pr_Sampleinfos(pc),a0 add.l d0,a0 move.w 2(a4),6(a3) move.l (a0)+,(a3) ; Setze Samplestart move.w (a0)+,4(a3) ; Setze Audiodatenlänge addq.l #2,a0 move.l (a0)+,d2 move.l d2,6(a4) ; Samplerepeatpoint eintragen tst.w (a0)+ beq.s pr_checknotedelay3 move.l d2,36(a4) move.l d2,40(a4) pr_checknotedelay3: move.w (a0)+,10(a4) ; Samplerepeatlength eintragen pr_checknotedelayend: move.w d1,18(a4) rts pr_checkretrignote: moveq #$f,d0 and.b 5(a4),d0 move.w 18(a4),d1 addq.w #1,d1 cmp.w d0,d1 bne.s pr_checkretrignoteend pr_checkretrignote2: moveq #0,d1 move.w d7,$96(a5) or.w d7,pr_dmacon-pr_framecounter(a2) move.w (a4),d0 subq.w #1,d0 lsl.w #5,d0 lea pr_Sampleinfos(pc),a0 move.l (a0,d0.w),(a3) move.w 4(a0,d0.w),4(a3) pr_checkretrignoteend: move.w d1,18(a4) rts pr_checknotecut: moveq #$f,d0 and.b 5(a4),d0 addq.w #1,18(a4) move.w 18(a4),d1 cmp.w d0,d1 blt.s pr_checknotecutend clr.w 12(a4) clr.w 54(a4) pr_checknotecutend: rts pr_checkarpeggio: tst.b 5(a4) bne.s pr_checkarpeggio0 rts pr_checkarpeggio0: move.w (a2),d0 lea pr_Arpeggiofastdivisionlist(pc),a1 move.b (a1,d0.w),d0 beq.s pr_checkarpeggio2 cmp.b #2,d0 beq.s pr_checkarpeggio1 moveq #0,d0 move.b 5(a4),d0 lsr.b #4,d0 bra.s pr_checkarpeggio3 pr_checkarpeggio2: move.w 2(a4),6(a3) rts pr_checkarpeggio1: moveq #$f,d0 and.b 5(a4),d0 pr_checkarpeggio3: asl.w #1,d0 move.w (a4),d1 lsl.w #5,d1 lea pr_Sampleinfos+SAMPLEFINETUNEOFFSET(pc),a0 move.l (a0,d1.w),a0 move.w 2(a4),d1 lea pr_Arpeggiofastlist(pc),a1 moveq.l #0,d2 move.b (a1,d1.w),d2 add.b d2,d2 add.l d2,a0 moveq #36,d7 pr_checkarpeggioloop: cmp.w (a0)+,d1 bhs.s pr_checkarpeggio4 dbf d7,pr_checkarpeggioloop rts pr_checkarpeggio4: subq.l #2,a0 move.w (a0,d0.w),6(a3) rts pr_checktpandvolslide: bsr.w pr_checkvolumeslide moveq #0,d2 move.b 23(a4),d2 move.w 26(a4),d0 move.w 28(a4),d1 bsr.s pr_checktoneportamento2 move.w 14(a4),26(a4) rts pr_checktoneportamento: moveq #0,d2 move.b 5(a4),d2 bne.s pr_checktoneportamento1 move.b 23(a4),d2 pr_checktoneportamento1: move.w 14(a4),d0 move.w 16(a4),d1 pr_checktoneportamento2: cmp.w d0,d1 bgt.s pr_checktoneportamentoplus blt.s pr_checktoneportamentominus cmp.w #1,(a2) beq.s pr_savetpvalues rts pr_checktoneportamentoplus: add.w d2,d0 cmp.w d0,d1 bgt.s pr_checktoneportamentoend move.w d1,d0 move.w d1,14(a4) move.w d1,2(a4) tst.w 48(a4) bne.s pr_checktoneportamentoglissando move.w d1,6(a3) cmp.w #1,(a2) beq.s pr_savetpvalues rts pr_checktoneportamentominus: sub.w d2,d0 cmp.w d0,d1 blt.s pr_checktoneportamentoend move.w d1,d0 move.w d1,14(a4) move.w d1,2(a4) tst.w 48(a4) bne.s pr_checktoneportamentoglissando move.w d1,6(a3) cmp.w #1,(a2) beq.s pr_savetpvalues rts pr_checktoneportamentoend: move.w d0,14(a4) move.w d0,2(a4) tst.w 48(a4) bne.s pr_checktoneportamentoglissando move.w d0,6(a3) cmp.w #1,(a2) beq.s pr_savetpvalues rts pr_savetpvalues: move.l 14(a4),26(a4) rts pr_checktoneportamentoglissando: move.w (a4),d1 lsl.w #5,d1 lea pr_Sampleinfos+SAMPLEFINETUNEOFFSET(pc),a0 move.l (a0,d1.w),a0 lea pr_Arpeggiofastlist(pc),a1 moveq.l #0,d2 move.b (a1,d0.w),d2 add.w d2,d2 add.l d2,a0 moveq #0,d3 moveq #36*2,d1 pr_checktoneportamentoglissandoloop: cmp.w (a0,d3.w),d0 bhs.s pr_checktoneportamentoglissando2 addq.w #2,d3 cmp.w d1,d3 blo.s pr_checktoneportamentoglissandoloop moveq #35*2,d3 pr_checktoneportamentoglissando2: move.w (a0,d3.w),6(a3) cmp.w #1,(a2) beq.s pr_savetpvalues rts pr_checkvolumeslide: moveq #0,d0 move.b 5(a4),d0 move.w d0,d1 lsr.b #4,d1 beq.s pr_checkvolumeslidedown move.w 12(a4),d2 add.w d1,d2 bmi.s pr_checkvolumeslide0 moveq #64,d0 cmp.w d0,d2 bgt.s pr_checkvolumeslide64 move.w d2,12(a4) move.w d2,54(a4) rts pr_checkvolumeslidedown: and.b #$f,d0 move.w 12(a4),d2 sub.w d0,d2 bmi.s pr_checkvolumeslide0 moveq #64,d0 cmp.w d0,d2 bgt.s pr_checkvolumeslide64 move.w d2,12(a4) move.w d2,54(a4) rts pr_checkvolumeslide64: move.w d0,12(a4) move.w d0,54(a4) rts pr_checkvolumeslide0: clr.w 12(a4) clr.w 54(a4) rts pr_checkperiodslidedown: moveq #0,d0 move.b 5(a4),d0 add.w d0,2(a4) cmp.w #907,2(a4) bls.s pr_checkperiodslidedown2 move.w #907,2(a4) pr_checkperiodslidedown2: move.w 2(a4),6(a3) rts pr_checkperiodslideup: moveq #0,d0 move.b 5(a4),d0 sub.w d0,2(a4) cmp.w #108,2(a4) bge.s pr_checkperiodslideup2 move.w #108,2(a4) pr_checkperiodslideup2: move.w 2(a4),6(a3) rts pr_checkvibandvolslide: bsr.w pr_checkvolumeslide moveq.l #0,d0 moveq.l #0,d1 move.b 25(a4),d0 move.b 24(a4),d1 bra.s pr_checkvibrato4 pr_checkvibrato: moveq.l #0,d0 moveq.l #0,d1 move.b 5(a4),d0 ; Tiefe pr_checkvibrato2: move.w d0,d1 ; Geschwindigkeit and.w #$f,d0 bne.s pr_checkvibrato3 move.b 25(a4),d0 pr_checkvibrato3: lsr.b #4,d1 bne.s pr_checkvibrato4 move.b 24(a4),d1 pr_checkvibrato4: move.w 18(a4),d2 ;Position lsr.w #2,d2 and.w #$1f,d2 move.w 50(a4),d3 beq.s pr_checkvibratosine btst #0,d3 bne.s pr_checkvibratorampdown move.b #255,d3 bra.s pr_checkvibratoset pr_checkvibratorampdown: lsl.b #3,d2 tst.b 19(a4) bmi.s pr_checkvibratorampdown2 move.b #255,d3 sub.b d2,d3 bra.s pr_checkvibratoset pr_checkvibratorampdown2: move.b d2,d3 bra.s pr_checkvibratoset pr_checkvibratosine: lea pr_VibratoTable(pc),a0 moveq #0,d3 move.b (a0,d2.w),d3 pr_checkvibratoset: mulu.w d0,d3 lsr.w #7,d3 move.w 2(a4),d2 tst.b 19(a4) bpl.s pr_checkvibratoneg add.w d3,d2 bra.s pr_checkvibrato5 pr_checkvibratoneg: sub.w d3,d2 pr_checkvibrato5: move.w d2,6(a3) lsl.w #2,d1 add.b d1,19(a4) rts pr_checktremolo: moveq #0,d0 moveq.l #0,d1 move.b 5(a4),d0 ; Tiefe pr_checktremolo2: move.w d0,d1 ; Geschwindigkeit and.w #$f,d0 bne.s pr_checktremolo3 move.b 31(a4),d0 pr_checktremolo3: lsr.b #4,d1 bne.s pr_checktremolo4 move.b 30(a4),d1 pr_checktremolo4: move.w 18(a4),d2 ;Position lsr.w #2,d2 and.w #$1f,d2 move.w 52(a4),d3 beq.s pr_checktremolosine btst #0,d3 bne.s pr_checktremolorampdown move.b #255,d3 bra.s pr_checktremoloset pr_checktremolorampdown: lsl.b #3,d2 tst.b 19(a4) bmi.s pr_checktremolorampdown2 move.b #255,d3 sub.b d2,d3 bra.s pr_checktremoloset pr_checktremolorampdown2: move.b d2,d3 bra.s pr_checktremoloset pr_checktremolosine: lea pr_VibratoTable(pc),a0 moveq #0,d3 move.b (a0,d2.w),d3 pr_checktremoloset: mulu.w d0,d3 lsr.w #6,d3 move.w 20(a4),d2 tst.b 19(a4) bpl.s pr_checktremoloneg add.w d3,d2 moveq #64,d4 cmp.w d4,d2 bls.s pr_checktremolo5 move.w d4,d2 bra.s pr_checktremolo5 pr_checktremoloneg: sub.w d3,d2 bpl.s pr_checktremolo5 moveq #0,d2 pr_checktremolo5: move.w d2,54(a4) lsl.w #2,d1 add.b d1,19(a4) rts pr_VibratoTable: dc.b 0,24,49,74,97,120,141,161 dc.b 180,197,212,224,235,244,250,253 dc.b 255,253,250,244,235,224,212,197 dc.b 180,161,141,120,97,74,49,24 pr_FunkTable: dc.b 0,5,6,7,8,10,11,13,16,19,22,26,32,43,64,128 * Variables *********************************************************** pr_module: dc.l 0 pr_startposition: dc.w 0 pr_speed: dc.w 6 pr_highestpattern: dc.w 0 pr_currentpattern: dc.w 0 pr_framecounter: dc.w 0 pr_patterndelaytime: dc.w 0 pr_patternhasbeenbreaked: dc.w 0 pr_Patternpositions: ds.l 128 pr_Patternpt: dc.l 0 pr_Currentposition: dc.l 0 pr_Patternct: dc.w 0 pr_oldledvalue: dc.w 0 pr_dontcalcnewposition: dc.w 0 pr_commandnotedelay: dc.w 0 pr_old78: dc.l 0 pr_Vectorbasept: dc.l 0 pr_Channel0: dc.w 1 ds.w 30 pr_Channel1: dc.w 1 ds.w 30 pr_Channel2: dc.w 1 ds.w 30 pr_Channel3: dc.w 1 ds.w 30 pr_dmacon: dc.w $8000 pr_Arpeggiofastlist: ds.b 1000 pr_Arpeggiofastdivisionlist: ds.b $100 pr_fastperiodlist: ds.l 16 pr_Sampleinfos: ds.b 32*32 pr_periods: ; Tuning 0, Normal dc.w 856,808,762,720,678,640,604,570,538,508,480,453 dc.w 428,404,381,360,339,320,302,285,269,254,240,226 dc.w 214,202,190,180,170,160,151,143,135,127,120,113 ; Tuning 1 dc.w 850,802,757,715,674,637,601,567,535,505,477,450 dc.w 425,401,379,357,337,318,300,284,268,253,239,225 dc.w 213,201,189,179,169,159,150,142,134,126,119,113 ; Tuning 2 dc.w 844,796,752,709,670,632,597,563,532,502,474,447 dc.w 422,398,376,355,335,316,298,282,266,251,237,224 dc.w 211,199,188,177,167,158,149,141,133,125,118,112 ; Tuning 3 dc.w 838,791,746,704,665,628,592,559,528,498,470,444 dc.w 419,395,373,352,332,314,296,280,264,249,235,222 dc.w 209,198,187,176,166,157,148,140,132,125,118,111 ; Tuning 4 dc.w 832,785,741,699,660,623,588,555,524,495,467,441 dc.w 416,392,370,350,330,312,294,278,262,247,233,220 dc.w 208,196,185,175,165,156,147,139,131,124,117,110 ; Tuning 5 dc.w 826,779,736,694,655,619,584,551,520,491,463,437 dc.w 413,390,368,347,328,309,292,276,260,245,232,219 dc.w 206,195,184,174,164,155,146,138,130,123,116,109 ; Tuning 6 dc.w 820,774,730,689,651,614,580,547,516,487,460,434 dc.w 410,387,365,345,325,307,290,274,258,244,230,217 dc.w 205,193,183,172,163,154,145,137,129,122,115,109 pr_Arpeggiofastlistperiods: ; Tuning 7 dc.w 814,768,725,684,646,610,575,543,513,484,457,431 dc.w 407,384,363,342,323,305,288,272,256,242,228,216 dc.w 204,192,181,171,161,152,144,136,128,121,114,108 ; Tuning -8 dc.w 907,856,808,762,720,678,640,604,570,538,508,480 dc.w 453,428,404,381,360,339,320,302,285,269,254,240 dc.w 226,214,202,190,180,170,160,151,143,135,127,120 ; Tuning -7 dc.w 900,850,802,757,715,675,636,601,567,535,505,477 dc.w 450,425,401,379,357,337,318,300,284,268,253,238 dc.w 225,212,200,189,179,169,159,150,142,134,126,119 ; Tuning -6 dc.w 894,844,796,752,709,670,632,597,563,532,502,474 dc.w 447,422,398,376,355,335,316,298,282,266,251,237 dc.w 223,211,199,188,177,167,158,149,141,133,125,118 ; Tuning -5 dc.w 887,838,791,746,704,665,628,592,559,528,498,470 dc.w 444,419,395,373,352,332,314,296,280,264,249,235 dc.w 222,209,198,187,176,166,157,148,140,132,125,118 ; Tuning -4 dc.w 881,832,785,741,699,660,623,588,555,524,494,467 dc.w 441,416,392,370,350,330,312,294,278,262,247,233 dc.w 220,208,196,185,175,165,156,147,139,131,123,117 ; Tuning -3 dc.w 875,826,779,736,694,655,619,584,551,520,491,463 dc.w 437,413,390,368,347,328,309,292,276,260,245,232 dc.w 219,206,195,184,174,164,155,146,138,130,123,116 ; Tuning -2 dc.w 868,820,774,730,689,651,614,580,547,516,487,460 dc.w 434,410,387,365,345,325,307,290,274,258,244,230 dc.w 217,205,193,183,172,163,154,145,137,129,122,115 ; Tuning -1 dc.w 862,814,768,725,684,646,610,575,543,513,484,457 dc.w 431,407,384,363,342,323,305,288,272,256,242,228 dc.w 216,203,192,181,171,161,152,144,136,128,121,114 * END OF PRORUNNER *************************************************** pr_data: incbin "df3:galaxy/mod.the big idea" blk.l 256,0 font: incbin "df0:style.raw" even beeld: blk.b $35c0,0 onder: incbin "dik.raw" hut: