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

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

?? id_sd.h

?? “WOLF3D--刺殺希特勒”
?? H
字號:
//
//	ID Engine
//	ID_SD.h - Sound Manager Header
//	Version for Wolfenstein
//	By Jason Blochowiak
//

#ifndef	__ID_SD__
#define	__ID_SD__

void	alOut(byte n,byte b);

#ifdef	__DEBUG__
#define	__DEBUG_SoundMgr__
#endif

#define	TickBase	70		// 70Hz per tick - used as a base for timer 0

typedef	enum	{
					sdm_Off,
					sdm_PC,sdm_AdLib,
				}	SDMode;
typedef	enum	{
					smm_Off,smm_AdLib
				}	SMMode;
typedef	enum	{
					sds_Off,sds_PC,sds_SoundSource,sds_SoundBlaster
				}	SDSMode;
typedef	struct
		{
			longword	length;
			word		priority;
		} SoundCommon;

//	PC Sound stuff
#define	pcTimer		0x42
#define	pcTAccess	0x43
#define	pcSpeaker	0x61

#define	pcSpkBits	3

typedef	struct
		{
			SoundCommon	common;
			byte		data[1];
		} PCSound;

// 	Registers for the Sound Blaster card - needs to be offset by n0 (0x10,0x20,0x30,0x40,0x50,0x60)
#define	sbReset		0x206	// W
#define	sbFMStatus	0x208	// R
#define	sbFMAddr	0x208	// W
#define	sbFMData	0x209	// W
#define	sbReadData	0x20a	// R
#define	sbWriteCmd	0x20c	// W
#define	sbWriteData	0x20c	// W
#define	sbWriteStat	0x20c	// R
#define	sbDataAvail	0x20e	// R

//	Registers for the Sound Blaster Pro card - needs to be offset by n0 (0x20 or 0x40)
#define	sbpLFMStatus	0x200	// R
#define	sbpLFMAddr		0x200	// W
#define	sbpLFMData		0x201	// W
#define	sbpRFMStatus	0x202	// R
#define	sbpRFMAddr		0x202	// W
#define	sbpRFMData		0x203	// W
#define	sbpMixerAddr	0x204	// W
#define	sbpMixerData	0x205	// RW
#define	sbpCDData		0x210	// R
#define	sbpCDCommand	0x210	// W
#define	sbpCDStatus		0x211	// R
#define	sbpCDReset		0x212	// W

//	SBPro Mixer addresses
#define	sbpmReset		0x00
#define	sbpmVoiceVol	0x04
#define	sbpmMicMix		0x0a
#define	sbpmFilterADC	0x0c
#define	sbpmControl		0x0e
#define	sbpmMasterVol	0x22
#define	sbpmFMVol		0x26
#define	sbpmCDVol		0x28
#define	sbpmLineVol		0x2e

typedef	struct
		{
			SoundCommon	common;
			word		hertz;
			byte		bits,
						reference,
						data[1];
		} SampledSound;

// 	Registers for the AdLib card
#define	alFMStatus	0x388	// R
#define	alFMAddr	0x388	// W
#define	alFMData	0x389	// W

//	Register addresses
// Operator stuff
#define	alChar		0x20
#define	alScale		0x40
#define	alAttack	0x60
#define	alSus		0x80
#define	alWave		0xe0
// Channel stuff
#define	alFreqL		0xa0
#define	alFreqH		0xb0
#define	alFeedCon	0xc0
// Global stuff
#define	alEffects	0xbd

typedef	struct
		{
			byte	mChar,cChar,
					mScale,cScale,
					mAttack,cAttack,
					mSus,cSus,
					mWave,cWave,
					nConn,

					// These are only for Muse - these bytes are really unused
					voice,
					mode,
					unused[3];
		} Instrument;

typedef	struct
		{
			SoundCommon	common;
			Instrument	inst;
			byte		block,
						data[1];
		} AdLibSound;

//
//	Sequencing stuff
//
#define	sqMaxTracks	10
#define	sqMaxMoods	1	// DEBUG

#define	sev_Null		0	// Does nothing
#define	sev_NoteOff		1	// Turns a note off
#define	sev_NoteOn		2	// Turns a note on
#define	sev_NotePitch	3	// Sets the pitch of a currently playing note
#define	sev_NewInst		4	// Installs a new instrument
#define	sev_NewPerc		5	// Installs a new percussive instrument
#define	sev_PercOn		6	// Turns a percussive note on
#define	sev_PercOff		7	// Turns a percussive note off
#define	sev_SeqEnd		-1	// Terminates a sequence

// 	Flags for MusicGroup.flags
#define	sf_Melodic		0
#define	sf_Percussive	1

#if 1
typedef	struct
		{
			word	length,
					values[1];
		} MusicGroup;
#else
typedef	struct
		{
			word	flags,
					count,
					offsets[1];
		} MusicGroup;
#endif

typedef	struct
		{
			/* This part needs to be set up by the user */
			word        mood,far *moods[sqMaxMoods];

			/* The rest is set up by the code */
			Instrument	inst;
			boolean		percussive;
			word		far *seq;
			longword	nextevent;
		} ActiveTrack;

#define	sqmode_Normal		0
#define	sqmode_FadeIn		1
#define	sqmode_FadeOut		2

#define	sqMaxFade		64	// DEBUG


// Global variables
extern	boolean		AdLibPresent,
					SoundSourcePresent,
					SoundBlasterPresent,
					NeedsMusic,					// For Caching Mgr
					SoundPositioned;
extern	SDMode		SoundMode;
extern	SDSMode		DigiMode;
extern	SMMode		MusicMode;
extern	boolean		DigiPlaying;
extern	int			DigiMap[];
extern	longword	TimeCount;					// Global time in ticks

// Function prototypes
extern	void	SD_Startup(void),
				SD_Shutdown(void),
				SD_Default(boolean gotit,SDMode sd,SMMode sm),

				SD_PositionSound(int leftvol,int rightvol);
extern	boolean	SD_PlaySound(soundnames sound);
extern	void	SD_SetPosition(int leftvol,int rightvol),
				SD_StopSound(void),
				SD_WaitSoundDone(void),

				SD_StartMusic(MusicGroup far *music),
				SD_MusicOn(void),
				SD_MusicOff(void),
				SD_FadeOutMusic(void),

				SD_SetUserHook(void (*hook)(void));
extern	boolean	SD_MusicPlaying(void),
				SD_SetSoundMode(SDMode mode),
				SD_SetMusicMode(SMMode mode);
extern	word	SD_SoundPlaying(void);

extern	void	SD_SetDigiDevice(SDSMode),
				SD_PlayDigitized(word which,int leftpos,int rightpos),
				SD_StopDigitized(void),
				SD_Poll(void);

#ifdef	_MUSE_	// MUSE Goes directly to the lower level routines
extern	void	SDL_PCPlaySound(PCSound far *sound),
				SDL_PCStopSound(void),
				SDL_ALPlaySound(AdLibSound far *sound),
				SDL_ALStopSound(void);
#endif

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一线二线三线| 欧美精品一区二区精品网| 欧美一二三四在线| 国产亚洲欧洲一区高清在线观看| 亚洲视频在线一区观看| 狠狠色综合播放一区二区| 91国偷自产一区二区使用方法| 精品91自产拍在线观看一区| 一区二区国产盗摄色噜噜| 国产成人亚洲综合a∨猫咪| 欧美一级艳片视频免费观看| 亚洲激情男女视频| eeuss鲁一区二区三区| 精品精品国产高清一毛片一天堂| 亚洲一本大道在线| 91啦中文在线观看| 中文字幕成人在线观看| 国产在线不卡视频| 欧美一区二区女人| 午夜精品福利视频网站| 91亚洲精品一区二区乱码| 国产精品区一区二区三| 九九视频精品免费| 精品日韩成人av| 麻豆精品一区二区av白丝在线| 欧美日本乱大交xxxxx| 一区二区三区在线视频免费| 不卡的av网站| 亚洲天堂av一区| voyeur盗摄精品| 中文字幕在线免费不卡| 国产盗摄精品一区二区三区在线| 精品久久99ma| 国产一区二区不卡| www国产精品av| 国产一区二区三区久久久| 久久奇米777| 国产99久久精品| 国产精品乱人伦| 不卡电影一区二区三区| 亚洲免费av高清| 欧美亚洲尤物久久| 午夜久久久久久| 精品久久久久av影院| 国模一区二区三区白浆| 国产女同性恋一区二区| 成人国产免费视频| 亚洲精品久久7777| 欧美日韩激情一区二区| 奇米精品一区二区三区在线观看一| 日韩免费视频一区| 国产精品一区在线观看乱码| 国产精品久久久久久户外露出| 91性感美女视频| 日本一不卡视频| 国产欧美日本一区二区三区| 91小视频免费观看| 午夜精品久久久久| 久久久99精品免费观看不卡| 91在线观看污| 日本va欧美va精品发布| 久久香蕉国产线看观看99| 99久久综合国产精品| 亚洲va韩国va欧美va| 精品粉嫩超白一线天av| 99免费精品在线观看| 日韩电影在线一区二区三区| 国产日韩精品一区二区三区在线| 色狠狠色狠狠综合| 久久国产欧美日韩精品| 中文字幕亚洲电影| 欧美一区二区视频在线观看2020| 国产成人免费9x9x人网站视频| 亚洲精品日韩综合观看成人91| 678五月天丁香亚洲综合网| 国产盗摄精品一区二区三区在线 | 亚洲chinese男男1069| 日韩欧美一区二区在线视频| 成人性生交大片免费看中文| 丝袜亚洲另类欧美综合| 国产精品视频免费| 日韩欧美色综合| 91国模大尺度私拍在线视频| 加勒比av一区二区| 丝袜美腿亚洲色图| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 欧美高清你懂得| 成人禁用看黄a在线| 蜜桃视频一区二区三区| 一区二区三区欧美视频| 国产视频一区不卡| 日韩美女一区二区三区四区| 色综合久久久久久久| 国产乱码精品一区二区三| 免费观看久久久4p| 五月天国产精品| 亚洲一区二区三区四区五区黄| 欧美日韩黄色一区二区| 不卡视频免费播放| 国产成人免费视频网站| 久久草av在线| 精品综合久久久久久8888| 日韩成人av影视| 日韩精品久久久久久| 夜色激情一区二区| 亚洲欧美日韩在线| 亚洲欧洲日本在线| 国产精品美女久久久久久久久久久 | 日韩精品中文字幕在线不卡尤物| 欧美三区在线视频| 91久久线看在观草草青青| 9人人澡人人爽人人精品| 成人av在线一区二区三区| 国产馆精品极品| 懂色av中文一区二区三区| 国内精品国产三级国产a久久| 久久精工是国产品牌吗| 麻豆91精品视频| 久久99精品久久只有精品| 国内外成人在线视频| 国产一区二区成人久久免费影院| 国产一区免费电影| 成人蜜臀av电影| 91在线观看免费视频| 日本久久一区二区| 欧美日韩一二三| 欧美一区二区视频在线观看2020 | 99久久婷婷国产综合精品| 99精品国产视频| 95精品视频在线| 欧美在线视频不卡| 欧美日韩一区二区在线观看视频 | 国产精品乱码一区二三区小蝌蚪| 亚洲欧洲av在线| 夜夜操天天操亚洲| 青青青伊人色综合久久| 国产一区二区三区在线看麻豆| 国产成人在线影院| 色综合网色综合| 欧美高清视频在线高清观看mv色露露十八| 欧美日韩不卡视频| 欧美精品一区二区三区蜜臀 | 国产精品99久久久久久久vr| 成人国产精品免费网站| 欧美自拍丝袜亚洲| 精品日韩一区二区三区| 国产精品久久久久久亚洲伦| 亚洲女同ⅹxx女同tv| 日本三级韩国三级欧美三级| 国产精品白丝jk白祙喷水网站| 一本大道av伊人久久综合| 欧美一区二区三区人| 国产精品视频观看| 天天色综合成人网| 成人在线视频首页| 欧美精品久久久久久久多人混战| 久久蜜桃av一区精品变态类天堂 | 国产欧美一区二区三区在线看蜜臀| 国产精品不卡一区| 日本中文字幕不卡| 97精品久久久午夜一区二区三区 | 亚洲精品菠萝久久久久久久| 蜜桃传媒麻豆第一区在线观看| 成人综合婷婷国产精品久久| 在线电影欧美成精品| 国产精品国产三级国产有无不卡| 五月婷婷综合网| aaa欧美色吧激情视频| 精品精品欲导航| 亚洲成a人片综合在线| 处破女av一区二区| 精品国精品自拍自在线| 亚洲成人av电影| 97精品国产露脸对白| 久久久久久免费网| 日日夜夜免费精品视频| 91在线一区二区| 欧美激情一区不卡| 久久99精品国产麻豆不卡| 欧美精品久久一区| 亚洲精品菠萝久久久久久久| 成人网在线播放| 久久嫩草精品久久久精品| 免费欧美高清视频| 欧美日韩国产免费一区二区| 亚洲人成网站在线| 不卡一二三区首页| 国产精品电影一区二区| 成人永久免费视频| 国产三级欧美三级日产三级99| 蜜臀va亚洲va欧美va天堂 | 91在线看国产| 国产精品网站在线播放| 国产九九视频一区二区三区| 日韩精品中文字幕在线一区| 免费看欧美女人艹b| 欧美一区二区三区在线观看| 日韩影院在线观看| 欧美一区二区日韩一区二区| 日韩精品一级中文字幕精品视频免费观看|