Subversion Repositories Kolibri OS

Rev

Rev 9097 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. //
  2. //      ID Engine
  3. //      ID_SD.h - Sound Manager Header
  4. //      Version for Wolfenstein
  5. //      By Jason Blochowiak
  6. //
  7.  
  8. #ifndef __ID_SD__
  9. #define __ID_SD__
  10.  
  11. #define alOut(n,b) YM3812Write(0, n, b)
  12.  
  13. #define TickBase        70      // 70Hz per tick - used as a base for timer 0
  14.  
  15. typedef enum
  16. {
  17.     sdm_Off,
  18.     sdm_PC,sdm_AdLib,
  19. } SDMode;
  20.  
  21. typedef enum
  22. {
  23.     smm_Off,smm_AdLib
  24. } SMMode;
  25.  
  26. typedef enum
  27. {
  28.     sds_Off,sds_PC,sds_SoundBlaster
  29. } SDSMode;
  30.  
  31. typedef struct
  32. {
  33.     longword        length;
  34.     word            priority;
  35. } SoundCommon;
  36.  
  37. #define ORIG_SOUNDCOMMON_SIZE 6
  38.  
  39. //      PC Sound stuff
  40. #define pcTimer         0x42
  41. #define pcTAccess       0x43
  42. #define pcSpeaker       0x61
  43.  
  44. #define pcSpkBits       3
  45.  
  46. typedef struct
  47. {
  48.     SoundCommon     common;
  49.     byte            data[1];
  50. } PCSound;
  51.  
  52. //      Register addresses
  53. // Operator stuff
  54. #define alChar          0x20
  55. #define alScale         0x40
  56. #define alAttack        0x60
  57. #define alSus           0x80
  58. #define alWave          0xe0
  59. // Channel stuff
  60. #define alFreqL         0xa0
  61. #define alFreqH         0xb0
  62. #define alFeedCon       0xc0
  63. // Global stuff
  64. #define alEffects       0xbd
  65.  
  66. typedef struct
  67. {
  68.     byte    mChar,cChar,
  69.             mScale,cScale,
  70.             mAttack,cAttack,
  71.             mSus,cSus,
  72.             mWave,cWave,
  73.             nConn,
  74.  
  75.             // These are only for Muse - these bytes are really unused
  76.             voice,
  77.             mode;
  78.     byte    unused[3];
  79. } Instrument;
  80.  
  81. #define ORIG_INSTRUMENT_SIZE 16
  82.  
  83. typedef struct
  84. {
  85.     SoundCommon     common;
  86.     Instrument      inst;
  87.     byte            block;
  88.     byte            data[1];
  89. } AdLibSound;
  90.  
  91. #define ORIG_ADLIBSOUND_SIZE (ORIG_SOUNDCOMMON_SIZE + ORIG_INSTRUMENT_SIZE + 2)
  92.  
  93. //
  94. //      Sequencing stuff
  95. //
  96. #define sqMaxTracks     10
  97.  
  98. typedef struct
  99. {
  100.     word    length;
  101.     word    values[1];
  102. } MusicGroup;
  103.  
  104. typedef struct
  105. {
  106.     int valid;
  107.     fixed globalsoundx, globalsoundy;
  108. } globalsoundpos;
  109.  
  110. extern globalsoundpos channelSoundPos[];
  111.  
  112. // Global variables
  113. extern  boolean         AdLibPresent,
  114.                         SoundBlasterPresent,
  115.                         SoundPositioned;
  116. extern  SDMode          SoundMode;
  117. extern  SDSMode         DigiMode;
  118. extern  SMMode          MusicMode;
  119. extern  int             DigiMap[];
  120. extern  int             DigiChannel[];
  121.  
  122. #define GetTimeCount()  ((SDL_GetTicks()*7)/100)
  123.  
  124. inline void Delay(int wolfticks)
  125. {
  126.     if(wolfticks>0) SDL_Delay(wolfticks * 100/ 7);
  127. }
  128.  
  129. // Function prototypes
  130. extern  void    SD_Startup(void),
  131.                 SD_Shutdown(void);
  132.  
  133. extern  int     SD_GetChannelForDigi(int which);
  134. extern  void    SD_PositionSound(int leftvol,int rightvol);
  135. extern  boolean SD_PlaySound(soundnames sound);
  136. extern  void    SD_SetPosition(int channel, int leftvol,int rightvol);
  137. extern  void    SD_StopSound(void),
  138.                 SD_WaitSoundDone(void);
  139.  
  140. extern  void    SD_StartMusic(int chunk);
  141. extern  void    SD_ContinueMusic(int chunk, int startoffs);
  142. extern  void    SD_MusicOn(void),
  143.                 SD_FadeOutMusic(void);
  144. extern  int     SD_MusicOff(void);
  145.  
  146. extern  boolean SD_MusicPlaying(void);
  147. extern  boolean SD_SetSoundMode(SDMode mode);
  148. extern  boolean SD_SetMusicMode(SMMode mode);
  149. extern  word    SD_SoundPlaying(void);
  150.  
  151. extern  void    SD_SetDigiDevice(SDSMode);
  152. extern  void    SD_PrepareSound(int which);
  153. extern  int     SD_PlayDigitized(word which,int leftpos,int rightpos);
  154. extern  void    SD_StopDigitized(void);
  155.  
  156. #endif
  157.