1 /* Emacs style mode select   -*- C++ -*-
2  *-----------------------------------------------------------------------------
3  *
4  *
5  *  PrBoom: a Doom port merged with LxDoom and LSDLDoom
6  *  based on BOOM, a modified and improved DOOM engine
7  *  Copyright (C) 1999 by
8  *  id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
9  *  Copyright (C) 1999-2000 by
10  *  Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze
11  *  Copyright 2005, 2006 by
12  *  Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko
13  *
14  *  This program is free software; you can redistribute it and/or
15  *  modify it under the terms of the GNU General Public License
16  *  as published by the Free Software Foundation; either version 2
17  *  of the License, or (at your option) any later version.
18  *
19  *  This program is distributed in the hope that it will be useful,
20  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  *  GNU General Public License for more details.
23  *
24  *  You should have received a copy of the GNU General Public License
25  *  along with this program; if not, write to the Free Software
26  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
27  *  02111-1307, USA.
28  *
29  * DESCRIPTION:
30  *      Created by the sound utility written by Dave Taylor.
31  *      Kept as a sample, DOOM2 sounds. Frozen.
32  *
33  *-----------------------------------------------------------------------------*/
34 
35 #ifndef __SOUNDS__
36 #define __SOUNDS__
37 
38 //
39 // SoundFX struct.
40 //
41 
42 struct sfxinfo_struct;
43 
44 typedef struct sfxinfo_struct sfxinfo_t;
45 
46 struct sfxinfo_struct {
47 
48   // up to 6-character name
49   const char *name; // CPhipps - const
50 
51   // Sfx singularity (only one at a time)
52   int singularity;
53 
54   // Sfx priority
55   int priority;
56 
57   // referenced sound if a link
58   sfxinfo_t *link;
59 
60   // pitch if a link
61   int pitch;
62 
63   // volume if a link
64   int volume;
65 
66   // sound data
67   void *data;
68 
69   // this is checked every second to see if sound
70   // can be thrown out (if 0, then decrement, if -1,
71   // then throw out, if > 0, then it is in use)
72   int usefulness;
73 
74   // lump number of sfx
75   int lumpnum;
76 };
77 
78 //
79 // MusicInfo struct.
80 //
81 
82 typedef struct {
83   // up to 6-character name
84   const char *name; // CPhipps - const
85 
86   // lump number of music
87   int lumpnum;
88 
89   /* music data - cphipps 4/11 made const void* */
90   const void *data;
91 
92   // music handle once registered
93   int handle;
94 } musicinfo_t;
95 
96 // the complete set of sound effects
97 extern sfxinfo_t    S_sfx[];
98 
99 // the complete set of music
100 extern musicinfo_t  S_music[];
101 
102 /* Identifiers for all music in game. */
103 
104 typedef enum
105 {
106 #ifdef HEXEN
107    mus_e1m1,
108    mus_e1m2,
109    mus_e1m3,
110    mus_e1m4,
111    mus_e1m5,
112    mus_e1m6,
113    mus_e1m7,
114    mus_e1m8,
115    mus_e1m9,
116    mus_e2m1,
117    mus_e2m2,
118    mus_e2m3,
119    mus_e2m4,
120    mus_e2m5,
121    mus_e2m6,
122    mus_e2m7,
123    mus_e2m8,
124    mus_e2m9,
125    mus_e3m1,
126    mus_e3m2,
127    mus_e3m3,
128    mus_e3m4,
129    mus_e3m5,
130    mus_e3m6,
131    mus_e3m7,
132    mus_e3m8,
133    mus_e3m9,
134    mus_e4m1,
135    mus_titl,
136    mus_intr,
137    mus_cptd,
138 #else
139    mus_None,
140    mus_e1m1,
141    mus_e1m2,
142    mus_e1m3,
143    mus_e1m4,
144    mus_e1m5,
145    mus_e1m6,
146    mus_e1m7,
147    mus_e1m8,
148    mus_e1m9,
149    mus_e2m1,
150    mus_e2m2,
151    mus_e2m3,
152    mus_e2m4,
153    mus_e2m5,
154    mus_e2m6,
155    mus_e2m7,
156    mus_e2m8,
157    mus_e2m9,
158    mus_e3m1,
159    mus_e3m2,
160    mus_e3m3,
161    mus_e3m4,
162    mus_e3m5,
163    mus_e3m6,
164    mus_e3m7,
165    mus_e3m8,
166    mus_e3m9,
167    mus_e4m1, // Ultimate Doom
168    mus_e4m2,
169    mus_e4m3,
170    mus_e4m4,
171    mus_e4m5,
172    mus_e4m6,
173    mus_e4m7,
174    mus_e4m8,
175    mus_e4m9,
176    mus_e5m1, // SIGIL
177    mus_e5m2,
178    mus_e5m3,
179    mus_e5m4,
180    mus_e5m5,
181    mus_e5m6,
182    mus_e5m7,
183    mus_e5m8,
184    mus_e5m9,
185    mus_inter,
186    mus_intro,
187    mus_bunny,
188    mus_victor,
189    mus_introa,
190    mus_runnin,
191    mus_stalks,
192    mus_countd,
193    mus_betwee,
194    mus_doom,
195    mus_the_da,
196    mus_shawn,
197    mus_ddtblu,
198    mus_in_cit,
199    mus_dead,
200    mus_stlks2,
201    mus_theda2,
202    mus_doom2,
203    mus_ddtbl2,
204    mus_runni2,
205    mus_dead2,
206    mus_stlks3,
207    mus_romero,
208    mus_shawn2,
209    mus_messag,
210    mus_count2,
211    mus_ddtbl3,
212    mus_ampie,
213    mus_theda3,
214    mus_adrian,
215    mus_messg2,
216    mus_romer2,
217    mus_tense,
218    mus_shawn3,
219    mus_openin,
220    mus_evil,
221    mus_ultima,
222    mus_read_m,
223    mus_dm2ttl,
224    mus_dm2int,
225 #endif
226    NUMMUSIC
227 } musicenum_t;
228 
229 /* Identifiers for all sfx in game. */
230 
231 typedef enum
232 {
233 #ifdef HEXEN
234    SFX_NONE,
235    SFX_PLAYER_FIGHTER_NORMAL_DEATH,		// class specific death screams
236    SFX_PLAYER_FIGHTER_CRAZY_DEATH,
237    SFX_PLAYER_FIGHTER_EXTREME1_DEATH,
238    SFX_PLAYER_FIGHTER_EXTREME2_DEATH,
239    SFX_PLAYER_FIGHTER_EXTREME3_DEATH,
240    SFX_PLAYER_FIGHTER_BURN_DEATH,
241    SFX_PLAYER_CLERIC_NORMAL_DEATH,
242    SFX_PLAYER_CLERIC_CRAZY_DEATH,
243    SFX_PLAYER_CLERIC_EXTREME1_DEATH,
244    SFX_PLAYER_CLERIC_EXTREME2_DEATH,
245    SFX_PLAYER_CLERIC_EXTREME3_DEATH,
246    SFX_PLAYER_CLERIC_BURN_DEATH,
247    SFX_PLAYER_MAGE_NORMAL_DEATH,
248    SFX_PLAYER_MAGE_CRAZY_DEATH,
249    SFX_PLAYER_MAGE_EXTREME1_DEATH,
250    SFX_PLAYER_MAGE_EXTREME2_DEATH,
251    SFX_PLAYER_MAGE_EXTREME3_DEATH,
252    SFX_PLAYER_MAGE_BURN_DEATH,
253    SFX_PLAYER_FIGHTER_PAIN,
254    SFX_PLAYER_CLERIC_PAIN,
255    SFX_PLAYER_MAGE_PAIN,
256    SFX_PLAYER_FIGHTER_GRUNT,
257    SFX_PLAYER_CLERIC_GRUNT,
258    SFX_PLAYER_MAGE_GRUNT,
259    SFX_PLAYER_LAND,
260    SFX_PLAYER_POISONCOUGH,
261    SFX_PLAYER_FIGHTER_FALLING_SCREAM,	// class specific falling screams
262    SFX_PLAYER_CLERIC_FALLING_SCREAM,
263    SFX_PLAYER_MAGE_FALLING_SCREAM,
264    SFX_PLAYER_FALLING_SPLAT,
265    SFX_PLAYER_FIGHTER_FAILED_USE,
266    SFX_PLAYER_CLERIC_FAILED_USE,
267    SFX_PLAYER_MAGE_FAILED_USE,
268    SFX_PLATFORM_START,
269    SFX_PLATFORM_STARTMETAL,
270    SFX_PLATFORM_STOP,
271    SFX_STONE_MOVE,
272    SFX_METAL_MOVE,
273    SFX_DOOR_OPEN,
274    SFX_DOOR_LOCKED,
275    SFX_DOOR_METAL_OPEN,
276    SFX_DOOR_METAL_CLOSE,
277    SFX_DOOR_LIGHT_CLOSE,
278    SFX_DOOR_HEAVY_CLOSE,
279    SFX_DOOR_CREAK,
280    SFX_PICKUP_WEAPON,
281    SFX_PICKUP_ARTIFACT,
282    SFX_PICKUP_KEY,
283    SFX_PICKUP_ITEM,
284    SFX_PICKUP_PIECE,
285    SFX_WEAPON_BUILD,
286    SFX_ARTIFACT_USE,
287    SFX_ARTIFACT_BLAST,
288    SFX_TELEPORT,
289    SFX_THUNDER_CRASH,
290    SFX_FIGHTER_PUNCH_MISS,
291    SFX_FIGHTER_PUNCH_HITTHING,
292    SFX_FIGHTER_PUNCH_HITWALL,
293    SFX_FIGHTER_GRUNT,
294    SFX_FIGHTER_AXE_HITTHING,
295    SFX_FIGHTER_HAMMER_MISS,
296    SFX_FIGHTER_HAMMER_HITTHING,
297    SFX_FIGHTER_HAMMER_HITWALL,
298    SFX_FIGHTER_HAMMER_CONTINUOUS,
299    SFX_FIGHTER_HAMMER_EXPLODE,
300    SFX_FIGHTER_SWORD_FIRE,
301    SFX_FIGHTER_SWORD_EXPLODE,
302    SFX_CLERIC_CSTAFF_FIRE,
303    SFX_CLERIC_CSTAFF_EXPLODE,
304    SFX_CLERIC_CSTAFF_HITTHING,
305    SFX_CLERIC_FLAME_FIRE,
306    SFX_CLERIC_FLAME_EXPLODE,
307    SFX_CLERIC_FLAME_CIRCLE,
308    SFX_MAGE_WAND_FIRE,
309    SFX_MAGE_LIGHTNING_FIRE,
310    SFX_MAGE_LIGHTNING_ZAP,
311    SFX_MAGE_LIGHTNING_CONTINUOUS,
312    SFX_MAGE_LIGHTNING_READY,
313    SFX_MAGE_SHARDS_FIRE,
314    SFX_MAGE_SHARDS_EXPLODE,
315    SFX_MAGE_STAFF_FIRE,
316    SFX_MAGE_STAFF_EXPLODE,
317    SFX_SWITCH1,
318    SFX_SWITCH2,
319    SFX_SERPENT_SIGHT,
320    SFX_SERPENT_ACTIVE,
321    SFX_SERPENT_PAIN,
322    SFX_SERPENT_ATTACK,
323    SFX_SERPENT_MELEEHIT,
324    SFX_SERPENT_DEATH,
325    SFX_SERPENT_BIRTH,
326    SFX_SERPENTFX_CONTINUOUS,
327    SFX_SERPENTFX_HIT,
328    SFX_POTTERY_EXPLODE,
329    SFX_DRIP,
330    SFX_CENTAUR_SIGHT,
331    SFX_CENTAUR_ACTIVE,
332    SFX_CENTAUR_PAIN,
333    SFX_CENTAUR_ATTACK,
334    SFX_CENTAUR_DEATH,
335    SFX_CENTAURLEADER_ATTACK,
336    SFX_CENTAUR_MISSILE_EXPLODE,
337    SFX_WIND,
338    SFX_BISHOP_SIGHT,
339    SFX_BISHOP_ACTIVE,
340    SFX_BISHOP_PAIN,
341    SFX_BISHOP_ATTACK,
342    SFX_BISHOP_DEATH,
343    SFX_BISHOP_MISSILE_EXPLODE,
344    SFX_BISHOP_BLUR,
345    SFX_DEMON_SIGHT,
346    SFX_DEMON_ACTIVE,
347    SFX_DEMON_PAIN,
348    SFX_DEMON_ATTACK,
349    SFX_DEMON_MISSILE_FIRE,
350    SFX_DEMON_MISSILE_EXPLODE,
351    SFX_DEMON_DEATH,
352    SFX_WRAITH_SIGHT,
353    SFX_WRAITH_ACTIVE,
354    SFX_WRAITH_PAIN,
355    SFX_WRAITH_ATTACK,
356    SFX_WRAITH_MISSILE_FIRE,
357    SFX_WRAITH_MISSILE_EXPLODE,
358    SFX_WRAITH_DEATH,
359    SFX_PIG_ACTIVE1,
360    SFX_PIG_ACTIVE2,
361    SFX_PIG_PAIN,
362    SFX_PIG_ATTACK,
363    SFX_PIG_DEATH,
364    SFX_MAULATOR_SIGHT,
365    SFX_MAULATOR_ACTIVE,
366    SFX_MAULATOR_PAIN,
367    SFX_MAULATOR_HAMMER_SWING,
368    SFX_MAULATOR_HAMMER_HIT,
369    SFX_MAULATOR_MISSILE_HIT,
370    SFX_MAULATOR_DEATH,
371    SFX_FREEZE_DEATH,
372    SFX_FREEZE_SHATTER,
373    SFX_ETTIN_SIGHT,
374    SFX_ETTIN_ACTIVE,
375    SFX_ETTIN_PAIN,
376    SFX_ETTIN_ATTACK,
377    SFX_ETTIN_DEATH,
378    SFX_FIRED_SPAWN,
379    SFX_FIRED_ACTIVE,
380    SFX_FIRED_PAIN,
381    SFX_FIRED_ATTACK,
382    SFX_FIRED_MISSILE_HIT,
383    SFX_FIRED_DEATH,
384    SFX_ICEGUY_SIGHT,
385    SFX_ICEGUY_ACTIVE,
386    SFX_ICEGUY_ATTACK,
387    SFX_ICEGUY_FX_EXPLODE,
388    SFX_SORCERER_SIGHT,
389    SFX_SORCERER_ACTIVE,
390    SFX_SORCERER_PAIN,
391    SFX_SORCERER_SPELLCAST,
392    SFX_SORCERER_BALLWOOSH,
393    SFX_SORCERER_DEATHSCREAM,
394    SFX_SORCERER_BISHOPSPAWN,
395    SFX_SORCERER_BALLPOP,
396    SFX_SORCERER_BALLBOUNCE,
397    SFX_SORCERER_BALLEXPLODE,
398    SFX_SORCERER_BIGBALLEXPLODE,
399    SFX_SORCERER_HEADSCREAM,
400    SFX_DRAGON_SIGHT,
401    SFX_DRAGON_ACTIVE,
402    SFX_DRAGON_WINGFLAP,
403    SFX_DRAGON_ATTACK,
404    SFX_DRAGON_PAIN,
405    SFX_DRAGON_DEATH,
406    SFX_DRAGON_FIREBALL_EXPLODE,
407    SFX_KORAX_SIGHT,
408    SFX_KORAX_ACTIVE,
409    SFX_KORAX_PAIN,
410    SFX_KORAX_ATTACK,
411    SFX_KORAX_COMMAND,
412    SFX_KORAX_DEATH,
413    SFX_KORAX_STEP,
414    SFX_THRUSTSPIKE_RAISE,
415    SFX_THRUSTSPIKE_LOWER,
416    SFX_STAINEDGLASS_SHATTER,
417    SFX_FLECHETTE_BOUNCE,
418    SFX_FLECHETTE_EXPLODE,
419    SFX_LAVA_MOVE,
420    SFX_WATER_MOVE,
421    SFX_ICE_STARTMOVE,
422    SFX_EARTH_STARTMOVE,
423    SFX_WATER_SPLASH,
424    SFX_LAVA_SIZZLE,
425    SFX_SLUDGE_GLOOP,
426    SFX_CHOLY_FIRE,
427    SFX_SPIRIT_ACTIVE,
428    SFX_SPIRIT_ATTACK,
429    SFX_SPIRIT_DIE,
430    SFX_VALVE_TURN,
431    SFX_ROPE_PULL,
432    SFX_FLY_BUZZ,
433    SFX_IGNITE,
434    SFX_PUZZLE_SUCCESS,
435    SFX_PUZZLE_FAIL_FIGHTER,
436    SFX_PUZZLE_FAIL_CLERIC,
437    SFX_PUZZLE_FAIL_MAGE,
438    SFX_EARTHQUAKE,
439    SFX_BELLRING,
440    SFX_TREE_BREAK,
441    SFX_TREE_EXPLODE,
442    SFX_SUITOFARMOR_BREAK,
443    SFX_POISONSHROOM_PAIN,
444    SFX_POISONSHROOM_DEATH,
445    SFX_AMBIENT1,
446    SFX_AMBIENT2,
447    SFX_AMBIENT3,
448    SFX_AMBIENT4,
449    SFX_AMBIENT5,
450    SFX_AMBIENT6,
451    SFX_AMBIENT7,
452    SFX_AMBIENT8,
453    SFX_AMBIENT9,
454    SFX_AMBIENT10,
455    SFX_AMBIENT11,
456    SFX_AMBIENT12,
457    SFX_AMBIENT13,
458    SFX_AMBIENT14,
459    SFX_AMBIENT15,
460    SFX_STARTUP_TICK,
461    SFX_SWITCH_OTHERLEVEL,
462    SFX_RESPAWN,
463    SFX_KORAX_VOICE_1,
464    SFX_KORAX_VOICE_2,
465    SFX_KORAX_VOICE_3,
466    SFX_KORAX_VOICE_4,
467    SFX_KORAX_VOICE_5,
468    SFX_KORAX_VOICE_6,
469    SFX_KORAX_VOICE_7,
470    SFX_KORAX_VOICE_8,
471    SFX_KORAX_VOICE_9,
472    SFX_BAT_SCREAM,
473    SFX_CHAT,
474    SFX_MENU_MOVE,
475    SFX_CLOCK_TICK,
476    SFX_FIREBALL,
477    SFX_PUPPYBEAT,
478    SFX_MYSTICINCANT,
479 #else
480    sfx_None,
481    sfx_pistol,
482    sfx_shotgn,
483    sfx_sgcock,
484    sfx_dshtgn,
485    sfx_dbopn,
486    sfx_dbcls,
487    sfx_dbload,
488    sfx_plasma,
489    sfx_bfg,
490    sfx_sawup,
491    sfx_sawidl,
492    sfx_sawful,
493    sfx_sawhit,
494    sfx_rlaunc,
495    sfx_rxplod,
496    sfx_firsht,
497    sfx_firxpl,
498    sfx_pstart,
499    sfx_pstop,
500    sfx_doropn,
501    sfx_dorcls,
502    sfx_stnmov,
503    sfx_swtchn,
504    sfx_swtchx,
505    sfx_plpain,
506    sfx_dmpain,
507    sfx_popain,
508    sfx_vipain,
509    sfx_mnpain,
510    sfx_pepain,
511    sfx_slop,
512    sfx_itemup,
513    sfx_wpnup,
514    sfx_oof,
515    sfx_telept,
516    sfx_posit1,
517    sfx_posit2,
518    sfx_posit3,
519    sfx_bgsit1,
520    sfx_bgsit2,
521    sfx_sgtsit,
522    sfx_cacsit,
523    sfx_brssit,
524    sfx_cybsit,
525    sfx_spisit,
526    sfx_bspsit,
527    sfx_kntsit,
528    sfx_vilsit,
529    sfx_mansit,
530    sfx_pesit,
531    sfx_sklatk,
532    sfx_sgtatk,
533    sfx_skepch,
534    sfx_vilatk,
535    sfx_claw,
536    sfx_skeswg,
537    sfx_pldeth,
538    sfx_pdiehi,
539    sfx_podth1,
540    sfx_podth2,
541    sfx_podth3,
542    sfx_bgdth1,
543    sfx_bgdth2,
544    sfx_sgtdth,
545    sfx_cacdth,
546    sfx_skldth,
547    sfx_brsdth,
548    sfx_cybdth,
549    sfx_spidth,
550    sfx_bspdth,
551    sfx_vildth,
552    sfx_kntdth,
553    sfx_pedth,
554    sfx_skedth,
555    sfx_posact,
556    sfx_bgact,
557    sfx_dmact,
558    sfx_bspact,
559    sfx_bspwlk,
560    sfx_vilact,
561    sfx_noway,
562    sfx_barexp,
563    sfx_punch,
564    sfx_hoof,
565    sfx_metal,
566    sfx_chgun,
567    sfx_tink,
568    sfx_bdopn,
569    sfx_bdcls,
570    sfx_itmbk,
571    sfx_flame,
572    sfx_flamst,
573    sfx_getpow,
574    sfx_bospit,
575    sfx_boscub,
576    sfx_bossit,
577    sfx_bospn,
578    sfx_bosdth,
579    sfx_manatk,
580    sfx_mandth,
581    sfx_sssit,
582    sfx_ssdth,
583    sfx_keenpn,
584    sfx_keendt,
585    sfx_skeact,
586    sfx_skesit,
587    sfx_skeatk,
588    sfx_radio,
589 
590    /* killough 11/98: dog sounds */
591    sfx_dgsit,
592    sfx_dgatk,
593    sfx_dgact,
594    sfx_dgdth,
595    sfx_dgpain,
596 
597    //e6y
598    sfx_secret,
599    sfx_gibdth,
600 #endif
601    NUMSFX
602 } sfxenum_t;
603 
604 #endif
605