0
|
1 #define pwplib_volume 64
|
|
2 /* to pwplib.h -- pwplib.setup[SOUND_VOLUME] */
|
|
3
|
|
4 #include "pwpdemo.h"
|
|
5
|
|
6 #include "musa.h"
|
|
7
|
|
8 struct
|
|
9 {
|
|
10 int ord,patt,row;
|
|
11 int tick,tempo;
|
|
12 }player;
|
|
13
|
|
14 void newnote()
|
|
15 {
|
|
16 int c=0;
|
|
17
|
|
18 for(;c<3;c++)
|
|
19 {
|
|
20 int note=pwpmusic[player.patt][c][player.row];
|
|
21
|
|
22 if(note==253)
|
|
23 {
|
|
24 if(player.tempo==6)player.tempo=50;else
|
|
25 player.tempo=4;
|
|
26 }else
|
|
27 if(note==254)
|
|
28 pwplib_sound_nv(c,0,0);
|
|
29 else
|
|
30 if(note!=255)
|
|
31 pwplib_sound_nv(c,(note-5)<<8,pwplib_volume);
|
|
32 }
|
|
33 player.row++;
|
|
34 if(player.row==64)
|
|
35 {
|
|
36 player.row=0;
|
|
37 player.ord++;
|
|
38 player.patt=pwpmusic_order[player.ord];
|
|
39
|
|
40 if(player.patt>128)
|
|
41 {
|
|
42 if(player.patt==255)player.ord=0;else
|
|
43 {
|
|
44 if(player.patt==254)player.tempo=5;
|
|
45 player.ord++;
|
|
46 }
|
|
47 player.patt=pwpmusic_order[player.ord];
|
|
48 }
|
|
49 }
|
|
50 }
|
|
51
|
|
52 void playtick()
|
|
53 {
|
|
54 if(player.tick==0)
|
|
55 newnote();
|
|
56
|
|
57 player.tick++;
|
|
58 if(player.tick==player.tempo)
|
|
59 player.tick=0;
|
|
60 }
|
|
61
|
|
62 void initplayer()
|
|
63 {
|
|
64 player.row=player.ord;
|
|
65 player.patt=pwpmusic_order[0];
|
|
66 player.tick=0;
|
|
67 player.tempo=6;
|
|
68 pwplib_setplayer(playtick);
|
|
69 }
|
|
70
|
|
71
|
|
72 /* loopflush(); */
|