📄 emu10k1.h
字号:
/* sophisticated master mute function has not */ /* been written. */#define HCFG_AUDIOENABLE 0x00000001 /* 0 = CODECs transmit zero-valued samples */ /* Should be set to 1 when the EMU10K1 is */ /* completely initialized. *///For Audigy, MPU port move to 0x70-0x74 ptr register#define MUDATA 0x18 /* MPU401 data register (8 bits) */#define MUCMD 0x19 /* MPU401 command register (8 bits) */#define MUCMD_RESET 0xff /* RESET command */#define MUCMD_ENTERUARTMODE 0x3f /* Enter_UART_mode command */ /* NOTE: All other commands are ignored */#define MUSTAT MUCMD /* MPU401 status register (8 bits) */#define MUSTAT_IRDYN 0x80 /* 0 = MIDI data or command ACK */#define MUSTAT_ORDYN 0x40 /* 0 = MUDATA can accept a command or data */#define A_IOCFG 0x18 /* GPIO on Audigy card (16bits) */#define A_GPINPUT_MASK 0xff00#define A_GPOUTPUT_MASK 0x00ff// Audigy output/GPIO stuff taken from the kX drivers#define A_IOCFG_GPOUT0 0x0044 /* analog/digital */#define A_IOCFG_DISABLE_ANALOG 0x0040 /* = 'enable' for Audigy2 (chiprev=4) */#define A_IOCFG_ENABLE_DIGITAL 0x0004#define A_IOCFG_ENABLE_DIGITAL_AUDIGY4 0x0080#define A_IOCFG_UNKNOWN_20 0x0020#define A_IOCFG_DISABLE_AC97_FRONT 0x0080 /* turn off ac97 front -> front (10k2.1) */#define A_IOCFG_GPOUT1 0x0002 /* IR? drive's internal bypass (?) */#define A_IOCFG_GPOUT2 0x0001 /* IR */#define A_IOCFG_MULTIPURPOSE_JACK 0x2000 /* center+lfe+rear_center (a2/a2ex) */ /* + digital for generic 10k2 */#define A_IOCFG_DIGITAL_JACK 0x1000 /* digital for a2 platinum */#define A_IOCFG_FRONT_JACK 0x4000#define A_IOCFG_REAR_JACK 0x8000#define A_IOCFG_PHONES_JACK 0x0100 /* LiveDrive *//* outputs: * for audigy2 platinum: 0xa00 * for a2 platinum ex: 0x1c00 * for a1 platinum: 0x0 */#define TIMER 0x1a /* Timer terminal count register */ /* NOTE: After the rate is changed, a maximum */ /* of 1024 sample periods should be allowed */ /* before the new rate is guaranteed accurate. */#define TIMER_RATE_MASK 0x000003ff /* Timer interrupt rate in sample periods */ /* 0 == 1024 periods, [1..4] are not useful */#define TIMER_RATE 0x0a00001a#define AC97DATA 0x1c /* AC97 register set data register (16 bit) */#define AC97ADDRESS 0x1e /* AC97 register set address register (8 bit) */#define AC97ADDRESS_READY 0x80 /* Read-only bit, reflects CODEC READY signal */#define AC97ADDRESS_ADDRESS 0x7f /* Address of indexed AC97 register *//* Available on the Audigy 2 and Audigy 4 only. This is the P16V chip. */#define PTR2 0x20 /* Indexed register set pointer register */#define DATA2 0x24 /* Indexed register set data register */#define IPR2 0x28 /* P16V interrupt pending register */#define IPR2_PLAYBACK_CH_0_LOOP 0x00001000 /* Playback Channel 0 loop */#define IPR2_PLAYBACK_CH_0_HALF_LOOP 0x00000100 /* Playback Channel 0 half loop */#define IPR2_CAPTURE_CH_0_LOOP 0x00100000 /* Capture Channel 0 loop */#define IPR2_CAPTURE_CH_0_HALF_LOOP 0x00010000 /* Capture Channel 0 half loop */ /* 0x00000100 Playback. Only in once per period. * 0x00110000 Capture. Int on half buffer. */#define INTE2 0x2c /* P16V Interrupt enable register. */#define INTE2_PLAYBACK_CH_0_LOOP 0x00001000 /* Playback Channel 0 loop */#define INTE2_PLAYBACK_CH_0_HALF_LOOP 0x00000100 /* Playback Channel 0 half loop */#define INTE2_PLAYBACK_CH_1_LOOP 0x00002000 /* Playback Channel 1 loop */#define INTE2_PLAYBACK_CH_1_HALF_LOOP 0x00000200 /* Playback Channel 1 half loop */#define INTE2_PLAYBACK_CH_2_LOOP 0x00004000 /* Playback Channel 2 loop */#define INTE2_PLAYBACK_CH_2_HALF_LOOP 0x00000400 /* Playback Channel 2 half loop */#define INTE2_PLAYBACK_CH_3_LOOP 0x00008000 /* Playback Channel 3 loop */#define INTE2_PLAYBACK_CH_3_HALF_LOOP 0x00000800 /* Playback Channel 3 half loop */#define INTE2_CAPTURE_CH_0_LOOP 0x00100000 /* Capture Channel 0 loop */#define INTE2_CAPTURE_CH_0_HALF_LOOP 0x00010000 /* Caputre Channel 0 half loop */#define HCFG2 0x34 /* Defaults: 0, win2000 sets it to 00004201 */ /* 0x00000000 2-channel output. */ /* 0x00000200 8-channel output. */ /* 0x00000004 pauses stream/irq fail. */ /* Rest of bits no nothing to sound output */ /* bit 0: Enable P16V audio. * bit 1: Lock P16V record memory cache. * bit 2: Lock P16V playback memory cache. * bit 3: Dummy record insert zero samples. * bit 8: Record 8-channel in phase. * bit 9: Playback 8-channel in phase. * bit 11-12: Playback mixer attenuation: 0=0dB, 1=-6dB, 2=-12dB, 3=Mute. * bit 13: Playback mixer enable. * bit 14: Route SRC48 mixer output to fx engine. * bit 15: Enable IEEE 1394 chip. */#define IPR3 0x38 /* Cdif interrupt pending register */#define INTE3 0x3c /* Cdif interrupt enable register. *//************************************************************************************************//* PCI function 1 registers, address = <val> + PCIBASE1 *//************************************************************************************************/#define JOYSTICK1 0x00 /* Analog joystick port register */#define JOYSTICK2 0x01 /* Analog joystick port register */#define JOYSTICK3 0x02 /* Analog joystick port register */#define JOYSTICK4 0x03 /* Analog joystick port register */#define JOYSTICK5 0x04 /* Analog joystick port register */#define JOYSTICK6 0x05 /* Analog joystick port register */#define JOYSTICK7 0x06 /* Analog joystick port register */#define JOYSTICK8 0x07 /* Analog joystick port register *//* When writing, any write causes JOYSTICK_COMPARATOR output enable to be pulsed on write. *//* When reading, use these bitfields: */#define JOYSTICK_BUTTONS 0x0f /* Joystick button data */#define JOYSTICK_COMPARATOR 0xf0 /* Joystick comparator data *//********************************************************************************************************//* Emu10k1 pointer-offset register set, accessed through the PTR and DATA registers *//********************************************************************************************************/#define CPF 0x00 /* Current pitch and fraction register */#define CPF_CURRENTPITCH_MASK 0xffff0000 /* Current pitch (linear, 0x4000 == unity pitch shift) */#define CPF_CURRENTPITCH 0x10100000#define CPF_STEREO_MASK 0x00008000 /* 1 = Even channel interleave, odd channel locked */#define CPF_STOP_MASK 0x00004000 /* 1 = Current pitch forced to 0 */#define CPF_FRACADDRESS_MASK 0x00003fff /* Linear fractional address of the current channel */#define PTRX 0x01 /* Pitch target and send A/B amounts register */#define PTRX_PITCHTARGET_MASK 0xffff0000 /* Pitch target of specified channel */#define PTRX_PITCHTARGET 0x10100001#define PTRX_FXSENDAMOUNT_A_MASK 0x0000ff00 /* Linear level of channel output sent to FX send bus A */#define PTRX_FXSENDAMOUNT_A 0x08080001#define PTRX_FXSENDAMOUNT_B_MASK 0x000000ff /* Linear level of channel output sent to FX send bus B */#define PTRX_FXSENDAMOUNT_B 0x08000001#define CVCF 0x02 /* Current volume and filter cutoff register */#define CVCF_CURRENTVOL_MASK 0xffff0000 /* Current linear volume of specified channel */#define CVCF_CURRENTVOL 0x10100002#define CVCF_CURRENTFILTER_MASK 0x0000ffff /* Current filter cutoff frequency of specified channel */#define CVCF_CURRENTFILTER 0x10000002#define VTFT 0x03 /* Volume target and filter cutoff target register */#define VTFT_VOLUMETARGET_MASK 0xffff0000 /* Volume target of specified channel */#define VTFT_VOLUMETARGET 0x10100003#define VTFT_FILTERTARGET_MASK 0x0000ffff /* Filter cutoff target of specified channel */#define VTFT_FILTERTARGET 0x10000003#define Z1 0x05 /* Filter delay memory 1 register */#define Z2 0x04 /* Filter delay memory 2 register */#define PSST 0x06 /* Send C amount and loop start address register */#define PSST_FXSENDAMOUNT_C_MASK 0xff000000 /* Linear level of channel output sent to FX send bus C */#define PSST_FXSENDAMOUNT_C 0x08180006#define PSST_LOOPSTARTADDR_MASK 0x00ffffff /* Loop start address of the specified channel */#define PSST_LOOPSTARTADDR 0x18000006#define DSL 0x07 /* Send D amount and loop start address register */#define DSL_FXSENDAMOUNT_D_MASK 0xff000000 /* Linear level of channel output sent to FX send bus D */#define DSL_FXSENDAMOUNT_D 0x08180007#define DSL_LOOPENDADDR_MASK 0x00ffffff /* Loop end address of the specified channel */#define DSL_LOOPENDADDR 0x18000007#define CCCA 0x08 /* Filter Q, interp. ROM, byte size, cur. addr register */#define CCCA_RESONANCE 0xf0000000 /* Lowpass filter resonance (Q) height */#define CCCA_INTERPROMMASK 0x0e000000 /* Selects passband of interpolation ROM */ /* 1 == full band, 7 == lowpass */ /* ROM 0 is used when pitch shifting downward or less */ /* then 3 semitones upward. Increasingly higher ROM */ /* numbers are used, typically in steps of 3 semitones, */ /* as upward pitch shifting is performed. */#define CCCA_INTERPROM_0 0x00000000 /* Select interpolation ROM 0 */#define CCCA_INTERPROM_1 0x02000000 /* Select interpolation ROM 1 */#define CCCA_INTERPROM_2 0x04000000 /* Select interpolation ROM 2 */#define CCCA_INTERPROM_3 0x06000000 /* Select interpolation ROM 3 */#define CCCA_INTERPROM_4 0x08000000 /* Select interpolation ROM 4 */#define CCCA_INTERPROM_5 0x0a000000 /* Select interpolation ROM 5 */#define CCCA_INTERPROM_6 0x0c000000 /* Select interpolation ROM 6 */#define CCCA_INTERPROM_7 0x0e000000 /* Select interpolation ROM 7 */#define CCCA_8BITSELECT 0x01000000 /* 1 = Sound memory for this channel uses 8-bit samples */#define CCCA_CURRADDR_MASK 0x00ffffff /* Current address of the selected channel */#define CCCA_CURRADDR 0x18000008#define CCR 0x09 /* Cache control register */#define CCR_CACHEINVALIDSIZE 0x07190009#define CCR_CACHEINVALIDSIZE_MASK 0xfe000000 /* Number of invalid samples cache for this channel */#define CCR_CACHELOOPFLAG 0x01000000 /* 1 = Cache has a loop service pending */#define CCR_INTERLEAVEDSAMPLES 0x00800000 /* 1 = A cache service will fetch interleaved samples */#define CCR_WORDSIZEDSAMPLES 0x00400000 /* 1 = A cache service will fetch word sized samples */#define CCR_READADDRESS 0x06100009#define CCR_READADDRESS_MASK 0x003f0000 /* Location of cache just beyond current cache service */#define CCR_LOOPINVALSIZE 0x0000fe00 /* Number of invalid samples in cache prior to loop */ /* NOTE: This is valid only if CACHELOOPFLAG is set */#define CCR_LOOPFLAG 0x00000100 /* Set for a single sample period when a loop occurs */#define CCR_CACHELOOPADDRHI 0x000000ff /* DSL_LOOPSTARTADDR's hi byte if CACHELOOPFLAG is set */#define CLP 0x0a /* Cache loop register (valid if CCR_CACHELOOPFLAG = 1) */ /* NOTE: This register is normally not used */#define CLP_CACHELOOPADDR 0x0000ffff /* Cache loop address (DSL_LOOPSTARTADDR [0..15]) */#define FXRT 0x0b /* Effects send routing register */ /* NOTE: It is illegal to assign the same routing to */ /* two effects sends. */#define FXRT_CHANNELA 0x000f0000 /* Effects send bus number for channel's effects send A */#define FXRT_CHANNELB 0x00f00000 /* Effects send bus number for channel's effects send B */#define FXRT_CHANNELC 0x0f000000 /* Effects send bus number for channel's effects send C */#define FXRT_CHANNELD 0xf0000000 /* Effects send bus number for channel's effects send D */#define A_HR 0x0b /* High Resolution. 24bit playback from host to DSP. */#define MAPA 0x0c /* Cache map A */#define MAPB 0x0d /* Cache map B */#define MAP_PTE_MASK 0xffffe000 /* The 19 MSBs of the PTE indexed by the PTI */#define MAP_PTI_MASK 0x00001fff /* The 13 bit index to one of the 8192 PTE dwords *//* 0x0e, 0x0f: Not used */#define ENVVOL 0x10 /* Volume envelope register */#define ENVVOL_MASK 0x0000ffff /* Current value of volume envelope state variable */ /* 0x8000-n == 666*n usec delay */#define ATKHLDV 0x11 /* Volume envelope hold and attack register */#define ATKHLDV_PHASE0 0x00008000 /* 0 = Begin attack phase */#define ATKHLDV_HOLDTIME_MASK 0x00007f00 /* Envelope hold time (127-n == n*88.2msec) */#define ATKHLDV_ATTACKTIME_MASK 0x0000007f /* Envelope attack time, log encoded */ /* 0 = infinite, 1 = 10.9msec, ... 0x7f = 5.5msec */#define DCYSUSV 0x12 /* Volume envelope sustain and decay register */#define DCYSUSV_PHASE1_MASK 0x00008000 /* 0 = Begin attack phase, 1 = begin release phase */#define DCYSUSV_SUSTAINLEVEL_MASK 0x00007f00 /* 127 = full, 0 = off, 0.75dB increments */#define DCYSUSV_CHANNELENABLE_MASK 0x00000080 /* 1 = Inhibit envelope engine from writing values in */ /* this channel and from writing to pitch, filter and */ /* volume targets. */#define DCYSUSV_DECAYTIME_MASK 0x0000007f /* Volume envelope decay time, log encoded */ /* 0 = 43.7msec, 1 = 21.8msec, 0x7f = 22msec */#define LFOVAL1 0x13 /* Modulation LFO value */#define LFOVAL_MASK 0x0000ffff /* Current value of modulation LFO state variable */ /* 0x8000-n == 666*n usec delay */#define ENVVAL 0x14 /* Modulation envelope register */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -