]> icculus.org git repositories - btb/d2x.git/blob - main/digi.h
move old per-file change logs into new file ChangeLog-old
[btb/d2x.git] / main / digi.h
1 /* $Id: digi.h,v 1.4 2004-08-28 23:17:45 schaffner Exp $ */
2 /*
3 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
4 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
5 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
6 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
7 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
8 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
9 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
10 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
11 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
12 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
13 */
14
15 /*
16  *
17  * Include file for sound hardware.
18  *
19  */
20
21
22
23 #ifndef _DIGI_H
24 #define _DIGI_H
25
26 #include "pstypes.h"
27 #include "vecmat.h"
28
29 /*
30 #ifdef __DJGPP__
31 #define ALLEGRO
32 #endif
33 */
34
35 #ifdef ALLEGRO
36 #include "allg_snd.h"
37 typedef SAMPLE digi_sound;
38 #else
39 typedef struct digi_sound       {
40         int bits;
41         int freq;
42         int length;
43         ubyte * data;
44 } digi_sound;
45 #endif
46
47 #define SAMPLE_RATE_11K         11025
48 #define SAMPLE_RATE_22K         22050
49
50
51
52 #ifdef __DJGPP__
53 extern int digi_driver_board;
54 extern int digi_driver_port;
55 extern int digi_driver_irq;
56 extern int digi_driver_dma;
57 extern int digi_midi_type;
58 extern int digi_midi_port;
59 #endif
60
61 extern int digi_sample_rate;
62
63 extern int digi_get_settings();
64 extern int digi_init();
65 extern void digi_reset();
66 extern void digi_close();
67
68 int digi_xlat_sound(int sound);
69 // Volume is max at F1_0.
70 extern void digi_play_sample( int sndnum, fix max_volume );
71 extern void digi_play_sample_once( int sndnum, fix max_volume );
72 extern int digi_link_sound_to_object( int soundnum, short objnum, int forever, fix max_volume );
73 extern int digi_link_sound_to_pos( int soundnum, short segnum, short sidenum, vms_vector * pos, int forever, fix max_volume );
74 // Same as above, but you pass the max distance sound can be heard.  The old way uses f1_0*256 for max_distance.
75 extern int digi_link_sound_to_object2( int soundnum, short objnum, int forever, fix max_volume, fix  max_distance );
76 extern int digi_link_sound_to_pos2( int soundnum, short segnum, short sidenum, vms_vector * pos, int forever, fix max_volume, fix max_distance );
77
78 extern int digi_link_sound_to_object3( int org_soundnum, short objnum, int forever, fix max_volume, fix  max_distance, int loop_start, int loop_end );
79
80 extern void digi_play_midi_song( char * filename, char * melodic_bank, char * drum_bank, int loop );
81
82 extern void digi_play_sample_3d( int soundno, int angle, int volume, int no_dups ); // Volume from 0-0x7fff
83
84 extern void digi_init_sounds();
85 extern void digi_sync_sounds();
86 extern void digi_kill_sound_linked_to_segment( int segnum, int sidenum, int soundnum );
87 extern void digi_kill_sound_linked_to_object( int objnum );
88
89 extern void digi_set_midi_volume( int mvolume );
90 extern void digi_set_digi_volume( int dvolume );
91 extern void digi_set_volume( int dvolume, int mvolume );
92
93 extern int digi_is_sound_playing(int soundno);
94
95 extern void digi_pause_all();
96 extern void digi_resume_all();
97 extern void digi_stop_all();
98
99 extern void digi_set_max_channels(int n);
100 extern int digi_get_max_channels();
101
102 extern int digi_lomem;
103
104 extern void digi_pause_digi_sounds();
105 extern void digi_resume_digi_sounds();
106
107 int digi_start_sound(int soundnum, fix volume, fix pan, int unknown1, int unknown2, int unknown3, int unknown4);
108 void digi_stop_sound(int channel);
109 void digi_start_sound_queued( short soundnum, fix volume );
110 void digi_play_sample_looping( int soundno, fix max_volume,int loop_start, int loop_end );
111 void digi_stop_looping_sound(void);
112 void digi_change_looping_volume(fix volume);
113
114 #endif