fixed using strtod() by resetting errno to detect overflow/underflow
[rocksndiamonds.git] / src / conf_snd.c
1 // ============================================================================
2 // Rocks'n'Diamonds - McDuffin Strikes Back!
3 // ----------------------------------------------------------------------------
4 // (c) 1995-2014 by Artsoft Entertainment
5 //                  Holger Schemel
6 //                  info@artsoft.org
7 //                  https://www.artsoft.org/
8 // ----------------------------------------------------------------------------
9 // conf_snd.c
10 // ============================================================================
11
12 #include "libgame/libgame.h"
13 #include "main.h"
14
15
16 // List values that are not defined in the configuration file are set to
17 // reliable default values. If that value is SND_ARG_UNDEFINED, it will
18 // be dynamically determined, using some of the other list values.
19
20 struct ConfigTypeInfo sound_config_suffix[] =
21 {
22   { ".mode_loop",                               ARG_UNDEFINED,  TYPE_BOOLEAN    },
23   { ".volume",                                  "100",          TYPE_INTEGER    },
24   { ".priority",                                "0",            TYPE_INTEGER    },
25
26   { NULL,                                       NULL,           0               }
27 };
28
29 struct ConfigInfo sound_config[] =
30 {
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   { "[default].hitting",                        "kink.wav"                      },
42   { "[sp_default].exploding",                   "booom.wav"                     },
43   { "[mm_default].exploding",                   "kabumm.wav"                    },
44
45   // sounds for Boulder Dash style elements and actions
46   { "bd_sand_ball.falling",                     UNDEFINED_FILENAME              },
47   { "bd_sand_ball.impact",                      "schlurf.wav"                   },
48   { "bd_sand_loose.falling",                    UNDEFINED_FILENAME              },
49   { "bd_sand_loose.impact",                     "schlurf.wav"                   },
50   { "bd_diamond.collecting",                    "pong.wav"                      },
51   { "bd_diamond.falling",                       UNDEFINED_FILENAME              },
52   { "bd_diamond.impact",                        "pling.wav"                     },
53   { "bd_flying_diamond.collecting",             "pong.wav"                      },
54   { "bd_flying_diamond.falling",                UNDEFINED_FILENAME              },
55   { "bd_flying_diamond.impact",                 "pling.wav"                     },
56   { "bd_rock.pushing",                          "pusch.wav"                     },
57   { "bd_rock.falling",                          UNDEFINED_FILENAME              },
58   { "bd_rock.impact",                           "klopf.wav"                     },
59   { "bd_flying_rock.pushing",                   "pusch.wav"                     },
60   { "bd_flying_rock.falling",                   UNDEFINED_FILENAME              },
61   { "bd_flying_rock.impact",                    "klopf.wav"                     },
62   { "bd_mega_rock.pushing",                     "pusch.wav"                     },
63   { "bd_mega_rock.falling",                     UNDEFINED_FILENAME              },
64   { "bd_mega_rock.impact",                      "klopf.wav"                     },
65   { "bd_waiting_rock.pushing",                  "pusch.wav"                     },
66   { "bd_chasing_rock.pushing",                  "pusch.wav"                     },
67   { "bd_nut.pushing",                           "knurk.wav"                     },
68   { "bd_nut.breaking",                          "knack.wav"                     },
69   { "bd_nut.falling",                           UNDEFINED_FILENAME              },
70   { "bd_nut.impact",                            "klumpf.wav"                    },
71   { "bd_nitro_pack.pushing",                    "pusch.wav"                     },
72   { "bd_nitro_pack.impact",                     "klopf.wav"                     },
73   { "bd_magic_wall.activating",                 "quirk.wav"                     },
74   { "bd_magic_wall.active",                     "miep.wav"                      },
75   { "bd_magic_wall.filling",                    "quirk.wav"                     },
76   { "bd_amoeba.waiting",                        UNDEFINED_FILENAME              },
77   { "bd_amoeba.growing",                        "amoebe.wav"                    },
78   { "bd_amoeba.turning_to_gem",                 "pling.wav"                     },
79   { "bd_amoeba.turning_to_gem.mode_loop",       "false"                         },
80   { "bd_amoeba.turning_to_rock",                "klopf.wav"                     },
81   { "bd_amoeba.turning_to_rock.mode_loop",      "false"                         },
82   { "bd_amoeba.other",                          UNDEFINED_FILENAME              },
83   { "bd_butterfly.moving",                      "klapper.wav"                   },
84   { "bd_butterfly.waiting",                     "klapper.wav"                   },
85   { "bd_firefly.moving",                        "roehr.wav"                     },
86   { "bd_firefly.waiting",                       "roehr.wav"                     },
87
88   // sounds for Supaplex style elements and actions
89   { "sp_base.digging",                          "base.wav"                      },
90   { "sp_buggy_base.digging",                    "base.wav"                      },
91   { "sp_buggy_base.active",                     "bug.wav"                       },
92   { "sp_infotron.collecting",                   "infotron.wav"                  },
93   { "sp_infotron.impact",                       "pling.wav"                     },
94   { "sp_zonk.pushing",                          "zonkpush.wav"                  },
95   { "sp_zonk.impact",                           "zonkdown.wav"                  },
96   { "sp_disk_red.collecting",                   "infotron.wav"                  },
97   { "sp_disk_orange.pushing",                   "zonkpush.wav"                  },
98   { "sp_disk_yellow.pushing",                   "pusch.wav"                     },
99   { "[sp_port].passing",                        "gate.wav"                      },
100   { "[sp_exit].passing",                        "exit.wav"                      },
101   { "[sp_exit].opening",                        UNDEFINED_FILENAME              },
102   { "[sp_exit].closing",                        UNDEFINED_FILENAME              },
103   { "sp_sniksnak.moving",                       UNDEFINED_FILENAME              },
104   { "sp_sniksnak.waiting",                      UNDEFINED_FILENAME              },
105   { "sp_electron.moving",                       UNDEFINED_FILENAME              },
106   { "sp_electron.waiting",                      UNDEFINED_FILENAME              },
107   { "sp_terminal.activating",                   UNDEFINED_FILENAME              },
108   { "sp_terminal.active",                       UNDEFINED_FILENAME              },
109
110   // sounds for Sokoban style elements and actions
111   { "[sokoban].pushing",                        "pusch.wav"                     },
112   { "[sokoban].filling",                        "deng.wav"                      },
113   { "[sokoban].emptying",                       UNDEFINED_FILENAME              },
114
115   // sounds for Emerald Mine style elements and actions
116   { "[player].moving",                          "empty.wav"                     },
117   { "[player].moving.mode_loop",                "false"                         },
118   { "sand.digging",                             "schlurf.wav"                   },
119   { "[emerald].collecting",                     "pong.wav"                      },
120   { "[emerald].impact",                         "pling.wav"                     },
121   { "diamond.collecting",                       "pong.wav"                      },
122   { "diamond.impact",                           "pling.wav"                     },
123   { "diamond.breaking",                         "quirk.wav"                     },
124   { "rock.pushing",                             "pusch.wav"                     },
125   { "rock.impact",                              "klopf.wav"                     },
126   { "bomb.pushing",                             "pusch.wav"                     },
127   { "nut.pushing",                              "knurk.wav"                     },
128   { "nut.breaking",                             "knack.wav"                     },
129   { "nut.impact",                               "klumpf.wav"                    },
130   { "[dynamite].collecting",                    "pong.wav"                      },
131   { "[dynamite].dropping",                      "deng.wav"                      },
132   { "[dynamite].active",                        "zisch.wav"                     },
133   { "[key].collecting",                         "pong.wav"                      },
134   { "[gate].passing",                           "gate.wav"                      },
135   { "bug.moving",                               "klapper.wav"                   },
136   { "bug.waiting",                              "klapper.wav"                   },
137   { "spaceship.moving",                         "roehr.wav"                     },
138   { "spaceship.waiting",                        "roehr.wav"                     },
139   { "yamyam.moving",                            UNDEFINED_FILENAME              },
140   { "yamyam.waiting",                           "njam.wav"                      },
141   { "yamyam.digging",                           "njam.wav"                      },
142   { "robot.moving",                             "schlurf.wav"                   },
143   { "robot.moving.mode_loop",                   "false"                         },
144   { "robot.waiting",                            UNDEFINED_FILENAME              },
145   { "robot_wheel.activating",                   "deng.wav"                      },
146   { "robot_wheel.active",                       "miep.wav"                      },
147   { "magic_wall.activating",                    "quirk.wav"                     },
148   { "magic_wall.active",                        "miep.wav"                      },
149   { "magic_wall.filling",                       "quirk.wav"                     },
150   { "dc_magic_wall.activating",                 "quirk.wav"                     },
151   { "dc_magic_wall.active",                     "miep.wav"                      },
152   { "dc_magic_wall.filling",                    "quirk.wav"                     },
153   { "[amoeba].waiting",                         UNDEFINED_FILENAME              },
154   { "[amoeba].growing",                         "amoebe.wav"                    },
155   { "[amoeba].dropping",                        UNDEFINED_FILENAME              },
156   { "acid.splashing",                           "blurb.wav"                     },
157   { "[quicksand].filling",                      UNDEFINED_FILENAME              },
158   { "[quicksand].emptying",                     UNDEFINED_FILENAME              },
159   { "[exit].opening",                           "oeffnen.wav"                   },
160   { "[exit].closing",                           "oeffnen.wav"                   },
161   { "[exit].passing",                           "buing.wav"                     },
162   { "[steel_exit].opening",                     "oeffnen.wav"                   },
163   { "[steel_exit].closing",                     "oeffnen.wav"                   },
164   { "[steel_exit].passing",                     "buing.wav"                     },
165   { "[em_exit].opening",                        "gong.wav"                      },
166   { "[em_exit].closing",                        UNDEFINED_FILENAME              },
167   { "[em_exit].passing",                        "buing.wav"                     },
168   { "[em_steel_exit].opening",                  "gong.wav"                      },
169   { "[em_steel_exit].closing",                  UNDEFINED_FILENAME              },
170   { "[em_steel_exit].passing",                  "buing.wav"                     },
171   { "penguin.passing",                          "buing.wav"                     },
172
173   // sounds for Emerald Mine Club style elements and actions
174   { "balloon.moving",                           UNDEFINED_FILENAME              },
175   { "balloon.waiting",                          UNDEFINED_FILENAME              },
176   { "balloon.pushing",                          "schlurf.wav"                   },
177   { "[balloon_switch].activating",              UNDEFINED_FILENAME              },
178   { "spring.moving",                            UNDEFINED_FILENAME              },
179   { "spring.pushing",                           "pusch.wav"                     },
180   { "spring.impact",                            "klopf.wav"                     },
181   { "[wall].growing",                           UNDEFINED_FILENAME              },
182   { "emc_android.pushing",                      "pusch.wav"                     },
183   { "emc_android.moving",                       "roehr.wav"                     },
184   { "emc_android.moving.mode_loop",             "false"                         },
185   { "emc_android.dropping",                     "deng.wav"                      },
186   { "emc_magic_ball.dropping",                  "deng.wav"                      },
187
188   // sounds for Diamond Caves style elements and actions
189   { "pearl.collecting",                         "pong.wav"                      },
190   { "pearl.breaking",                           "knack.wav"                     },
191   { "pearl.impact",                             "pling.wav"                     },
192   { "crystal.collecting",                       "pong.wav"                      },
193   { "crystal.impact",                           "pling.wav"                     },
194   { "[envelope].collecting",                    "pong.wav"                      },
195   { "[envelope].opening",                       UNDEFINED_FILENAME              },
196   { "[envelope].closing",                       UNDEFINED_FILENAME              },
197   { "invisible_sand.digging",                   "schlurf.wav"                   },
198   { "invisible_sand.active.digging",            "schlurf.wav"                   },
199   { "shield_normal.collecting",                 "pong.wav"                      },
200   { "shield_normal.active",                     UNDEFINED_FILENAME              },
201   { "shield_deadly.collecting",                 "pong.wav"                      },
202   { "shield_deadly.active",                     UNDEFINED_FILENAME              },
203   { "extra_time.collecting",                    "gong.wav"                      },
204   { "mole.moving",                              UNDEFINED_FILENAME              },
205   { "mole.waiting",                             UNDEFINED_FILENAME              },
206   { "mole.digging",                             "blurb.wav"                     },
207   { "[switchgate_switch].activating",           UNDEFINED_FILENAME              },
208   { "[switchgate].opening",                     "oeffnen.wav"                   },
209   { "[switchgate].closing",                     "oeffnen.wav"                   },
210   { "[switchgate].passing",                     "gate.wav"                      },
211   { "[timegate_switch].activating",             "deng.wav"                      },
212   { "[timegate_switch].active",                 "miep.wav"                      },
213   { "[timegate_switch].deactivating",           UNDEFINED_FILENAME              },
214   { "[timegate].opening",                       "oeffnen.wav"                   },
215   { "[timegate].closing",                       "oeffnen.wav"                   },
216   { "[timegate].passing",                       "gate.wav"                      },
217   { "[conveyor_belt_switch].activating",        UNDEFINED_FILENAME              },
218   { "[conveyor_belt].active",                   UNDEFINED_FILENAME              },
219   { "[conveyor_belt_switch].deactivating",      UNDEFINED_FILENAME              },
220   { "light_switch.activating",                  UNDEFINED_FILENAME              },
221   { "light_switch.deactivating",                UNDEFINED_FILENAME              },
222
223   // sounds for DX Boulderdash style elements and actions
224   { "dx_supabomb.pushing",                      "pusch.wav"                     },
225   { "trap.digging",                             "schlurf.wav"                   },
226   { "trap.activating",                          UNDEFINED_FILENAME              },
227   { "[tube].walking",                           UNDEFINED_FILENAME              },
228
229   // sounds for Rocks'n'Diamonds style elements and actions
230   { "amoeba.turning_to_gem",                    "pling.wav"                     },
231   { "amoeba.turning_to_gem.mode_loop",          "false"                         },
232   { "amoeba.turning_to_rock",                   "klopf.wav"                     },
233   { "amoeba.turning_to_rock.mode_loop",         "false"                         },
234   { "speed_pill.collecting",                    "pong.wav"                      },
235   { "dynabomb_increase_number.collecting",      "pong.wav"                      },
236   { "dynabomb_increase_size.collecting",        "pong.wav"                      },
237   { "dynabomb_increase_power.collecting",       "pong.wav"                      },
238   { "[dynabomb].dropping",                      "deng.wav"                      },
239   { "[dynabomb].active",                        "zisch.wav"                     },
240   { "satellite.moving",                         UNDEFINED_FILENAME              },
241   { "satellite.waiting",                        UNDEFINED_FILENAME              },
242   { "satellite.pushing",                        "pusch.wav"                     },
243   { "lamp.activating",                          "deng.wav"                      },
244   { "lamp.deactivating",                        "deng.wav"                      },
245   { "time_orb_full.collecting",                 "gong.wav"                      },
246   { "time_orb_full.impact",                     "deng.wav"                      },
247   { "time_orb_empty.pushing",                   "pusch.wav"                     },
248   { "time_orb_empty.impact",                    "deng.wav"                      },
249   { "game_of_life.waiting",                     UNDEFINED_FILENAME              },
250   { "game_of_life.growing",                     "amoebe.wav"                    },
251   { "biomaze.waiting",                          UNDEFINED_FILENAME              },
252   { "biomaze.growing",                          "amoebe.wav"                    },
253   { "pacman.moving",                            UNDEFINED_FILENAME              },
254   { "pacman.waiting",                           UNDEFINED_FILENAME              },
255   { "pacman.digging",                           UNDEFINED_FILENAME              },
256   { "dark_yamyam.moving",                       UNDEFINED_FILENAME              },
257   { "dark_yamyam.waiting",                      "njam.wav"                      },
258   { "dark_yamyam.digging",                      UNDEFINED_FILENAME              },
259   { "penguin.moving",                           UNDEFINED_FILENAME              },
260   { "penguin.waiting",                          UNDEFINED_FILENAME              },
261   { "pig.moving",                               UNDEFINED_FILENAME              },
262   { "pig.waiting",                              UNDEFINED_FILENAME              },
263   { "pig.digging",                              UNDEFINED_FILENAME              },
264   { "dragon.moving",                            UNDEFINED_FILENAME              },
265   { "dragon.waiting",                           UNDEFINED_FILENAME              },
266   { "dragon.attacking",                         UNDEFINED_FILENAME              },
267
268   // sounds for Mirror Magic style elements and actions
269   { "[mm_mcduffin].hitting",                    "autsch.wav"                    },
270   { "[mm_mirror].hitting",                      "laser.wav"                     },
271   { "[mm_mirror_fixed].hitting",                "laser.wav"                     },
272   { "[mm_prism].hitting",                       "laser.wav"                     },
273   { "[mm_exit].hitting",                        "holz.wav"                      },
274   { "[mm_exit].opening",                        "kling.wav"                     },
275   { "mm_exit_open.hitting",                     UNDEFINED_FILENAME              },
276   { "[df_mirror].hitting",                      "laser.wav"                     },
277   { "[df_mirror_rotating].hitting",             "laser.wav"                     },
278   { "[df_refractor].hitting",                   "laser.wav"                     },
279   { "[df_receiver].hitting",                    "holz.wav"                      },
280   { "[df_receiver].opening",                    "kling.wav"                     },
281   { "[mm_wooden_wall].hitting",                 "holz.wav"                      },
282   { "[mm_wooden_block].hitting",                "holz.wav"                      },
283   { "[mm_wooden_block].pushing",                "bong.wav"                      },
284   { "[mm_wooden_lock].hitting",                 "holz.wav"                      },
285   { "[mm_wooden_grid_fixed].hitting",           "holz.wav"                      },
286   { "[mm_fuse].hitting",                        "holz.wav"                      },
287   { "[mm_ice_wall].hitting",                    "holz.wav"                      },
288   { "[mm_ice_wall].shrinking",                  "slurp.wav"                     },
289   { "[mm_amoeba_wall].hitting",                 "holz.wav"                      },
290   { "[mm_amoeba_wall].growing",                 "amoebe.wav"                    },
291   { "[mm_amoeba_wall].growing.mode_loop",       "false"                         },
292   { "[df_wooden_wall].hitting",                 "holz.wav"                      },
293   { "[df_wooden_grid_fixed].hitting",           "holz.wav"                      },
294   { "[df_wooden_grid_rotating].hitting",        "holz.wav"                      },
295   { "[mm_steel_wall].hitting",                  "hui.wav"                       },
296   { "[mm_steel_grid_fixed].hitting",            "hui.wav"                       },
297   { "[mm_steel_block].hitting",                 "hui.wav"                       },
298   { "[mm_steel_block].pushing",                 "bong.wav"                      },
299   { "[mm_steel_lock].hitting",                  "hui.wav"                       },
300   { "[df_steel_wall].hitting",                  "hui.wav"                       },
301   { "[df_steel_grid_fixed].hitting",            "hui.wav"                       },
302   { "[df_steel_grid_rotating].hitting",         "hui.wav"                       },
303
304   { "[mm_pacman].exploding",                    "quiek.wav"                     },
305   { "[mm_mcduffin].exploding",                  "roaaar.wav"                    },
306   { "[mm_bomb].exploding",                      "roaaar.wav"                    },
307   { "[mm_key].exploding",                       "kling.wav"                     },
308   { "[mm_steel_lock].exploding",                "whoosh.wav"                    },
309   { "[mm_wooden_lock].exploding",               "whoosh.wav"                    },
310
311
312   // ==========================================================================
313   // sound definitions not associated with game elements (menu screens etc.)
314   // ==========================================================================
315
316   // keyword to stop parser: "NO_MORE_ELEMENT_SOUNDS" <-- do not change!
317
318   // sounds for Boulder Dash style elements and actions
319   { "bd_diamond.falling.RANDOM_1",              UNDEFINED_FILENAME              },
320   { "bd_diamond.falling.RANDOM_2",              UNDEFINED_FILENAME              },
321   { "bd_diamond.falling.RANDOM_3",              UNDEFINED_FILENAME              },
322   { "bd_diamond.falling.RANDOM_4",              UNDEFINED_FILENAME              },
323   { "bd_diamond.falling.RANDOM_5",              UNDEFINED_FILENAME              },
324   { "bd_diamond.falling.RANDOM_6",              UNDEFINED_FILENAME              },
325   { "bd_diamond.falling.RANDOM_7",              UNDEFINED_FILENAME              },
326   { "bd_diamond.falling.RANDOM_8",              UNDEFINED_FILENAME              },
327   { "bd_diamond.impact.RANDOM_1",               UNDEFINED_FILENAME              },
328   { "bd_diamond.impact.RANDOM_2",               UNDEFINED_FILENAME              },
329   { "bd_diamond.impact.RANDOM_3",               UNDEFINED_FILENAME              },
330   { "bd_diamond.impact.RANDOM_4",               UNDEFINED_FILENAME              },
331   { "bd_diamond.impact.RANDOM_5",               UNDEFINED_FILENAME              },
332   { "bd_diamond.impact.RANDOM_6",               UNDEFINED_FILENAME              },
333   { "bd_diamond.impact.RANDOM_7",               UNDEFINED_FILENAME              },
334   { "bd_diamond.impact.RANDOM_8",               UNDEFINED_FILENAME              },
335   { "bd_flying_diamond.falling.RANDOM_1",       UNDEFINED_FILENAME              },
336   { "bd_flying_diamond.falling.RANDOM_2",       UNDEFINED_FILENAME              },
337   { "bd_flying_diamond.falling.RANDOM_3",       UNDEFINED_FILENAME              },
338   { "bd_flying_diamond.falling.RANDOM_4",       UNDEFINED_FILENAME              },
339   { "bd_flying_diamond.falling.RANDOM_5",       UNDEFINED_FILENAME              },
340   { "bd_flying_diamond.falling.RANDOM_6",       UNDEFINED_FILENAME              },
341   { "bd_flying_diamond.falling.RANDOM_7",       UNDEFINED_FILENAME              },
342   { "bd_flying_diamond.falling.RANDOM_8",       UNDEFINED_FILENAME              },
343   { "bd_flying_diamond.impact.RANDOM_1",        UNDEFINED_FILENAME              },
344   { "bd_flying_diamond.impact.RANDOM_2",        UNDEFINED_FILENAME              },
345   { "bd_flying_diamond.impact.RANDOM_3",        UNDEFINED_FILENAME              },
346   { "bd_flying_diamond.impact.RANDOM_4",        UNDEFINED_FILENAME              },
347   { "bd_flying_diamond.impact.RANDOM_5",        UNDEFINED_FILENAME              },
348   { "bd_flying_diamond.impact.RANDOM_6",        UNDEFINED_FILENAME              },
349   { "bd_flying_diamond.impact.RANDOM_7",        UNDEFINED_FILENAME              },
350   { "bd_flying_diamond.impact.RANDOM_8",        UNDEFINED_FILENAME              },
351
352   // sounds for other game actions
353   { "game.starting",                            UNDEFINED_FILENAME              },
354   { "game.leveltime_charging",                  "fuel.wav"                      },
355   { "game.health_charging",                     "warnton.wav"                   },
356   { "game.running_out_of_time",                 "gong.wav"                      },
357   { "game.running_out_of_time_10",              UNDEFINED_FILENAME              },
358   { "game.running_out_of_time_9",               UNDEFINED_FILENAME              },
359   { "game.running_out_of_time_8",               UNDEFINED_FILENAME              },
360   { "game.running_out_of_time_7",               UNDEFINED_FILENAME              },
361   { "game.running_out_of_time_6",               UNDEFINED_FILENAME              },
362   { "game.running_out_of_time_5",               UNDEFINED_FILENAME              },
363   { "game.running_out_of_time_4",               UNDEFINED_FILENAME              },
364   { "game.running_out_of_time_3",               UNDEFINED_FILENAME              },
365   { "game.running_out_of_time_2",               UNDEFINED_FILENAME              },
366   { "game.running_out_of_time_1",               UNDEFINED_FILENAME              },
367   { "game.running_out_of_time_0",               UNDEFINED_FILENAME              },
368   { "game.leveltime_bonus",                     "sirr.wav"                      },
369   { "game.health_bonus",                        "sirr.wav"                      },
370   { "game.timeout",                             UNDEFINED_FILENAME              },
371   { "game.losing",                              UNDEFINED_FILENAME              },
372   { "game.winning",                             UNDEFINED_FILENAME              },
373   { "game.sokoban_solving",                     "buing.wav"                     },
374
375   // sounds for other non-game actions
376   { "door.opening",                             "door.wav"                      },
377   { "door.closing",                             "door.wav"                      },
378   { "door_1.opening",                           UNDEFINED_FILENAME              },
379   { "door_1.closing",                           UNDEFINED_FILENAME              },
380   { "door_2.opening",                           UNDEFINED_FILENAME              },
381   { "door_2.closing",                           UNDEFINED_FILENAME              },
382
383   { "request.opening",                          UNDEFINED_FILENAME              },
384   { "request.closing",                          UNDEFINED_FILENAME              },
385
386   // sounds for menu actions
387   { "menu.item.activating",                     "empty.wav"                     },
388   { "menu.item.selecting",                      "base.wav"                      },
389
390   { "menu.button.pressing",                     UNDEFINED_FILENAME              },
391   { "menu.button.releasing",                    UNDEFINED_FILENAME              },
392
393   { "background.TITLE_INITIAL",                 UNDEFINED_FILENAME              },
394   { "background.TITLE",                         UNDEFINED_FILENAME              },
395   { "background.MAIN",                          UNDEFINED_FILENAME              },
396   { "background.NAMES",                         UNDEFINED_FILENAME              },
397   { "background.LEVELS",                        UNDEFINED_FILENAME              },
398   { "background.LEVELNR",                       UNDEFINED_FILENAME              },
399   { "background.SCORES",                        "halloffame.wav"                },
400   { "background.SCORES.mode_loop",              "false"                         },
401   { "background.EDITOR",                        UNDEFINED_FILENAME              },
402   { "background.INFO",                          UNDEFINED_FILENAME              },
403   { "background.INFO[ELEMENTS]",                UNDEFINED_FILENAME              },
404   { "background.INFO[CREDITS]",                 UNDEFINED_FILENAME              },
405   { "background.INFO[PROGRAM]",                 UNDEFINED_FILENAME              },
406   { "background.INFO[VERSION]",                 UNDEFINED_FILENAME              },
407   { "background.INFO[LEVELSET]",                UNDEFINED_FILENAME              },
408   { "background.SETUP",                         UNDEFINED_FILENAME              },
409
410   { "background.titlescreen_initial_1",         UNDEFINED_FILENAME              },
411   { "background.titlescreen_initial_2",         UNDEFINED_FILENAME              },
412   { "background.titlescreen_initial_3",         UNDEFINED_FILENAME              },
413   { "background.titlescreen_initial_4",         UNDEFINED_FILENAME              },
414   { "background.titlescreen_initial_5",         UNDEFINED_FILENAME              },
415   { "background.titlescreen_1",                 UNDEFINED_FILENAME              },
416   { "background.titlescreen_2",                 UNDEFINED_FILENAME              },
417   { "background.titlescreen_3",                 UNDEFINED_FILENAME              },
418   { "background.titlescreen_4",                 UNDEFINED_FILENAME              },
419   { "background.titlescreen_5",                 UNDEFINED_FILENAME              },
420   { "background.titlemessage_initial_1",        UNDEFINED_FILENAME              },
421   { "background.titlemessage_initial_2",        UNDEFINED_FILENAME              },
422   { "background.titlemessage_initial_3",        UNDEFINED_FILENAME              },
423   { "background.titlemessage_initial_4",        UNDEFINED_FILENAME              },
424   { "background.titlemessage_initial_5",        UNDEFINED_FILENAME              },
425   { "background.titlemessage_1",                UNDEFINED_FILENAME              },
426   { "background.titlemessage_2",                UNDEFINED_FILENAME              },
427   { "background.titlemessage_3",                UNDEFINED_FILENAME              },
428   { "background.titlemessage_4",                UNDEFINED_FILENAME              },
429   { "background.titlemessage_5",                UNDEFINED_FILENAME              },
430
431
432   // ==========================================================================
433   // non-sound definitions
434   // ==========================================================================
435
436   // the following directives are not associated with a sound, but
437   // probably make sense to be defined in "soundsinfo.conf", too
438
439   // keyword to start parser: "CONFIG_VARS_START" <-- do not change!
440
441   { "game.use_native_bd_sound_engine",          "false"                         },
442
443   { NULL,                                       NULL                            }
444 };