Sound Blaster improvements :

- Implemented audio recording on SB16 & AWE32 (MIDI only)
- Mixer improvements
- SB 2.0 CD mixer can be emulated
- DSP tweaks, mainly for SB Pro. Implemented speaker on/off and limited high speed DMA to SB 2.0 & Pro
- A few other things
Patch from JosepMa.
This commit is contained in:
SarahW 2017-09-09 14:58:07 +01:00
commit 4ca6d67f87
5 changed files with 1188 additions and 297 deletions

View file

@ -1396,8 +1396,8 @@ void emu8k_outw(uint16_t addr, uint16_t val, void *p)
if ((val&0xFF) == 0 && the_voice->cvcf_curr_volume == 0 && the_voice->vtft_vol_target == 0
&& the_voice->dcysusv == 0x80 && the_voice->ip == 0)
{
// Patch to avoid some clicking noises with Impulse tracker or other software that sets different values to 0
// to set noteoff, but here, 0 means no attenuation = full volume.
// Patch to avoid some clicking noises with Impulse tracker or other software that sets
// different values to 0 to set noteoff, but here, 0 means no attenuation = full volume.
return;
}
the_voice->ifatn = val;
@ -2100,7 +2100,7 @@ I've recopilated these sentences to get an idea of how to loop
emu8k->pos = new_pos;
}
/* onboard_ram in kilobytes */
void emu8k_init(emu8k_t *emu8k, int onboard_ram)
void emu8k_init(emu8k_t *emu8k, uint16_t emu_addr, int onboard_ram)
{
uint32_t const BLOCK_SIZE_WORDS = 0x10000;
FILE *f;
@ -2160,9 +2160,9 @@ void emu8k_init(emu8k_t *emu8k, int onboard_ram)
}
io_sethandler(0x0620, 0x0004, emu8k_inb, emu8k_inw, NULL, emu8k_outb, emu8k_outw, NULL, emu8k);
io_sethandler(0x0a20, 0x0004, emu8k_inb, emu8k_inw, NULL, emu8k_outb, emu8k_outw, NULL, emu8k);
io_sethandler(0x0e20, 0x0004, emu8k_inb, emu8k_inw, NULL, emu8k_outb, emu8k_outw, NULL, emu8k);
io_sethandler(emu_addr, 0x0004, emu8k_inb, emu8k_inw, NULL, emu8k_outb, emu8k_outw, NULL, emu8k);
io_sethandler(emu_addr+0x400, 0x0004, emu8k_inb, emu8k_inw, NULL, emu8k_outb, emu8k_outw, NULL, emu8k);
io_sethandler(emu_addr+0x800, 0x0004, emu8k_inb, emu8k_inw, NULL, emu8k_outb, emu8k_outw, NULL, emu8k);
/*Create frequency table. (Convert initial pitch register value to a linear speed change)
* The input is encoded such as 0xe000 is center note (no pitch shift)