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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? id_sd.c

?? wolf3d游戲源代碼!非常不錯! 與大家共享! 如果大家又相關資料還請多多上傳!
?? C
?? 第 1 頁 / 共 4 頁
字號:
			SoundPositioned = false;
		}
		else
			DigiMissed = true;
	}
}

void
SD_SetDigiDevice(SDSMode mode)
{
	boolean	devicenotpresent;

	if (mode == DigiMode)
		return;

	SD_StopDigitized();

	devicenotpresent = false;
	switch (mode)
	{
	case sds_SoundBlaster:
		if (!SoundBlasterPresent)
		{
			if (SoundSourcePresent)
				mode = sds_SoundSource;
			else
				devicenotpresent = true;
		}
		break;
	case sds_SoundSource:
		if (!SoundSourcePresent)
			devicenotpresent = true;
		break;
	}

	if (!devicenotpresent)
	{
		if (DigiMode == sds_SoundSource)
			SDL_ShutSS();

		DigiMode = mode;

		if (mode == sds_SoundSource)
			SDL_StartSS();

		SDL_SetTimerSpeed();
	}
}

void
SDL_SetupDigi(void)
{
	memptr	list;
	word	far *p,
			pg;
	int		i;

	PM_UnlockMainMem();
	MM_GetPtr(&list,PMPageSize);
	PM_CheckMainMem();
	p = (word far *)MK_FP(PM_GetPage(ChunksInFile - 1),0);
	_fmemcpy((void far *)list,(void far *)p,PMPageSize);
	pg = PMSoundStart;
	for (i = 0;i < PMPageSize / (sizeof(word) * 2);i++,p += 2)
	{
		if (pg >= ChunksInFile - 1)
			break;
		pg += (p[1] + (PMPageSize - 1)) / PMPageSize;
	}
	PM_UnlockMainMem();
	MM_GetPtr((memptr *)&DigiList,i * sizeof(word) * 2);
	_fmemcpy((void far *)DigiList,(void far *)list,i * sizeof(word) * 2);
	MM_FreePtr(&list);
	NumDigi = i;

	for (i = 0;i < LASTSOUND;i++)
		DigiMap[i] = -1;
}

// 	AdLib Code

///////////////////////////////////////////////////////////////////////////
//
//	alOut(n,b) - Puts b in AdLib card register n
//
///////////////////////////////////////////////////////////////////////////
void
alOut(byte n,byte b)
{
asm	pushf
asm	cli

asm	mov	dx,0x388
asm	mov	al,[n]
asm	out	dx,al
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	inc	dx
asm	mov	al,[b]
asm	out	dx,al

asm	popf

asm	dec	dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx

asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx

asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx

asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
asm	in	al,dx
}

#if 0
///////////////////////////////////////////////////////////////////////////
//
//	SDL_SetInstrument() - Puts an instrument into a generator
//
///////////////////////////////////////////////////////////////////////////
static void
SDL_SetInstrument(int track,int which,Instrument far *inst,boolean percussive)
{
	byte		c,m;

	if (percussive)
	{
		c = pcarriers[which];
		m = pmodifiers[which];
	}
	else
	{
		c = carriers[which];
		m = modifiers[which];
	}

	tracks[track - 1]->inst = *inst;
	tracks[track - 1]->percussive = percussive;

	alOut(m + alChar,inst->mChar);
	alOut(m + alScale,inst->mScale);
	alOut(m + alAttack,inst->mAttack);
	alOut(m + alSus,inst->mSus);
	alOut(m + alWave,inst->mWave);

	// Most percussive instruments only use one cell
	if (c != 0xff)
	{
		alOut(c + alChar,inst->cChar);
		alOut(c + alScale,inst->cScale);
		alOut(c + alAttack,inst->cAttack);
		alOut(c + alSus,inst->cSus);
		alOut(c + alWave,inst->cWave);
	}

	alOut(which + alFeedCon,inst->nConn);	// DEBUG - I think this is right
}
#endif

///////////////////////////////////////////////////////////////////////////
//
//	SDL_ALStopSound() - Turns off any sound effects playing through the
//		AdLib card
//
///////////////////////////////////////////////////////////////////////////
#ifdef	_MUSE_
void
#else
static void
#endif
SDL_ALStopSound(void)
{
asm	pushf
asm	cli

	(long)alSound = 0;
	alOut(alFreqH + 0,0);

asm	popf
}

static void
SDL_AlSetFXInst(Instrument far *inst)
{
	byte		c,m;

	m = modifiers[0];
	c = carriers[0];
	alOut(m + alChar,inst->mChar);
	alOut(m + alScale,inst->mScale);
	alOut(m + alAttack,inst->mAttack);
	alOut(m + alSus,inst->mSus);
	alOut(m + alWave,inst->mWave);
	alOut(c + alChar,inst->cChar);
	alOut(c + alScale,inst->cScale);
	alOut(c + alAttack,inst->cAttack);
	alOut(c + alSus,inst->cSus);
	alOut(c + alWave,inst->cWave);

	// Note: Switch commenting on these lines for old MUSE compatibility
//	alOut(alFeedCon,inst->nConn);
	alOut(alFeedCon,0);
}

///////////////////////////////////////////////////////////////////////////
//
//	SDL_ALPlaySound() - Plays the specified sound on the AdLib card
//
///////////////////////////////////////////////////////////////////////////
#ifdef	_MUSE_
void
#else
static void
#endif
SDL_ALPlaySound(AdLibSound far *sound)
{
	Instrument	far *inst;
	byte		huge *data;

	SDL_ALStopSound();

asm	pushf
asm	cli

	alLengthLeft = sound->common.length;
	data = sound->data;
	data++;
	data--;
	alSound = (byte far *)data;
	alBlock = ((sound->block & 7) << 2) | 0x20;
	inst = &sound->inst;

	if (!(inst->mSus | inst->cSus))
	{
	asm	popf
		Quit("SDL_ALPlaySound() - Bad instrument");
	}

	SDL_AlSetFXInst(&alZeroInst);	// DEBUG
	SDL_AlSetFXInst(inst);

asm	popf
}

#if 0
///////////////////////////////////////////////////////////////////////////
//
// 	SDL_ALSoundService() - Plays the next sample out through the AdLib card
//
///////////////////////////////////////////////////////////////////////////
//static void
void
SDL_ALSoundService(void)
{
	byte	s;

	if (alSound)
	{
		s = *alSound++;
		if (!s)
			alOut(alFreqH + 0,0);
		else
		{
			alOut(alFreqL + 0,s);
			alOut(alFreqH + 0,alBlock);
		}

		if (!(--alLengthLeft))
		{
			(long)alSound = 0;
			alOut(alFreqH + 0,0);
			SDL_SoundFinished();
		}
	}
}
#endif

#if 0
void
SDL_ALService(void)
{
	byte	a,v;
	word	w;

	if (!sqActive)
		return;

	while (sqHackLen && (sqHackTime <= alTimeCount))
	{
		w = *sqHackPtr++;
		sqHackTime = alTimeCount + *sqHackPtr++;
	asm	mov	dx,[w]
	asm	mov	[a],dl
	asm	mov	[v],dh
		alOut(a,v);
		sqHackLen -= 4;
	}
	alTimeCount++;
	if (!sqHackLen)
	{
		sqHackPtr = (word far *)sqHack;
		sqHackLen = sqHackSeqLen;
		alTimeCount = sqHackTime = 0;
	}
}
#endif

///////////////////////////////////////////////////////////////////////////
//
//	SDL_ShutAL() - Shuts down the AdLib card for sound effects
//
///////////////////////////////////////////////////////////////////////////
static void
SDL_ShutAL(void)
{
asm	pushf
asm	cli

	alOut(alEffects,0);
	alOut(alFreqH + 0,0);
	SDL_AlSetFXInst(&alZeroInst);
	alSound = 0;

asm	popf
}

///////////////////////////////////////////////////////////////////////////
//
//	SDL_CleanAL() - Totally shuts down the AdLib card
//
///////////////////////////////////////////////////////////////////////////
static void
SDL_CleanAL(void)
{
	int	i;

asm	pushf
asm	cli

	alOut(alEffects,0);
	for (i = 1;i < 0xf5;i++)
		alOut(i,0);

asm	popf
}

///////////////////////////////////////////////////////////////////////////
//
//	SDL_StartAL() - Starts up the AdLib card for sound effects
//
///////////////////////////////////////////////////////////////////////////
static void
SDL_StartAL(void)
{
	alFXReg = 0;
	alOut(alEffects,alFXReg);
	SDL_AlSetFXInst(&alZeroInst);
}

///////////////////////////////////////////////////////////////////////////
//
//	SDL_DetectAdLib() - Determines if there's an AdLib (or SoundBlaster
//		emulating an AdLib) present
//
///////////////////////////////////////////////////////////////////////////
static boolean
SDL_DetectAdLib(void)
{
	byte	status1,status2;
	int		i;

	alOut(4,0x60);	// Reset T1 & T2
	alOut(4,0x80);	// Reset IRQ
	status1 = readstat();
	alOut(2,0xff);	// Set timer 1
	alOut(4,0x21);	// Start timer 1
#if 0
	SDL_Delay(TimerDelay100);
#else
asm	mov	dx,0x388
asm	mov	cx,100
usecloop:
asm	in	al,dx
asm	loop usecloop
#endif

	status2 = readstat();
	alOut(4,0x60);
	alOut(4,0x80);

	if (((status1 & 0xe0) == 0x00) && ((status2 & 0xe0) == 0xc0))
	{
		for (i = 1;i <= 0xf5;i++)	// Zero all the registers
			alOut(i,0);

		alOut(1,0x20);	// Set WSE=1
		alOut(8,0);		// Set CSM=0 & SEL=0

		return(true);
	}
	else
		return(false);
}

#if 0
///////////////////////////////////////////////////////////////////////////
//
//	SDL_t0Service() - My timer 0 ISR which handles the different timings and
//		dispatches to whatever other routines are appropriate
//
///////////////////////////////////////////////////////////////////////////
static void interrupt
SDL_t0Service(void)
{
static	word	count = 1;

#if 1	// for debugging
asm	mov	dx,STATUS_REGISTER_1
asm	in	al,dx
asm	mov	dx,ATR_INDEX
asm	mov	al,ATR_OVERSCAN
asm	out	dx,al
asm	mov	al,4	// red
asm	out	dx,al
#endif

	HackCount++;

	if ((MusicMode == smm_AdLib) || (DigiMode == sds_SoundSource))
	{
		SDL_ALService();
		SDL_SSService();
//		if (!(++count & 7))
		if (!(++count % 10))
		{
			LocalTime++;
			TimeCount++;
			if (SoundUserHook)
				SoundUserHook();
		}
//		if (!(count & 3))
		if (!(count % 5))
		{
			switch (SoundMode)
			{
			case sdm_PC:
				SDL_PCService();
				break;
			case sdm_AdLib:
				SDL_ALSoundService();
				break;
			}
		}
	}
	else
	{
		if (!(++count & 1))
		{
			LocalTime++;
			TimeCount++;
			if (SoundUserHook)
				SoundUserHook();
		}
		switch (SoundMode)
		{
		case sdm_PC:
			SDL_PCService();
			break;
		case sdm_AdLib:
			SDL_ALSoundService();
			break;
		}
	}

asm	mov	ax,[WORD PTR TimerCount]
asm	add	ax,[WORD PTR TimerDivisor]
asm	mov	[WORD PTR TimerCount],ax
asm	jnc	myack
	t0OldService();			// If we overflow a word, time to call old int handler
asm	jmp	olddone
myack:;
	outportb(0x20,0x20);	// Ack the interrupt
olddone:;

#if 1	// for debugging
asm	mov	dx,STATUS_REGISTER_1
asm	in	al,dx
asm	mov	dx,ATR_INDEX
asm	mov	al,ATR_OVERSCAN
asm	out	dx,al
asm	mov	al,3	// blue
asm	out	dx,al
asm	mov	al,0x20	// normal
asm	out	dx,al
#endif
}
#endif

////////////////////////////////////////////////////////////////////////////
//
//	SDL_ShutDevice() - turns off whatever device was being used for sound fx
//
////////////////////////////////////////////////////////////////////////////
static void
SDL_ShutDevice(void)
{
	switch (SoundMode)
	{
	case sdm_PC:
		SDL_ShutPC();
		break;
	case sdm_AdLib:
		SDL_ShutAL();
		break;
	}
	SoundMode = sdm_Off;
}

///////////////////////////////////////////////////////////////////////////
//
//	SDL_CleanDevice() - totally shuts down all sound devices
//
///////////////////////////////////////////////////////////////////////////
static void
SDL_CleanDevice(void)
{
	if ((SoundMode == sdm_AdLib) || (MusicMode == smm_AdLib))
		SDL_CleanAL();
}

///////////////////////////////////////////////////////////////////////////
//
//	SDL_StartDevice() - turns on whatever device is to be used for sound fx
//
///////////////////////////////////////////////////////////////////////////
static void
SDL_StartDevice(void)
{
	switch (SoundMode)
	{
	case sdm_AdLib:
		SDL_StartAL();
		break;
	}
	SoundNumber = SoundPriority = 0;
}

//	Public routines

///////////////////////////////////////////////////////////////////////////
//
//	SD_SetSoundMode() - Sets which sound hardware to use for sound effects
//
///////////////////////////////////////////////////////////////////////////
boolean
SD_SetSoundMode(SDMode mode)
{
	boolean	result = false;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月激情综合婷婷| 国产精品久久久久久一区二区三区| 五月婷婷另类国产| 欧美日韩成人综合| 亚洲综合丁香婷婷六月香| 欧美性色综合网| 奇米精品一区二区三区四区| 欧美大片日本大片免费观看| 国产精品一二三四区| 国产精品黄色在线观看| 在线一区二区三区做爰视频网站| 手机精品视频在线观看| 精品久久久网站| 99在线热播精品免费| 亚洲综合免费观看高清完整版 | 亚洲综合色在线| 欧美区一区二区三区| 裸体歌舞表演一区二区| 国产欧美日韩精品在线| 在线观看亚洲精品| 国产在线看一区| 亚洲同性同志一二三专区| 91精品国产一区二区三区香蕉| 激情综合网av| 亚洲欧美色图小说| 欧美mv日韩mv| 色女孩综合影院| 国产一区二区精品久久91| 亚洲人成伊人成综合网小说| 欧美一级高清片在线观看| 香蕉影视欧美成人| 中文一区一区三区高中清不卡| 精品视频1区2区3区| 国产精品自拍av| 婷婷久久综合九色综合伊人色| 国产情人综合久久777777| 欧美视频一区二区三区在线观看 | 麻豆精品视频在线观看视频| 国产丝袜欧美中文另类| 欧美日韩一区久久| jiyouzz国产精品久久| 免费看精品久久片| 一区二区三区精密机械公司| 国产亚洲欧美激情| 51精品秘密在线观看| 91免费视频网| 国产精品 欧美精品| 美腿丝袜亚洲一区| 亚洲不卡av一区二区三区| 中文字幕欧美一区| 欧美激情一区二区三区不卡| 日韩一级高清毛片| 欧美性淫爽ww久久久久无| 91在线免费看| 成人激情午夜影院| 国产剧情一区二区| 国产一区二区在线电影| 日韩二区在线观看| 亚洲香肠在线观看| 亚洲欧美国产77777| 国产精品乱人伦| 国产精品日产欧美久久久久| 久久免费精品国产久精品久久久久| 欧美日韩午夜精品| 日本丶国产丶欧美色综合| av不卡一区二区三区| 国产剧情av麻豆香蕉精品| 极品少妇xxxx精品少妇偷拍| 免费成人在线网站| 美腿丝袜在线亚洲一区 | 国产一区欧美二区| 麻豆成人久久精品二区三区小说| 亚洲a一区二区| 视频一区中文字幕| 亚洲美女电影在线| 亚洲人成精品久久久久| 亚洲免费观看高清在线观看| 中文在线一区二区| 亚洲欧美电影院| 亚洲一区二区在线播放相泽| 亚洲成人你懂的| 五月婷婷综合激情| 久久国产精品72免费观看| 蜜臀av国产精品久久久久| 精品综合久久久久久8888| 国产一区二区三区四区在线观看| 精品一区二区三区在线播放| 乱一区二区av| 国产资源在线一区| 成人午夜激情片| 91看片淫黄大片一级| 在线观看一区二区视频| 欧美日韩一区二区三区高清 | 久久毛片高清国产| 国产日本欧洲亚洲| 亚洲你懂的在线视频| 亚洲大片在线观看| 精品亚洲成av人在线观看| 国产成人在线看| 91丨九色porny丨蝌蚪| 欧美色涩在线第一页| 日韩免费视频一区二区| 亚洲国产精品精华液ab| 亚洲精品伦理在线| 青草国产精品久久久久久| 国产精品小仙女| 欧洲国内综合视频| 欧美变态口味重另类| 国产精品乱人伦| 日韩精品五月天| 国v精品久久久网| 精品视频免费看| 久久精品欧美日韩| 亚洲国产日韩a在线播放性色| 久久国产成人午夜av影院| 97成人超碰视| 日韩一区二区电影网| 国产精品每日更新在线播放网址| 亚洲bt欧美bt精品777| 高清成人在线观看| 欧美日韩精品欧美日韩精品| 国产偷国产偷精品高清尤物| 亚洲成人自拍网| 国产不卡一区视频| 欧美一区二区三级| 中文字幕 久热精品 视频在线| 日日夜夜精品视频天天综合网| 成人免费三级在线| 日韩欧美国产电影| 亚洲精品精品亚洲| 国产成人超碰人人澡人人澡| 欧美日韩国产高清一区二区三区| 国产日韩精品一区二区浪潮av| 五月综合激情日本mⅴ| 99在线精品一区二区三区| 2023国产一二三区日本精品2022| 一区二区三区美女| 国产凹凸在线观看一区二区| 欧美一区二区三区免费| 夜夜精品浪潮av一区二区三区| 国产成人av电影在线观看| 日韩免费成人网| 日本视频在线一区| 欧美系列一区二区| 国产精品成人免费精品自在线观看| 狠狠色丁香婷婷综合久久片| 欧美日韩精品福利| 亚洲国产精品精华液网站| 91亚洲大成网污www| 日本一区二区免费在线观看视频 | 日韩一区二区麻豆国产| 亚洲成人先锋电影| 欧美在线观看视频一区二区| 国产精品美女一区二区三区| 国产伦精品一区二区三区视频青涩| 777亚洲妇女| 天天爽夜夜爽夜夜爽精品视频| 色老综合老女人久久久| 综合久久国产九一剧情麻豆| www.av亚洲| 国产精品美女久久久久久| 国产成+人+日韩+欧美+亚洲| 久久久九九九九| 国产福利91精品一区| 久久免费国产精品| 国产成人在线视频播放| 中文一区一区三区高中清不卡| 国产成人av电影在线播放| 国产无人区一区二区三区| 懂色av一区二区夜夜嗨| 中文字幕欧美国产| 不卡一二三区首页| 亚洲欧美在线视频观看| 成人v精品蜜桃久久一区| 中文字幕日本乱码精品影院| 99re6这里只有精品视频在线观看| 国产精品久久久久精k8| 成人激情小说网站| 一区二区在线观看免费视频播放| 在线观看一区不卡| 男男成人高潮片免费网站| 欧美zozozo| 成人国产精品免费观看动漫| 亚洲欧美国产77777| 欧美午夜寂寞影院| 麻豆精品在线播放| 国产农村妇女毛片精品久久麻豆| 91在线精品秘密一区二区| 亚洲一区二区高清| 日韩三级视频在线看| 国产一区二区美女| 亚洲日本乱码在线观看| 3atv一区二区三区| 国产麻豆视频精品| 亚洲人成小说网站色在线| 91精品婷婷国产综合久久竹菊| 精品在线播放免费| ...av二区三区久久精品| 7777女厕盗摄久久久| 国产美女精品人人做人人爽|