void opl3_write(uint16_t a, uint8_t v, void *priv) { opl_t *opl = (opl_t *)priv; opl3_update2(opl); opl_write(0, a, v); }
uint8_t opl3_read(uint16_t a, void *priv) { opl_t *opl = (opl_t *)priv; cycles -= ISA_CYCLES(8); opl3_update2(opl); return opl_read(0, a); }
uint8_t opl3_read(uint16_t a, void *priv) { opl_t *opl = (opl_t *)priv; cycles -= (int)(isa_timing * 8); opl3_update2(opl); return opl_read(0, a); }
static void wss_get_buffer(int16_t *buffer, int len, void *p) { wss_t *wss = (wss_t *)p; int c; opl3_update2(&wss->opl); ad1848_update(&wss->ad1848); for (c = 0; c < len * 2; c++) { buffer[c] += wss->opl.buffer[c]; buffer[c] += (wss->ad1848.buffer[c] / 2); } wss->opl.pos = 0; wss->ad1848.pos = 0; }
void pas16_get_buffer(int32_t *buffer, int len, void *p) { pas16_t *pas16 = (pas16_t *)p; int c; opl3_update2(&pas16->opl); sb_dsp_update(&pas16->dsp); pas16_update(pas16); for (c = 0; c < len * 2; c++) { buffer[c] += pas16->opl.buffer[c]; buffer[c] += (int16_t)(sb_iir(c & 1, (float)pas16->dsp.buffer[c]) / 1.3) / 2; buffer[c] += (pas16->pcm_buffer[c & 1][c >> 1] / 2); } pas16->pos = 0; pas16->opl.pos = 0; pas16->dsp.pos = 0; }