Mercurial > hg > forks > pwpunix
comparison nykyaeka/musa.c @ 0:acb5694e93d9
Initial import.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 18 May 2010 04:25:44 +0300 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:acb5694e93d9 |
---|---|
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(); */ |