home *** CD-ROM | disk | FTP | other *** search
- *******************************
- * Player v4.0b ® *
- * Lev6-version *
- * Revision 3 *
- * © 1992 Jarno Paananen *
- * All rights reserved *
- *******************************
-
- ;
- ; call 'P40_init' to initialize the playroutine
- ; A0 --> Modules address
- ; A1 --> Samples' address or NULL
- ; A6 --> Customchip baseaddress ($DFF000)
- ; returns -1 in D0 if not a correct module
- ; Used regs: A0/A1/A3/D0/D1
- ;
-
- P40_init
- cmpi.l #`P40B`,(a0)+
- beq.b P00
- moveq #-1,d0
- rts
-
- P00 lea P0(pc),a3
- move.l a0,P72-P0(a3)
-
- move.l a0,d0
- add.l d0,4(a0)
- add.l d0,8(a0)
- add.l d0,12(a0)
-
- move.l a1,d0
- beq.b P1
- move.l a1,12(a0)
-
- P1 move.l 12(a0),d0
- moveq #0,d1
- move.b 2(a0),d1
- subq #1,d1
- lea 16(a0),a1
- P2 add.l d0,(a1)
- add.l d0,6(a1)
- lea 16(a1),a1
- dbra d1,P2
-
- lea P63(pc),a1
- moveq #20,d0
- P3 clr (a1)+
- dbf d0,P3
-
- lea P64(pc),a1
- moveq #20,d0
- P4 clr (a1)+
- dbf d0,P4
-
- lea P65(pc),a1
- moveq #20,d0
- P5 clr (a1)+
- dbf d0,P5
-
- lea P66(pc),a1
- moveq #20,d0
- P6 clr (a1)+
- dbf d0,P6
-
- move.l 8(a0),a1
- move.l a1,P6F-P0(a3)
- moveq #0,d1
- move (a1)+,d1
- add.l 4(a0),d1
- move.l d1,32+P63-P0(a3)
- moveq #0,d1
- move (a1)+,d1
- add.l 4(a0),d1
- move.l d1,32+P64-P0(a3)
- moveq #0,d1
- move (a1)+,d1
- add.l 4(a0),d1
- move.l d1,32+P65-P0(a3)
- moveq #0,d1
- move (a1)+,d1
- add.l 4(a0),d1
- move.l d1,32+P66-P0(a3)
- move.l a1,P6C-P0(a3)
-
- move.l 4(a0),P70-P0(a3)
-
- lea P62(pc),a0
- move.l a0,P71-P0(a3)
-
- move #63,P68-P0(a3)
- move #6,P69-P0(a3)
- move #5,P6A-P0(a3)
- clr P6B-P0(a3)
- clr.l P6D-P0(a3)
- clr (a3)
-
- move.b #$3f,$bfdd00
- move.b #$81,$bfdd00
- move.b #151,$bfd400
- move.b #1,$bfd500
- move.b #$90,$bfde00
- move #$6000,$9c(a6)
- move #$a000,$9a(a6)
-
- move.l $78.w,P73-P0(a3)
- or.b #2,$bfe001
- move #$f,$96(a6)
-
- moveq #0,d0
-
- lea P61(pc),a0
- move.l a0,$78.w
-
- clr $a8(a6)
- clr $b8(a6)
- clr $c8(a6)
- clr $d8(a6)
- rts
-
- ;
- ; call 'P40_end' to stop music
- ; A6 --> Customchip baseaddress ($DFF000)
- ;
- P40_end clr $a8(a6)
- clr $b8(a6)
- clr $c8(a6)
- clr $d8(a6)
- move.l P73(pc),$78.w
- rts
-
- ;
- ; call 'P40_music' every frame to play the music
- ; A6 --> Customchip baseaddress ($DFF000)
- ; Used regs: a0-a6/d0-d7 -
- ;
- P40_music
- lea P0(pc),a3
-
- moveq #44,d6
- moveq #16,d7
-
- move (a3),d4
- addq #1,d4
- cmpi P69(pc),d4
- beq.w P2E
-
- lea P63(pc),a5
- lea $a0(a6),a4
-
- move d4,(a3)
-
- moveq #3,d5
- P7 tst 30(a5)
- beq.w P1C
- moveq #$f,d0
- and (a5),d0
- add d0,d0
- move P8(pc,d0),d0
- jmp P8(pc,d0)
-
- P8 dc P1C-P8,P1D-P8,P1F-P8,P19-P8,P58-P8,P16-P8,P55-P8,P5B-P8
- dc PE-P8,P1C-P8,P13-P8,P1C-P8,P1C-P8,P1C-P8,P9-P8,P1C-P8
-
- P9 move.b 2(a5),d0
- and.b #$f0,d0
- cmp #$90,d0
- beq.b PB
- cmp #$c0,d0
- beq.b PA
- cmp #$d0,d0
- bne.w P1C
-
- moveq #$f,d0
- and.b 2(a5),d0
- cmpi (a3),d0
- bne.w P1C
- move 42(a5),d0
- or #$8000,d0
- or d0,P67-P0(a3)
- move.l 4(a5),a1
- move.l (a1)+,(a4)
- move (a1),4(a4)
- move.b #%10010001,$bfde00
- lea P60(pc),a1
- move.l a1,$78.w
- bra.w P1C
-
- PA moveq #$f,d0
- and.b 2(a5),d0
- cmpi (a3),d0
- bne.w P1C
- clr 8(a4)
- clr 14(a5)
- bra.w P1C
-
- PB subq #1,26(a5)
- bne.w P1C
- move 42(a5),d0
- move d0,$96(a6)
- or #$8000,d0
- or d0,P67-P0(a3)
- move.l 4(a5),a1
- move.l (a1)+,(a4)
- move (a1),4(a4)
- move.b #%10010001,$bfde00
- lea P60(pc),a1
- move.l a1,$78.w
- moveq #$f,d0
- and.b 2(a5),d0
- move d0,26(a5)
- bra.w P1C
-
- PD dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
-
- PE move (a3),d0
- move.b PD(pc,d0),d0
- beq.b PF
- btst #0,d0
- bne.b P10
- moveq #$f,d0
- and.b 2(a5),d0
- bra.b P11
- PF moveq #0,d0
- bra.b P11
- P10 moveq #0,d0
- move.b 2(a5),d0
- lsr.b #4,d0
- P11 add d0,d0
- add 28(a5),d0
- move P12(pc,d0),6(a4)
- bra.w P1C
-
- P12 dc 856,856,808,762,720,678,640,604,570,538,508,480,453
- dc 428,404,381,360,339,320,302,285,269,254,240,226
- dc 214,202,190,180,170,160,151,143,135,127,120,113
- dc 850,850,802,757,715,674,637,601,567,535,505,477,450
- dc 425,401,379,357,337,318,300,284,268,253,239,225
- dc 213,201,189,179,169,159,150,142,134,126,119,113
- dc 844,844,796,752,709,670,632,597,563,532,502,474,447
- dc 422,398,376,355,335,316,298,282,266,251,237,224
- dc 211,199,188,177,167,158,149,141,133,125,118,112
- dc 838,838,791,746,704,665,628,592,559,528,498,470,444
- dc 419,395,373,352,332,314,296,280,264,249,235,222
- dc 209,198,187,176,166,157,148,140,132,125,118,111
- dc 832,832,785,741,699,660,623,588,555,524,495,467,441
- dc 416,392,370,350,330,312,294,278,262,247,233,220
- dc 208,196,185,175,165,156,147,139,131,124,117,110
- dc 826,826,779,736,694,655,619,584,551,520,491,463,437
- dc 413,390,368,347,328,309,292,276,260,245,232,219
- dc 206,195,184,174,164,155,146,138,130,123,116,109
- dc 820,820,774,730,689,651,614,580,547,516,487,460,434
- dc 410,387,365,345,325,307,290,274,258,244,230,217
- dc 205,193,183,172,163,154,145,137,129,122,115,109
- dc 814,814,768,725,684,646,610,575,543,513,484,457,431
- dc 407,384,363,342,323,305,288,272,256,242,228,216
- dc 204,192,181,171,161,152,144,136,128,121,114,108
- dc 907,907,856,808,762,720,678,640,604,570,538,508,480
- dc 453,428,404,381,360,339,320,302,285,269,254,240
- dc 226,214,202,190,180,170,160,151,143,135,127,120
- dc 900,900,850,802,757,715,675,636,601,567,535,505,477
- dc 450,425,401,379,357,337,318,300,284,268,253,238
- dc 225,212,200,189,179,169,159,150,142,134,126,119
- dc 894,894,844,796,752,709,670,632,597,563,532,502,474
- dc 447,422,398,376,355,335,316,298,282,266,251,237
- dc 223,211,199,188,177,167,158,149,141,133,125,118
- dc 887,887,838,791,746,704,665,628,592,559,528,498,470
- dc 444,419,395,373,352,332,314,296,280,264,249,235
- dc 222,209,198,187,176,166,157,148,140,132,125,118
- dc 881,881,832,785,741,699,660,623,588,555,524,494,467
- dc 441,416,392,370,350,330,312,294,278,262,247,233
- dc 220,208,196,185,175,165,156,147,139,131,123,117
- dc 875,875,826,779,736,694,655,619,584,551,520,491,463
- dc 437,413,390,368,347,328,309,292,276,260,245,232
- dc 219,206,195,184,174,164,155,146,138,130,123,116
- dc 868,868,820,774,730,689,651,614,580,547,516,487,460
- dc 434,410,387,365,345,325,307,290,274,258,244,230
- dc 217,205,193,183,172,163,154,145,137,129,122,115
- dc 862,862,814,768,725,684,646,610,575,543,513,484,457
- dc 431,407,384,363,342,323,305,288,272,256,242,228
- dc 216,203,192,181,171,161,152,144,136,128,121,114
-
- P13 move.b 2(a5),d0
- sub.b d0,14+1(a5)
- bpl.b P14
- clr 14(a5)
- clr 8(a4)
- bra.w P1C
- P14 moveq #64,d0
- cmp 14(a5),d0
- bge.b P15
- move d0,14(a5)
- move d0,8(a4)
- bra.b P1C
- P15 move 14(a5),8(a4)
- bra.b P1C
-
- P16 move.b 2(a5),d0
- sub.b d0,14+1(a5)
- bpl.b P17
- clr 14(a5)
- clr 8(a4)
- bra.b P19
- P17 moveq #64,d0
- cmp 14(a5),d0
- bge.b P18
- move d0,14(a5)
- P18 move 14(a5),8(a4)
-
- P19 move 18(a5),d0
- beq.b P1C
- move 20(a5),d1
- cmp 16(a5),d0
- blt.b P1A
-
- add d1,16(a5)
- cmp 16(a5),d0
- bgt.b P1B
- move d0,16(a5)
- clr 18(a5)
- move d0,6(a4)
- bra.b P1C
-
- P1A sub d1,16(a5)
- cmp 16(a5),d0
- blt.b P1B
- move d0,16(a5)
- clr 18(a5)
- P1B move 16(a5),6(a4)
-
- P1C add d6,a5
- add d7,a4
- dbf d5,P7
-
- cmp P6A(pc),d4
- beq.b P21
- rts
-
- P1D moveq #0,D0
- move.b 2(a5),d0
- sub d0,16(a5)
- moveq #113,d0
- cmpi 16(a5),d0
- ble.b P1E
- move d0,16(a5)
- move d0,6(a4)
- bra.b P1C
- P1E move 16(a5),6(a4)
- bra.b P1C
-
- P1F moveq #0,d0
- move.b 2(a5),d0
- add d0,16(a5)
- cmp #856,16(a5)
- ble.b P20
- move.w #856,d0
- move d0,16(a5)
- move d0,6(a4)
- bra.b P1C
- P20 move 16(a5),6(a4)
- bra.b P1C
-
- P21 tst P6D-P0(a3)
- beq.b P22
- subq #1,P6D-P0(a3)
- rts
-
- P22 lea P63(pc),a5
- move.l P72(pc),a0
- move.l P70(pc),a4
-
- moveq #3,d5
- P23 tst.b 3(a5)
- beq.b P25
- bmi.b P24
-
- subq.b #1,3(a5)
- clr 30(a5)
- add d6,a5
- dbf d5,P23
- bra.b P2B
-
- P24 addq.b #1,3(a5)
- bra.b P29
-
- P25 tst.b 40+1(a5)
- beq.b P26
-
- subq.b #1,40+1(a5)
- addq.l #4,36(a5)
- move.l 36(a5),a2
- move.l (a2),(a5)
- bra.b P29
-
- P26 move.l 32(a5),a2
- tst.b (a2)
- bmi.b P27
- move.l (a2),(a5)
- bra.b P28
-
- P27 move (a2)+,40(a5)
- move (a2),d0
- lea (a4,d0),a2
- move.l (a2),(a5)
- move.l a2,36(a5)
- P28 addq.l #4,32(a5)
-
- P29 move (a5),d0
- st 30(a5)
-
- and #$1f0,d0
- beq.b P2A
- lea (a0,d0),a1
- move.l a1,4(a5)
- move.l 12(a1),12(a5)
-
- P2A add d6,a5
- dbf d5,P23
-
- P2B subq #1,P68-P0(a3)
- bpl.b P2D
-
- move #63,P68-P0(a3)
- move.l P6C-P0(a3),a1
- move (a1)+,d0
- bpl.b P2C
- move.l P6F(pc),a1
- move (a1)+,d0
- P2C lea (a4,d0),a2
- move.l a2,32+P63-P0(a3)
- move (a1)+,d0
- lea (a4,d0),a2
- move.l a2,32+P64-P0(a3)
- move (a1)+,d0
- lea (a4,d0),a2
- move.l a2,32+P65-P0(a3)
- move (a1)+,d0
- add d0,a4
- move.l a4,32+P66-P0(a3)
- move.l a1,P6C-P0(a3)
- P2D rts
-
- P2E clr (a3)
- tst P6E-P0(a3)
- beq.b P2F
- subq #1,P6E-P0(a3)
- rts
-
- P2F ;tst P6B-P0(a3) ;Remove colons if you use P69 1
- ;beq.b P30
- ;bsr.w P21
-
- P30 lea P63(pc),a5
- lea $a0(a6),a4
- lea P12(pc),a2
-
- move.b #%10010001,$bfde00
- lea P60(pc),a1
- move.l a1,$78.w
-
- move #$8000,d4
- moveq #3,d5
- P31 tst 30(a5)
- beq.b P35
-
- moveq #$f,d1
- and (a5),d1
- subq #3,d1
- beq.b P33
- subq #2,d1
- beq.b P34
-
- moveq #$7e,d0
- and.b (a5),d0
- beq.b P32
- clr.b 23(a5)
- add 12(a5),d0
- move d0,28(a5)
- move (a2,d0),16(a5)
- move 42(a5),d0
- move d0,$96(a6)
- eor d0,d4
-
- subq #4,d1
- beq.b P36
-
- move.l 4(a5),a1
- move.l (a1)+,(a4)
- move (a1),4(a4)
-
- P32 moveq #$f,d0
- and (a5),d0
- lea P5F(pc),a1
- add d0,d0
- add (a1,d0),a1
- jmp (a1)
-
- P33 move.b 2(a5),d0
- beq.b P34
- move.b d0,20+1(a5)
- P34 moveq #$7e,d0
- and.b (a5),d0
- beq.b P35
- add 12(a5),d0
- move d0,28(a5)
- move (a2,d0),18(a5)
- P35 move 16(a5),6(a4)
- move 14(a5),8(a4)
-
- add d6,a5
- add d7,a4
- dbf d5,P31
-
- move d4,P67-P0(a3)
- rts
-
- P36 moveq #0,d1
- move.b 2(a5),d1
- lsl #8,d1
- move.l 4(a5),a1
- move.l (a1)+,d0
- add.l d1,d0
- move.l d0,(a4)
- asr #1,d1
- move (a1),d0
- sub d1,d0
- bpl.b P37
- move.l -4(a1),(a4)
- moveq #1,d0
- P37 move d0,4(a4)
- bra.b P35
-
- P38 move.b 2(a5),14+1(a5)
- bra.b P35
-
- P39 moveq #0,d0
- move.b 2(a5),d0
- asl #2,d0
- add.l P6F(pc),d0
- move.l d0,P6C-P0(a3)
-
- P40 move #63,P68-P0(a3)
- move.l P6C-P0(a3),a1
- move.l P70(pc),a2
- move (a1)+,d0
- bpl.b P41
- move.l P6F(pc),a1
- move (a1)+,d0
- P41 movem (a1)+,d1-d3
- move.l a1,P6C-P0(a3)
- lea (a2,d0),a1
- move.l a1,32+P63-P0(a3)
- lea (a2,d1),a1
- move.l a1,32+P64-P0(a3)
- lea (a2,d2),a1
- move.l a1,32+P65-P0(a3)
- add d3,a2
- move.l a2,32+P66-P0(a3)
- bra.w P35
-
- P42 move.b 2(a5),d0
- beq.w P35
- move.b d0,d1
- move.b 22(a5),d2
- and.b #$f,d0
- beq.b P43
- and.b #$f0,d2
- or.b d0,d2
- P43 and.b #$f0,d1
- beq.b P44
- and.b #$f,d2
- or.b d1,d2
- P44 move.b d2,22(a5)
- bra.w P35
-
- P45 move.b 2(a5),d0
- beq.w P35
- move.b d0,d1
- move.b 24(a5),d2
- moveq #$f,d3
- and.b d3,d0
- beq.b P46
- and.b #$f0,d2
- or.b d0,d2
- P46 and.b #$f0,d1
- beq.b P47
- and.b d3,d2
- or.b d1,d2
- P47 move.b d2,24(a5)
- bra.w P35
-
- P48 move.b 2(a5),d0
- and.b #$f0,d0
- lsr #3,d0
- move P49(pc,d0),d0
- jmp P49(pc,d0)
-
- P49 dc P4A-P49,P4B-P49,P4C-P49,P35-P49,P35-P49,P4E-P49,P35-P49
- dc P35-P49,P35-P49,P4F-P49,P4D-P49,P50-P49,P35-P49,P51-P49
- dc P52-P49,P35-P49
-
- P4A move.b 2(a5),d0
- and.b #$fd,$bfe001
- or.b d0,$bfe001
- bra.w P35
-
- P4B moveq #$f,d0
- and.b 2(a5),d0
- sub d0,16(a5)
- moveq #113,d0
- cmpi 16(a5),d0
- ble.w P35
- move d0,16(A5)
- bra.w P35
-
- P4C moveq #$f,d0
- and.b 2(a5),d0
- add d0,16(a5)
- cmp #856,16(a5)
- ble.w P35
- move #856,16(a5)
- bra.w P35
-
- P4D moveq #$f,d0
- and.b 2(a5),d0
- add d0,14(a5)
- moveq #64,d0
- cmpi 14(a5),d0
- bge.w P35
- move d0,14(a5)
- bra.w P35
-
- P4E moveq #$f,d0
- and.b 2(a5),d0
- mulu #74,d0
- move d0,12(a5)
- bra.w P35
-
- P4F moveq #$f,d0
- and.b 2(a5),d0
- move d0,26(a5)
- bra.w P35
-
- P50 moveq #$f,d0
- and.b 2(a5),d0
- sub d0,14(a5)
- bpl.w P35
- clr 14(a5)
- bra.w P35
-
- P51 move 42(a5),d0
- eor d0,d4
- bra.w P35
-
- P52 moveq #$f,d0
- and.b 2(a5),d0
- move d0,P6D-P0(a3)
- move d0,P6E-P0(a3)
- bra.w P35
-
- P53 move.b 2(a5),d0
- cmp.b #1,d0
- bne.b P54
- move.b d0,P69+1-P0(a3)
- move.b d0,P6A+1-P0(a3)
- st P6B-P0(a3)
- bra.w P35
- P54 move.b d0,P69+1-P0(a3)
- subq.b #1,d0
- move.b d0,P6A+1-P0(a3)
- clr P6B-P0(a3)
- bra.w P35
-
- P55 move.b 2(a5),d0
- sub.b d0,14+1(a5)
- bpl.b P56
- clr 14(a5)
- clr 8(a4)
- bra.b P58
- P56 moveq #64,d0
- cmp 14(a5),d0
- bge.b P57
- move d0,14(a5)
- P57 move 14(a5),8(a4)
-
- P58 moveq #$f,d0
- and.b 22(a5),d0
- lsl #6,d0
-
- move.b 23(a5),d1
- lsr #1,d1
- and #$3e,d1
- add d1,d0
-
- move.w P5E(pc,d0),d2
-
- move 16(a5),d0
- tst.b 23(a5)
- bmi.b P59
- add d2,d0
- bra.b P5A
-
- P59 sub d2,d0
-
- P5A move d0,6(a4)
- move.b 22(a5),d0
- lsr.b #2,d0
- and #$3c,d0
- add.b d0,23(a5)
- bra.w P1C
-
- P5B moveq #$f,d0
- and.b 24(a5),d0
- lsl #6,d0
-
- move.b 25(a5),d1
- lsr #1,d1
- and #$3e,d1
- add d1,d0
-
- move P5E(pc,d0),d2
-
- move 14(a5),d0
- tst.b 25(a5)
- bmi.b P5C
- add d2,d0
- cmp #64,d0
- ble.b P5D
- moveq #64,d0
- bra.b P5D
-
- P5C sub d2,d0
- bpl.b P5D
- moveq #0,d0
- P5D move d0,8(a4)
- move.b 24(a5),d0
- lsr.b #2,d0
- and #$3c,d0
- add.b d0,25(a5)
- bra.w P1C
-
- incdir "dh0:asm/sources/Player/"
- P5E incbin vibtab
-
- P5F dc P35-P5F,P35-P5F,P35-P5F,P35-P5F,P42-P5F,P35-P5F,P35-P5F
- dc P45-P5F,P35-P5F,P35-P5F,P35-P5F,P39-P5F,P38-P5F,P40-P5F
- dc P48-P5F,P53-P5F
-
- P60 move P67(pc),$dff096
- move.l P71(pc),$78.w
- tst.b $bfdd00
- P61 move #$2000,$dff09c
- rte
-
- P62 movem.l d0/a0/a1,-(sp)
- lea $dff0a0,a1
- move P67(pc),d0
-
- move.l 4+P63(pc),a0
- move.l 6(a0),(a1)
- move 10(a0),4(a1)
- move.l 4+P64(pc),a0
- move.l 6(a0),16(a1)
- move 10(a0),20(a1)
- move.l 4+P65(pc),a0
- move.l 6(a0),32(a1)
- move 10(a0),36(a1)
- move.l 4+P66(pc),a0
- move.l 6(a0),48(a1)
- move 10(a0),52(a1)
-
- tst.b $bfdd00
- move.b #%10000000,$bfde00
- move #$2000,-4(a1)
- movem.l (sp)+,d0/a0/a1
- rte
-
- P63 ds 21
- dc 1
- P64 ds 21
- dc 2
- P65 ds 21
- dc 4
- P66 ds 21
- dc 8
- P0 dc 0
- P67 dc $8000
- P68 dc 63
- P69 dc 6
- P6A dc 5
- P6B dc 0
- P6C dc.l 0
- P6D dc 0
- P6E dc 0
- P6F dc.l 0
- P70 dc.l 0
- P71 dc.l 0
- P72 dc.l 0
- P73 dc.l 0
-
- */ end of file /*
-