Preview
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: