More small pieces of ESS emulation
This commit is contained in:
@@ -141,6 +141,7 @@ typedef struct sb_dsp_t {
|
|||||||
uint8_t azt_eeprom[AZTECH_EEPROM_SIZE]; /* the eeprom in the Aztech cards is attached to the DSP */
|
uint8_t azt_eeprom[AZTECH_EEPROM_SIZE]; /* the eeprom in the Aztech cards is attached to the DSP */
|
||||||
|
|
||||||
uint8_t ess_regs[256]; /* ESS registers. */
|
uint8_t ess_regs[256]; /* ESS registers. */
|
||||||
|
uint8_t ess_playback_mode;
|
||||||
|
|
||||||
mpu_t *mpu;
|
mpu_t *mpu;
|
||||||
} sb_dsp_t;
|
} sb_dsp_t;
|
||||||
|
@@ -1332,6 +1332,15 @@ sb_dsp_dma_attach(sb_dsp_t *dsp,
|
|||||||
dsp->dma_priv = priv;
|
dsp->dma_priv = priv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
sb_ess_finish_dma(sb_dsp_t *dsp)
|
||||||
|
{
|
||||||
|
if (!dsp->ess_playback_mode)
|
||||||
|
return;
|
||||||
|
ESSreg(0xB8) &= ~0x01;
|
||||||
|
dma_set_drq(dsp->sb_8_dmanum, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pollsb(void *priv)
|
pollsb(void *priv)
|
||||||
{
|
{
|
||||||
@@ -1530,6 +1539,7 @@ pollsb(void *priv)
|
|||||||
else {
|
else {
|
||||||
dsp->sb_8_enable = 0;
|
dsp->sb_8_enable = 0;
|
||||||
timer_disable(&dsp->output_timer);
|
timer_disable(&dsp->output_timer);
|
||||||
|
sb_ess_finish_dma(dsp);
|
||||||
}
|
}
|
||||||
sb_irq(dsp, 1);
|
sb_irq(dsp, 1);
|
||||||
}
|
}
|
||||||
@@ -1582,6 +1592,7 @@ pollsb(void *priv)
|
|||||||
else {
|
else {
|
||||||
dsp->sb_16_enable = 0;
|
dsp->sb_16_enable = 0;
|
||||||
timer_disable(&dsp->output_timer);
|
timer_disable(&dsp->output_timer);
|
||||||
|
sb_ess_finish_dma(dsp);
|
||||||
}
|
}
|
||||||
sb_irq(dsp, 0);
|
sb_irq(dsp, 0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user