Difference for arch/linux/alsadigi.c from version 1.1 to 1.2


version 1.1 version 1.2
Line 18
 
Line 18
 #include "newdemo.h"  #include "newdemo.h"
 #include "kconfig.h"  #include "kconfig.h"
   
   #include "altsound.h"
   
 //edited 05/17/99 Matt Mueller - added ifndef NO_ASM  //edited 05/17/99 Matt Mueller - added ifndef NO_ASM
 //added on 980905 by adb to add inline fixmul for mixer on i386  //added on 980905 by adb to add inline fixmul for mixer on i386
 #ifndef NO_ASM  #ifndef NO_ASM
Line 322
 
Line 324
  pthread_cancel(thread_id);   pthread_cancel(thread_id);
 }  }
   
 /* Find the sound which actually equates to a sound number */  
 int digi_xlat_sound(int soundno)  
 {  
  if ( soundno < 0 ) return -1;  
   
  if ( digi_lomem ) {  
  soundno = AltSounds[soundno];  
  if ( soundno == 255 ) return -1;  
  }  
  return Sounds[soundno];  
 }  
   
 static int get_free_slot()  static int get_free_slot()
 {  {
  int i;   int i;
Line 377
 
Line 367
  if (slot<0) return -1;   if (slot<0) return -1;
   
  SoundSlots[slot].soundno = soundnum;   SoundSlots[slot].soundno = soundnum;
  SoundSlots[slot].samples = GameSounds[soundnum].data;   SoundSlots[slot].samples = Sounddat(soundnum)->data;
  SoundSlots[slot].length = GameSounds[soundnum].length;   SoundSlots[slot].length = Sounddat(soundnum)->length;
  SoundSlots[slot].volume = fixmul(digi_volume, volume);   SoundSlots[slot].volume = fixmul(digi_volume, volume);
  SoundSlots[slot].pan = pan;   SoundSlots[slot].pan = pan;
  SoundSlots[slot].position = 0;   SoundSlots[slot].position = 0;
Line 419
 
Line 409
   
   
  SoundSlots[slot].soundno = SoundObjects[obj].soundnum;   SoundSlots[slot].soundno = SoundObjects[obj].soundnum;
  SoundSlots[slot].samples = GameSounds[SoundObjects[obj].soundnum].data;   SoundSlots[slot].samples = Sounddat(SoundObjects[obj].soundnum)->data;
  SoundSlots[slot].length = GameSounds[SoundObjects[obj].soundnum].length;   SoundSlots[slot].length = Sounddat(SoundObjects[obj].soundnum)->length;
  SoundSlots[slot].volume = fixmul(digi_volume, SoundObjects[obj].volume);   SoundSlots[slot].volume = fixmul(digi_volume, SoundObjects[obj].volume);
  SoundSlots[slot].pan = SoundObjects[obj].pan;   SoundSlots[slot].pan = SoundObjects[obj].pan;
  SoundSlots[slot].position = 0;   SoundSlots[slot].position = 0;
Line 448
 
Line 438
  if ( Newdemo_state == ND_STATE_RECORDING )   if ( Newdemo_state == ND_STATE_RECORDING )
  newdemo_record_sound( soundno );   newdemo_record_sound( soundno );
 #endif  #endif
  soundno = digi_xlat_sound(soundno);  
   
  if (!digi_initialised) return;   if (!digi_initialised) return;
   
  if (soundno < 0 ) return;          if (digi_xlat_sound(soundno) < 0 ) return;
   
  digi_start_sound(soundno, max_volume, F0_5);   digi_start_sound(soundno, max_volume, F0_5);
 }  }
Line 467
 
Line 455
  if ( Newdemo_state == ND_STATE_RECORDING )   if ( Newdemo_state == ND_STATE_RECORDING )
  newdemo_record_sound( soundno );   newdemo_record_sound( soundno );
 #endif  #endif
  soundno = digi_xlat_sound(soundno);  
   
  if (!digi_initialised) return;   if (!digi_initialised) return;
   
  if (soundno < 0 ) return;          if (digi_xlat_sound(soundno) < 0 ) return;
   
  LOCK();   LOCK();
         for (i=0; i < MAX_SOUND_SLOTS; i++)          for (i=0; i < MAX_SOUND_SLOTS; i++)
Line 479
 
Line 466
             SoundSlots[i].playing = 0;              SoundSlots[i].playing = 0;
  UNLOCK();   UNLOCK();
  digi_start_sound(soundno, max_volume, F0_5);   digi_start_sound(soundno, max_volume, F0_5);
   
 }  }
   
 void digi_play_sample_3d( int soundno, int angle, int volume, int no_dups ) // Volume from 0-0x7fff  void digi_play_sample_3d( int soundno, int angle, int volume, int no_dups ) // Volume from 0-0x7fff
Line 494
 
Line 480
  newdemo_record_sound_3d( soundno, angle, volume );   newdemo_record_sound_3d( soundno, angle, volume );
  }   }
 #endif  #endif
  soundno = digi_xlat_sound(soundno);  
   
  if (!digi_initialised) return;   if (!digi_initialised) return;
  if (soundno < 0 ) return;          if (digi_xlat_sound(soundno) < 0 ) return;
   
  if (volume < MIN_VOLUME ) return;   if (volume < MIN_VOLUME ) return;
  digi_start_sound(soundno, volume, angle);   digi_start_sound(soundno, volume, angle);
Line 539
 
Line 524
  }      }  
 }  }
   
 int digi_link_sound_to_object2( int org_soundnum, short objnum, int forever, fix max_volume, fix  max_distance )  int digi_link_sound_to_object2( int soundnum, short objnum, int forever, fix max_volume, fix  max_distance )
 {  {
  int i,volume,pan;   int i,volume,pan;
  object * objp;   object * objp;
  int soundnum;  
   
  soundnum = digi_xlat_sound(org_soundnum);  
   
  if ( max_volume < 0 ) return -1;   if ( max_volume < 0 ) return -1;
 // if ( max_volume > F1_0 ) max_volume = F1_0;  // if ( max_volume > F1_0 ) max_volume = F1_0;
   
  if (!digi_initialised) return -1;   if (!digi_initialised) return -1;
  if (soundnum < 0 ) return -1;          if (digi_xlat_sound(soundnum) < 0 ) return -1;
  if (GameSounds[soundnum].data==NULL) {          if (Sounddat(soundnum)->data==NULL) {
  Int3();   Int3();
  return -1;   return -1;
  }   }
Line 562
 
Line 544
  if ( !forever ) {   if ( !forever ) {
  // Hack to keep sounds from building up...   // Hack to keep sounds from building up...
  digi_get_sound_loc( &Viewer->orient, &Viewer->pos, Viewer->segnum, &Objects[objnum].pos, Objects[objnum].segnum, max_volume,&volume, &pan, max_distance );   digi_get_sound_loc( &Viewer->orient, &Viewer->pos, Viewer->segnum, &Objects[objnum].pos, Objects[objnum].segnum, max_volume,&volume, &pan, max_distance );
  digi_play_sample_3d( org_soundnum, pan, volume, 0 );                  digi_play_sample_3d( soundnum, pan, volume, 0 );
  return -1;   return -1;
  }   }
   
Line 601
 
Line 583
 int digi_link_sound_to_object( int soundnum, short objnum, int forever, fix max_volume )  int digi_link_sound_to_object( int soundnum, short objnum, int forever, fix max_volume )
 { return digi_link_sound_to_object2( soundnum, objnum, forever, max_volume, 256*F1_0); }  { return digi_link_sound_to_object2( soundnum, objnum, forever, max_volume, 256*F1_0); }
   
 int digi_link_sound_to_pos2( int org_soundnum, short segnum, short sidenum, vms_vector * pos, int forever, fix max_volume, fix max_distance )  int digi_link_sound_to_pos2( int soundnum, short segnum, short sidenum, vms_vector * pos, int forever, fix max_volume, fix max_distance )
 {  {
  int i, volume, pan;   int i, volume, pan;
  int soundnum;   int soundnum;
   
  soundnum = digi_xlat_sound(org_soundnum);  
   
  if ( max_volume < 0 ) return -1;   if ( max_volume < 0 ) return -1;
 // if ( max_volume > F1_0 ) max_volume = F1_0;  // if ( max_volume > F1_0 ) max_volume = F1_0;
   
  if (!digi_initialised) return -1;   if (!digi_initialised) return -1;
  if (soundnum < 0 ) return -1;          if (digi_xlat_sound(soundnum) < 0 ) return -1;
  if (GameSounds[soundnum].data==NULL) {          if (Sounddat(soundnum)->data==NULL) {
  Int3();   Int3();
  return -1;   return -1;
  }   }
Line 624
 
Line 604
  if ( !forever ) {   if ( !forever ) {
  // Hack to keep sounds from building up...   // Hack to keep sounds from building up...
  digi_get_sound_loc( &Viewer->orient, &Viewer->pos, Viewer->segnum, pos, segnum, max_volume, &volume, &pan, max_distance );   digi_get_sound_loc( &Viewer->orient, &Viewer->pos, Viewer->segnum, pos, segnum, max_volume, &volume, &pan, max_distance );
  digi_play_sample_3d( org_soundnum, pan, volume, 0 );                  digi_play_sample_3d( soundnum, pan, volume, 0 );
  return -1;   return -1;
  }   }
   
Line 670
 
Line 650
 {  {
  int i,killed;   int i,killed;
   
  soundnum = digi_xlat_sound(soundnum);  
   
  if (!digi_initialised) return;   if (!digi_initialised) return;
   
  killed = 0;   killed = 0;
Line 851
 
Line 829
 {  {
  int i;   int i;
   
  soundno = digi_xlat_sound(soundno);  
   
  LOCK();   LOCK();
  for (i = 0; i < MAX_SOUND_SLOTS; i++)   for (i = 0; i < MAX_SOUND_SLOTS; i++)
    //changed on 980905 by adb: added SoundSlots[i].playing &&     //changed on 980905 by adb: added SoundSlots[i].playing &&
Line 900
 
Line 876
  next_handle = 0;   next_handle = 0;
  //end edit by adb   //end edit by adb
 }  }
   
   
 // MIDI stuff follows.  
 //added/killed on 11/25/98 by Matthew Mueller  
 //void digi_set_midi_volume( int mvolume ) { }  
 //void digi_play_midi_song( char * filename, char * melodic_bank, char * drum_bank, int loop ) {}  
 //void digi_stop_current_song()  
 //{  
 //#ifdef HMIPLAY  
 //        char buf[10];  
 //      
 //        sprintf(buf,"s");  
 //        send_ipc(buf);  
 //#endif  
 //}  
 //end this section kill - MM  

Legend:
line(s) removed in v.1.1 
line(s) changed
 line(s) added in v.1.2