亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? i_sound.c

?? 魔法師傳奇源代碼
?? C
字號(hào):

// I_SOUND.C

#include <stdio.h>
#include "h2def.h"
#include "dmx.h"
#include "sounds.h"
#include "i_sound.h"

/*
===============
=
= I_StartupTimer
=
===============
*/

int tsm_ID = -1;

void I_StartupTimer (void)
{
#ifndef NOTIMER
	extern int I_TimerISR(void);

	ST_Message("  I_StartupTimer()\n");
	// installs master timer.  Must be done before StartupTimer()!
	TSM_Install(SND_TICRATE);
	tsm_ID = TSM_NewService (I_TimerISR, 35, 255, 0); // max priority
	if (tsm_ID == -1)
	{
		I_Error("Can't register 35 Hz timer w/ DMX library");
	}
#endif
}

void I_ShutdownTimer (void)
{
	TSM_DelService(tsm_ID);
	TSM_Remove();
}

/*
 *
 *                           SOUND HEADER & DATA
 *
 *
 */

// sound information
#if 0
const char *dnames[] = {"None",
			"PC_Speaker",
			"Adlib",
			"Sound_Blaster",
			"ProAudio_Spectrum16",
			"Gravis_Ultrasound",
			"MPU",
			"AWE32"
			};
#endif

const char snd_prefixen[] = { 'P', 'P', 'A', 'S', 'S', 'S', 'M',
  'M', 'M', 'S' };

int snd_Channels;
int snd_DesiredMusicDevice, snd_DesiredSfxDevice;
int snd_MusicDevice,    // current music card # (index to dmxCodes)
	snd_SfxDevice,      // current sfx card # (index to dmxCodes)
	snd_MaxVolume,      // maximum volume for sound
	snd_MusicVolume;    // maximum volume for music
int dmxCodes[NUM_SCARDS]; // the dmx code for a given card

int     snd_SBport, snd_SBirq, snd_SBdma;       // sound blaster variables
int     snd_Mport;                              // midi variables

extern boolean  snd_MusicAvail, // whether music is available
		snd_SfxAvail;   // whether sfx are available

void I_PauseSong(int handle)
{
  MUS_PauseSong(handle);
}

void I_ResumeSong(int handle)
{
  MUS_ResumeSong(handle);
}

void I_SetMusicVolume(int volume)
{
  MUS_SetMasterVolume(volume*8);
//  snd_MusicVolume = volume;
}

void I_SetSfxVolume(int volume)
{
  snd_MaxVolume = volume; // THROW AWAY?
}

/*
 *
 *                              SONG API
 *
 */

int I_RegisterSong(void *data)
{
  int rc = MUS_RegisterSong(data);
#ifdef SNDDEBUG
  if (rc<0) ST_Message("    MUS_Reg() returned %d\n", rc);
#endif
  return rc;
}

void I_UnRegisterSong(int handle)
{
  int rc = MUS_UnregisterSong(handle);
#ifdef SNDDEBUG
  if (rc < 0) ST_Message("    MUS_Unreg() returned %d\n", rc);
#endif
}

int I_QrySongPlaying(int handle)
{
  int rc = MUS_QrySongPlaying(handle);
#ifdef SNDDEBUG
  if (rc < 0) ST_Message("    MUS_QrySP() returned %d\n", rc);
#endif
  return rc;
}

// Stops a song.  MUST be called before I_UnregisterSong().

void I_StopSong(int handle)
{
  int rc;
  rc = MUS_StopSong(handle);
#ifdef SNDDEBUG
  if (rc < 0) ST_Message("    MUS_StopSong() returned %d\n", rc);
#endif
/*
  // Fucking kluge pause
  {
	int s;
	extern volatile int ticcount;
	for (s=ticcount ; ticcount - s < 10 ; );
  }
*/
}

void I_PlaySong(int handle, boolean looping)
{
  int rc;
  rc = MUS_ChainSong(handle, looping ? handle : -1);
#ifdef SNDDEBUG
  if (rc < 0) ST_Message("    MUS_ChainSong() returned %d\n", rc);
#endif
  rc = MUS_PlaySong(handle, snd_MusicVolume);
#ifdef SNDDEBUG
  if (rc < 0) ST_Message("    MUS_PlaySong() returned %d\n", rc);
#endif

}

/*
 *
 *                                 SOUND FX API
 *
 */

// Gets lump nums of the named sound.  Returns pointer which will be
// passed to I_StartSound() when you want to start an SFX.  Must be
// sure to pass this to UngetSoundEffect() so that they can be
// freed!


int I_GetSfxLumpNum(sfxinfo_t *sound)
{
  return W_GetNumForName(sound->lumpname);

}

int I_StartSound (int id, void *data, int vol, int sep, int pitch, int priority)
{
	return SFX_PlayPatch(data, pitch, sep, vol, 0, 0);
}

void I_StopSound(int handle)
{
//  extern volatile long gDmaCount;
//  long waittocount;
  SFX_StopPatch(handle);
//  waittocount = gDmaCount + 2;
//  while (gDmaCount < waittocount) ;
}

int I_SoundIsPlaying(int handle)
{
  return SFX_Playing(handle);
}

void I_UpdateSoundParams(int handle, int vol, int sep, int pitch)
{
  SFX_SetOrigin(handle, pitch, sep, vol);
}

/*
 *
 *                                                      SOUND STARTUP STUFF
 *
 *
 */

//
// Why PC's Suck, Reason #8712
//

void I_sndArbitrateCards(void)
{
	char tmp[160];
  boolean gus, adlib, pc, sb, midi;
  int i, rc, mputype, p, opltype, wait, dmxlump;

  snd_MusicDevice = snd_DesiredMusicDevice;
  snd_SfxDevice = snd_DesiredSfxDevice;

  // check command-line parameters- overrides config file
  //
  if (M_CheckParm("-nosound")) snd_MusicDevice = snd_SfxDevice = snd_none;
  if (M_CheckParm("-nosfx")) snd_SfxDevice = snd_none;
  if (M_CheckParm("-nomusic")) snd_MusicDevice = snd_none;

  if (snd_MusicDevice > snd_MPU && snd_MusicDevice <= snd_MPU3)
	snd_MusicDevice = snd_MPU;
  if (snd_MusicDevice == snd_SB)
	snd_MusicDevice = snd_Adlib;
  if (snd_MusicDevice == snd_PAS)
	snd_MusicDevice = snd_Adlib;

  // figure out what i've got to initialize
  //
  gus = snd_MusicDevice == snd_GUS || snd_SfxDevice == snd_GUS;
  sb = snd_SfxDevice == snd_SB || snd_MusicDevice == snd_SB;
  adlib = snd_MusicDevice == snd_Adlib ;
  pc = snd_SfxDevice == snd_PC;
  midi = snd_MusicDevice == snd_MPU;

  // initialize whatever i've got
  //
  if (gus)
  {
	if (GF1_Detect()) ST_Message("    Dude.  The GUS ain't responding.\n");
	else
	{
	  dmxlump = W_GetNumForName("dmxgus");
	  GF1_SetMap(W_CacheLumpNum(dmxlump, PU_CACHE), lumpinfo[dmxlump].size);
	}

  }
  if (sb)
  {
	if(debugmode)
	{
	  ST_Message("  Sound cfg p=0x%x, i=%d, d=%d\n",
	  	snd_SBport, snd_SBirq, snd_SBdma);
	}
	if (SB_Detect(&snd_SBport, &snd_SBirq, &snd_SBdma, 0))
	{
	  ST_Message("    SB isn't responding at p=0x%x, i=%d, d=%d\n",
	  	snd_SBport, snd_SBirq, snd_SBdma);
	}
	else SB_SetCard(snd_SBport, snd_SBirq, snd_SBdma);

	if(debugmode)
	{
	  ST_Message("    SB_Detect returned p=0x%x, i=%d, d=%d\n",
	  	snd_SBport, snd_SBirq, snd_SBdma);
	}
  }

  if (adlib)
  {
	if (AL_Detect(&wait,0))
	{
	  	ST_Message("    Dude.  The Adlib isn't responding.\n");
	}
	else
	{
		AL_SetCard(wait, W_CacheLumpName("genmidi", PU_STATIC));
	}
  }

  if (midi)
  {
	if (debugmode)
	{
		ST_Message("    cfg p=0x%x\n", snd_Mport);
	}

	if (MPU_Detect(&snd_Mport, &i))
	{
	  ST_Message("    The MPU-401 isn't reponding @ p=0x%x.\n", snd_Mport);
	}
	else MPU_SetCard(snd_Mport);
  }

}

// inits all sound stuff

void I_StartupSound (void)
{
  int rc, i;

  if (debugmode)
	ST_Message("I_StartupSound: Hope you hear a pop.\n");

  // initialize dmxCodes[]
  dmxCodes[0] = 0;
  dmxCodes[snd_PC] = AHW_PC_SPEAKER;
  dmxCodes[snd_Adlib] = AHW_ADLIB;
  dmxCodes[snd_SB] = AHW_SOUND_BLASTER;
  dmxCodes[snd_PAS] = AHW_MEDIA_VISION;
  dmxCodes[snd_GUS] = AHW_ULTRA_SOUND;
  dmxCodes[snd_MPU] = AHW_MPU_401;
  dmxCodes[snd_MPU2] = AHW_MPU_401;
  dmxCodes[snd_MPU3] = AHW_MPU_401;
  dmxCodes[snd_AWE] = AHW_AWE32;
  dmxCodes[snd_CDMUSIC] = 0;

  // inits sound library timer stuff
  I_StartupTimer();

  // pick the sound cards i'm going to use
  //
  I_sndArbitrateCards();

  if (debugmode)
  {
	ST_Message("    Music device #%d & dmxCode=%d,", snd_MusicDevice,
	  dmxCodes[snd_MusicDevice]);
	ST_Message(" Sfx device #%d & dmxCode=%d\n", snd_SfxDevice,
	  dmxCodes[snd_SfxDevice]);
  }

  // inits DMX sound library
  ST_Message("    Calling DMX_Init...");
  rc = DMX_Init(SND_TICRATE, SND_MAXSONGS, dmxCodes[snd_MusicDevice],
	dmxCodes[snd_SfxDevice]);

  if (debugmode)
  {
	ST_Message(" DMX_Init() returned %d\n", rc);
  }

}

// shuts down all sound stuff

void I_ShutdownSound (void)
{
  DMX_DeInit();
  I_ShutdownTimer();
}

void I_SetChannels(int channels)
{
  WAV_PlayMode(channels, SND_SAMPLERATE);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品免费一区二区三区| 久久久国产一区二区三区四区小说| 麻豆国产一区二区| 中文字幕在线视频一区| 777久久久精品| 不卡的av在线| 久久精品999| 亚洲综合色丁香婷婷六月图片| 国产欧美日韩精品在线| 日韩一级片在线观看| 欧洲一区在线观看| 成人免费看黄yyy456| 久久精品久久99精品久久| 亚洲精品久久嫩草网站秘色| 国产欧美日韩另类视频免费观看| 欧美一级高清片在线观看| 欧美三级电影在线看| 99精品偷自拍| 国产a级毛片一区| 久久aⅴ国产欧美74aaa| 午夜精品影院在线观看| 亚洲色图在线播放| 亚洲国产精品成人综合色在线婷婷| 日韩三级视频在线看| 欧美日韩国产色站一区二区三区| 97精品超碰一区二区三区| 国产成人免费视| 久久99久久99小草精品免视看| 亚洲成人av一区| 一区二区三区日韩精品视频| 中文字幕一区二区不卡| 国产精品高潮久久久久无| 国产亚洲精久久久久久| 2021中文字幕一区亚洲| 久久蜜臀精品av| 337p日本欧洲亚洲大胆色噜噜| 日韩欧美中文一区二区| 日韩天堂在线观看| 精品日韩在线观看| 欧美电影免费观看完整版 | 欧美日韩不卡视频| 欧美图片一区二区三区| 欧美日韩精品一区二区三区四区 | 日韩一二在线观看| 91精品国产综合久久精品麻豆 | 色综合久久综合网| 欧美这里有精品| 欧美视频一区二区三区四区| 欧美三日本三级三级在线播放| 欧美视频一区在线| 欧美日韩你懂得| 欧美一区二区三区男人的天堂| 欧美一级日韩不卡播放免费| 日韩一区二区麻豆国产| 2021中文字幕一区亚洲| 亚洲国产精品99久久久久久久久 | 在线成人小视频| 日韩午夜激情av| 国产亚洲欧洲一区高清在线观看| 久久精品亚洲国产奇米99| 国产精品私人自拍| 亚洲资源中文字幕| 老司机午夜精品| 国产盗摄一区二区| 色哟哟精品一区| 日韩欧美中文一区| 国产精品久久久久久久久果冻传媒 | 欧美伊人精品成人久久综合97| 欧美色综合久久| 精品国产露脸精彩对白| 欧美高清在线精品一区| 亚洲综合丝袜美腿| 韩国毛片一区二区三区| 99久久精品免费看国产免费软件| 欧美日韩综合在线| 久久久精品中文字幕麻豆发布| 亚洲欧美色一区| 久久国产夜色精品鲁鲁99| 成人av免费在线播放| 欧美日韩三级视频| 中文字幕乱码一区二区免费| 午夜精品福利久久久| 国产成人免费av在线| 欧美久久久久久蜜桃| 国产女主播一区| 亚洲一卡二卡三卡四卡无卡久久 | 性欧美疯狂xxxxbbbb| 国产精品一区二区91| 在线视频欧美精品| 久久久久久久久97黄色工厂| 亚洲一区在线观看视频| 国产成人在线观看| 欧美美女一区二区| 亚洲欧洲精品一区二区三区不卡| 日韩电影免费一区| 一本一道久久a久久精品综合蜜臀| 在线电影欧美成精品| 综合久久综合久久| 国产一区二区调教| 欧美精三区欧美精三区| 国产精品美女www爽爽爽| 美女在线视频一区| 欧洲精品一区二区三区在线观看| 久久久久久电影| 日韩和欧美一区二区三区| 99久久精品99国产精品 | 亚洲国产精品成人综合| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久一区二区三区四区| 天天做天天摸天天爽国产一区 | 国产精品一二三在| 91精品麻豆日日躁夜夜躁| 一区二区三区在线观看视频| 成人app在线| 久久人人爽人人爽| 另类小说综合欧美亚洲| 欧美精品日韩综合在线| 亚洲成人黄色小说| 在线免费精品视频| 亚洲乱码精品一二三四区日韩在线| 国产精品亚洲一区二区三区妖精| 日韩一区二区三区免费观看| 婷婷综合另类小说色区| 欧美亚一区二区| 亚洲综合精品久久| 91网站最新地址| 日韩美女啊v在线免费观看| 大胆亚洲人体视频| 中文字幕不卡在线播放| 国产成人精品影视| 国产精品人妖ts系列视频 | 日韩欧美一级精品久久| 免费在线观看一区二区三区| 欧美美女喷水视频| 日韩国产欧美一区二区三区| 欧美高清性hdvideosex| 日韩av一区二区三区| 91麻豆精品国产91久久久更新时间| 亚洲国产精品久久久久婷婷884| 91国偷自产一区二区三区成为亚洲经典| 亚洲特级片在线| 日本久久一区二区三区| 亚洲宅男天堂在线观看无病毒| 色婷婷国产精品| 亚洲电影激情视频网站| 欧美一卡2卡3卡4卡| 蜜臀久久99精品久久久久宅男| 精品国产一区a| 国产福利一区二区| 亚洲欧洲成人自拍| 欧美在线观看视频一区二区| 天堂va蜜桃一区二区三区| 日韩亚洲欧美综合| 国产乱理伦片在线观看夜一区| 国产欧美综合在线观看第十页| 不卡在线视频中文字幕| 亚洲一区二区三区精品在线| 91精品国产综合久久婷婷香蕉 | 99天天综合性| 亚洲一区二区三区爽爽爽爽爽 | 99精品视频一区| 亚洲电影你懂得| 精品久久久久久最新网址| 国产不卡视频一区二区三区| 一区二区三区在线视频免费| 3d成人h动漫网站入口| 国产在线精品一区二区夜色| 亚洲欧洲精品一区二区三区不卡| 欧美日韩日本视频| 国产激情偷乱视频一区二区三区| 亚洲欧美日韩久久精品| 日韩一区二区在线观看| 成人免费看的视频| 日韩激情视频网站| 中文字幕一区二区三区色视频| 欧美美女一区二区| 成人免费看视频| 天天影视涩香欲综合网| www激情久久| 欧美在线视频全部完| 国产精品小仙女| 亚洲成人激情综合网| 中文av一区特黄| 日韩午夜av一区| 色香蕉成人二区免费| 国产又黄又大久久| 亚洲va天堂va国产va久| 欧美国产禁国产网站cc| 91精品久久久久久蜜臀| 91免费在线播放| 国产一区二区中文字幕| 日韩中文字幕av电影| 亚洲日本成人在线观看| 精品国产制服丝袜高跟| 欧美日韩高清在线播放| 成人免费黄色在线| 精品在线观看免费| 日韩av一区二区在线影视| 亚洲精品中文在线观看| 国产精品美女www爽爽爽|