1 /***********************************************************
2 * Rocks'n'Diamonds -- McDuffin Strikes Back! *
3 *----------------------------------------------------------*
4 * (c) 1995-2002 Artsoft Entertainment *
6 * Detmolder Strasse 189 *
9 * e-mail: info@artsoft.org *
10 *----------------------------------------------------------*
12 ***********************************************************/
14 #include "libgame/libgame.h"
18 /* List values that are not defined in the configuration file are set to
19 reliable default values. If that value is GFX_ARG_UNDEFINED, it will
20 be dynamically determined, using some of the other list values. */
22 struct ConfigInfo sound_config_suffix[] =
24 { ".mode_loop", ARG_UNDEFINED, TYPE_BOOLEAN },
29 struct ConfigInfo sound_config[] =
31 /* some default sounds */
32 { "[default].digging", "schlurf.wav" },
33 { "[default].collecting", "pong.wav" },
34 { "[default].snapping", "pong.wav" },
35 { "[default].pushing", "pusch.wav" },
36 { "[default].impact", "klopf.wav" },
37 { "[default].walking", "empty.wav" },
38 { "[default].passing", "gate.wav" },
39 { "[default].dying", "autsch.wav" },
40 { "[default].exploding", "roaaar.wav" },
41 { "[sp_default].exploding", "booom.wav" },
43 /* sounds for Boulder Dash style elements and actions */
44 { "bd_diamond.collecting", "pong.wav" },
45 { "bd_diamond.impact", "pling.wav" },
46 { "bd_rock.pushing", "pusch.wav" },
47 { "bd_rock.impact", "klopf.wav" },
48 { "bd_magic_wall.activating", "quirk.wav" },
49 { "bd_magic_wall.active", "miep.wav" },
50 { "bd_magic_wall.filling", "quirk.wav" },
51 { "bd_amoeba.waiting", UNDEFINED_FILENAME },
52 { "bd_amoeba.growing", "amoebe.wav" },
53 { "bd_amoeba.turning_to_gem", "pling.wav" },
54 { "bd_amoeba.turning_to_rock", "klopf.wav" },
55 { "bd_butterfly.moving", "klapper.wav" },
56 { "bd_butterfly.waiting", "klapper.wav" },
57 { "bd_firefly.moving", "roehr.wav" },
58 { "bd_firefly.waiting", "roehr.wav" },
60 /* sounds for Supaplex style elements and actions */
61 { "sp_base.digging", "base.wav" },
62 { "sp_buggy_base.digging", "base.wav" },
63 { "sp_buggy_base.active", "bug.wav" },
64 { "sp_infotron.collecting", "infotron.wav" },
65 { "sp_infotron.impact", "pling.wav" },
66 { "sp_zonk.pushing", "zonkpush.wav" },
67 { "sp_zonk.impact", "zonkdown.wav" },
68 { "sp_disk_red.collecting", "infotron.wav" },
69 { "sp_disk_orange.pushing", "zonkpush.wav" },
70 { "sp_disk_yellow.pushing", "pusch.wav" },
71 { "[sp_port].passing", "gate.wav" },
72 { "[sp_exit].passing", "exit.wav" },
73 { "[sp_exit].opening", UNDEFINED_FILENAME },
74 { "sp_sniksnak.moving", UNDEFINED_FILENAME },
75 { "sp_sniksnak.waiting", UNDEFINED_FILENAME },
76 { "sp_electron.moving", UNDEFINED_FILENAME },
77 { "sp_electron.waiting", UNDEFINED_FILENAME },
78 { "sp_terminal.activating", UNDEFINED_FILENAME },
79 { "sp_terminal.active", UNDEFINED_FILENAME },
81 /* sounds for Sokoban style elements and actions */
82 { "[sokoban].pushing", "pusch.wav" },
83 { "[sokoban].filling", "deng.wav" },
84 { "[sokoban].emptying", UNDEFINED_FILENAME },
86 /* sounds for Emerald Mine style elements and actions */
87 { "[player].moving", "empty.wav" },
88 { "[player].moving.mode_loop", "false" },
89 { "sand.digging", "schlurf.wav" },
90 { "emerald.collecting", "pong.wav" },
91 { "emerald.impact", "pling.wav" },
92 { "diamond.collecting", "pong.wav" },
93 { "diamond.impact", "pling.wav" },
94 { "diamond.breaking", "quirk.wav" },
95 { "rock.pushing", "pusch.wav" },
96 { "rock.impact", "klopf.wav" },
97 { "bomb.pushing", "pusch.wav" },
98 { "nut.pushing", "knurk.wav" },
99 { "nut.breaking", "knack.wav" },
100 { "nut.impact", "klumpf.wav" },
101 { "[dynamite].collecting", "pong.wav" },
102 { "[dynamite].dropping", "deng.wav" },
103 { "[dynamite].active", "zisch.wav" },
104 { "[key].collecting", "pong.wav" },
105 { "[gate].passing", "gate.wav" },
106 { "bug.moving", "klapper.wav" },
107 { "bug.waiting", "klapper.wav" },
108 { "spaceship.moving", "roehr.wav" },
109 { "spaceship.waiting", "roehr.wav" },
110 { "yamyam.moving", UNDEFINED_FILENAME },
111 { "yamyam.waiting", "njam.wav" },
112 { "yamyam.digging", UNDEFINED_FILENAME },
113 { "robot.moving", "schlurf.wav" },
114 { "robot.moving.mode_loop", "false" },
115 { "robot.waiting", UNDEFINED_FILENAME },
116 { "robot_wheel.activating", "deng.wav" },
117 { "robot_wheel.active", "miep.wav" },
118 { "magic_wall.activating", "quirk.wav" },
119 { "magic_wall.active", "miep.wav" },
120 { "magic_wall.filling", "quirk.wav" },
121 { "[amoeba].waiting", UNDEFINED_FILENAME },
122 { "[amoeba].growing", "amoebe.wav" },
123 { "[amoeba].dropping", UNDEFINED_FILENAME },
124 { "acid.splashing", "blurb.wav" },
125 { "[quicksand].filling", UNDEFINED_FILENAME },
126 { "[quicksand].emptying", UNDEFINED_FILENAME },
127 { "[exit].opening", "oeffnen.wav" },
128 { "[exit].passing", "buing.wav" },
129 { "penguin.passing", "buing.wav" },
131 /* sounds for Emerald Mine Club style elements and actions */
132 { "balloon.moving", UNDEFINED_FILENAME },
133 { "balloon.waiting", UNDEFINED_FILENAME },
134 { "balloon.pushing", "schlurf.wav" },
135 { "[balloon_switch].activating", UNDEFINED_FILENAME },
136 { "spring.moving", UNDEFINED_FILENAME },
137 { "spring.pushing", "pusch.wav" },
138 { "spring.impact", "klopf.wav" },
139 { "[wall].growing", UNDEFINED_FILENAME },
141 /* sounds for Diamond Caves style elements and actions */
142 { "pearl.collecting", "pong.wav" },
143 { "pearl.breaking", "knack.wav" },
144 { "pearl.impact", "pling.wav" },
145 { "crystal.collecting", "pong.wav" },
146 { "crystal.impact", "pling.wav" },
147 { "envelope.collecting", "pong.wav" },
148 { "invisible_sand.digging", "schlurf.wav" },
149 { "shield_normal.collecting", "pong.wav" },
150 { "shield_normal.active", UNDEFINED_FILENAME },
151 { "shield_deadly.collecting", "pong.wav" },
152 { "shield_deadly.active", UNDEFINED_FILENAME },
153 { "extra_time.collecting", "gong.wav" },
154 { "mole.moving", UNDEFINED_FILENAME },
155 { "mole.waiting", UNDEFINED_FILENAME },
156 { "mole.digging", "blurb.wav" },
157 { "[switchgate_switch].activating", UNDEFINED_FILENAME },
158 { "[switchgate].opening", "oeffnen.wav" },
159 { "[switchgate].closing", "oeffnen.wav" },
160 { "[switchgate].passing", "gate.wav" },
161 { "timegate_switch.activating", "deng.wav" },
162 { "timegate_switch.active", "miep.wav" },
163 { "timegate_switch.deactivating", UNDEFINED_FILENAME },
164 { "timegate.opening", "oeffnen.wav" },
165 { "[timegate].closing", "oeffnen.wav" },
166 { "[timegate].passing", "gate.wav" },
167 { "[conveyor_belt_switch].activating",UNDEFINED_FILENAME },
168 { "[conveyor_belt].active", UNDEFINED_FILENAME },
169 { "[conveyor_belt_switch].deactivating",UNDEFINED_FILENAME },
170 { "light_switch.activating", UNDEFINED_FILENAME },
171 { "light_switch.deactivating", UNDEFINED_FILENAME },
173 /* sounds for DX Boulderdash style elements and actions */
174 { "dx_supabomb.pushing", "pusch.wav" },
175 { "trap.digging", "schlurf.wav" },
176 { "trap.activating", UNDEFINED_FILENAME },
177 { "[tube].walking", UNDEFINED_FILENAME },
179 /* sounds for Rocks'n'Diamonds style elements and actions */
180 { "amoeba.turning_to_gem", "pling.wav" },
181 { "amoeba.turning_to_rock", "klopf.wav" },
182 { "speed_pill.collecting", "pong.wav" },
183 { "dynabomb_increase_number.collecting","pong.wav" },
184 { "dynabomb_increase_size.collecting","pong.wav" },
185 { "dynabomb_increase_power.collecting","pong.wav" },
186 { "[dynabomb].dropping", "deng.wav" },
187 { "[dynabomb].active", "zisch.wav" },
188 { "satellite.moving", UNDEFINED_FILENAME },
189 { "satellite.waiting", UNDEFINED_FILENAME },
190 { "satellite.pushing", "pusch.wav" },
191 { "lamp.activating", "deng.wav" },
192 { "lamp.deactivating", "deng.wav" },
193 { "time_orb_full.collecting", "gong.wav" },
194 { "time_orb_full.impact", "deng.wav" },
195 { "time_orb_empty.pushing", "pusch.wav" },
196 { "time_orb_empty.impact", "deng.wav" },
197 { "game_of_life.waiting", UNDEFINED_FILENAME },
198 { "game_of_life.growing", "amoebe.wav" },
199 { "biomaze.waiting", UNDEFINED_FILENAME },
200 { "biomaze.growing", "amoebe.wav" },
201 { "pacman.moving", UNDEFINED_FILENAME },
202 { "pacman.waiting", UNDEFINED_FILENAME },
203 { "pacman.digging", UNDEFINED_FILENAME },
204 { "dark_yamyam.moving", UNDEFINED_FILENAME },
205 { "dark_yamyam.waiting", "njam.wav" },
206 { "dark_yamyam.digging", UNDEFINED_FILENAME },
207 { "penguin.moving", UNDEFINED_FILENAME },
208 { "penguin.waiting", UNDEFINED_FILENAME },
209 { "pig.moving", UNDEFINED_FILENAME },
210 { "pig.waiting", UNDEFINED_FILENAME },
211 { "pig.digging", UNDEFINED_FILENAME },
212 { "dragon.moving", UNDEFINED_FILENAME },
213 { "dragon.waiting", UNDEFINED_FILENAME },
214 { "dragon.attacking", UNDEFINED_FILENAME },
216 /* sounds not associated to game elements (used for menu screens etc.) */
217 /* keyword to stop parser: "NO_MORE_ELEMENT_SOUNDS" <-- do not change! */
219 /* sounds for other game actions */
220 { "game.starting", UNDEFINED_FILENAME },
221 { "game.running_out_of_time", "gong.wav" },
222 { "game.leveltime_bonus", "sirr.wav" },
223 { "game.losing", "lachen.wav" },
224 { "game.winning", UNDEFINED_FILENAME },
225 { "game.sokoban_solving", "buing.wav" },
227 /* sounds for other non-game actions */
228 { "door.opening", "oeffnen.wav" },
229 { "door.closing", "oeffnen.wav" },
231 { "background.SCORES", "halloffame.wav" },
232 { "background.SCORES.mode_loop", "false" },
234 { "background.INFO", "rhythmloop.wav" },
235 { "background.INFO.mode_loop", "true" },
238 { "[not used]", "antigrav.wav" },
239 { "[not used]", "bong.wav" },
240 { "[not used]", "fuel.wav" },
241 { "[not used]", "holz.wav" },
242 { "[not used]", "hui.wav" },
243 { "[not used]", "kabumm.wav" },
244 { "[not used]", "kink.wav" },
245 { "[not used]", "kling.wav" },
246 { "[not used]", "krach.wav" },
247 { "[not used]", "laser.wav" },
248 { "[not used]", "quiek.wav" },
249 { "[not used]", "rumms.wav" },
250 { "[not used]", "schlopp.wav" },
251 { "[not used]", "schrff.wav" },
252 { "[not used]", "schwirr.wav" },
253 { "[not used]", "slurp.wav" },
254 { "[not used]", "sproing.wav" },
255 { "[not used]", "warnton.wav" },
256 { "[not used]", "whoosh.wav" },
257 { "[not used]", "boom.wav" },