******************************* * 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 /*