A small AWE32 fix from JosepMa.
This commit is contained in:
@@ -1028,8 +1028,15 @@ void emu8k_outw(uint16_t addr, uint16_t val, void *p)
|
|||||||
int old_on=emu8k->voice[emu8k->cur_voice].env_engine_on;
|
int old_on=emu8k->voice[emu8k->cur_voice].env_engine_on;
|
||||||
emu8k->voice[emu8k->cur_voice].env_engine_on = DCYSUSV_GENERATOR_ENGINE_ON(val);
|
emu8k->voice[emu8k->cur_voice].env_engine_on = DCYSUSV_GENERATOR_ENGINE_ON(val);
|
||||||
|
|
||||||
if (old_on != emu8k->voice[emu8k->cur_voice].env_engine_on)
|
if (emu8k->voice[emu8k->cur_voice].env_engine_on &&
|
||||||
{
|
old_on != emu8k->voice[emu8k->cur_voice].env_engine_on) {
|
||||||
|
if (emu8k->hwcf3 != 0x04 && emu8k->cur_voice == 31)
|
||||||
|
{
|
||||||
|
/* This is a hack for some programs like Doom or cubic player 1.7 that don't initialize
|
||||||
|
the hwcfg and init registers (doom does not init the card at all. only tests the cfg registers) */
|
||||||
|
emu8k->hwcf3 = 0x04;
|
||||||
|
}
|
||||||
|
|
||||||
/* reset lfos. */
|
/* reset lfos. */
|
||||||
emu8k->voice[emu8k->cur_voice].lfo1_count.addr = 0;
|
emu8k->voice[emu8k->cur_voice].lfo1_count.addr = 0;
|
||||||
emu8k->voice[emu8k->cur_voice].lfo2_count.addr = 0;
|
emu8k->voice[emu8k->cur_voice].lfo2_count.addr = 0;
|
||||||
@@ -2071,7 +2078,7 @@ I've recopilated these sentences to get an idea of how to loop
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Update EMU voice registers. */
|
/* Update EMU voice registers. */
|
||||||
emu_voice->ccca = emu_voice->ccca_qcontrol | emu_voice->addr.int_address;
|
emu_voice->ccca = (((uint32_t)emu_voice->ccca_qcontrol) << 24) | emu_voice->addr.int_address;
|
||||||
emu_voice->cpf_curr_frac_addr = emu_voice->addr.fract_address;
|
emu_voice->cpf_curr_frac_addr = emu_voice->addr.fract_address;
|
||||||
|
|
||||||
if ( emu_voice->cvcf_curr_volume != older[c]) {
|
if ( emu_voice->cvcf_curr_volume != older[c]) {
|
||||||
@@ -2084,7 +2091,7 @@ I've recopilated these sentences to get an idea of how to loop
|
|||||||
buf = &emu8k->buffer[emu8k->pos*2];
|
buf = &emu8k->buffer[emu8k->pos*2];
|
||||||
emu8k_work_reverb(&emu8k->reverb_in_buffer[emu8k->pos], buf, &emu8k->reverb_engine, new_pos-emu8k->pos);
|
emu8k_work_reverb(&emu8k->reverb_in_buffer[emu8k->pos], buf, &emu8k->reverb_engine, new_pos-emu8k->pos);
|
||||||
emu8k_work_chorus(&emu8k->chorus_in_buffer[emu8k->pos], buf, &emu8k->chorus_engine, new_pos-emu8k->pos);
|
emu8k_work_chorus(&emu8k->chorus_in_buffer[emu8k->pos], buf, &emu8k->chorus_engine, new_pos-emu8k->pos);
|
||||||
emu8k_work_eq(&emu8k->chorus_in_buffer[emu8k->pos], new_pos-emu8k->pos);
|
emu8k_work_eq(buf, new_pos-emu8k->pos);
|
||||||
|
|
||||||
/* Clip signal */
|
/* Clip signal */
|
||||||
for (pos = emu8k->pos; pos < new_pos; pos++)
|
for (pos = emu8k->pos; pos < new_pos; pos++)
|
||||||
|
|||||||
Reference in New Issue
Block a user