PCem
changeset 80:bc749e3a164e
SB16 input and output share the same sampling rate. Fixes Fast Tracker 2.
| author | TomW |
|---|---|
| date | Thu Mar 06 18:01:11 2014 +0000 |
| parents | 6440ce9ca446 |
| children | c63d59bbff1e |
| files | src/sound_sb_dsp.c |
| diffstat | 1 files changed, 7 insertions(+), 10 deletions(-) [+] |
line diff
1.1 --- a/src/sound_sb_dsp.c Wed Mar 05 19:51:23 2014 +0000 1.2 +++ b/src/sound_sb_dsp.c Thu Mar 06 18:01:11 2014 +0000 1.3 @@ -318,21 +318,18 @@ 1.4 dsp->sblatcho = dsp->sblatchi = TIMER_USEC * (256 - dsp->sb_data[0]); 1.5 temp = 256 - dsp->sb_data[0]; 1.6 temp = 1000000 / temp; 1.7 -// printf("Sample rate - %ihz (%i)\n",temp, sblatcho); 1.8 +// pclog("Sample rate - %ihz (%i)\n",temp, dsp->sblatcho); 1.9 dsp->sb_freq = temp; 1.10 break; 1.11 case 0x41: /*Set output sampling rate*/ 1.12 + case 0x42: /*Set input sampling rate*/ 1.13 if (dsp->sb_type < SB16) break; 1.14 dsp->sblatcho = (int)(TIMER_USEC * (1000000.0f / (float)(dsp->sb_data[1] + (dsp->sb_data[0] << 8)))); 1.15 -// printf("Sample rate - %ihz (%i)\n",sb_data[1]+(sb_data[0]<<8), sblatcho); 1.16 +// pclog("Sample rate - %ihz (%i)\n",dsp->sb_data[1]+(dsp->sb_data[0]<<8), dsp->sblatcho); 1.17 dsp->sb_freq = dsp->sb_data[1] + (dsp->sb_data[0] << 8); 1.18 dsp->sb_timeo = 256 + dsp->sb_freq; 1.19 - break; 1.20 - case 0x42: /*Set input sampling rate*/ 1.21 - if (dsp->sb_type < SB16) break; 1.22 - dsp->sblatchi = (int)(TIMER_USEC * (1000000.0f / (float)(dsp->sb_data[1] + (dsp->sb_data[0] << 8)))); 1.23 -// printf("iample rate - %ihz\n",sb_data[1]+(sb_data[0]<<8)); 1.24 - dsp->sb_timei = 256 + dsp->sb_data[1] + (dsp->sb_data[0] << 8); 1.25 + dsp->sblatchi = dsp->sblatcho; 1.26 + dsp->sb_timei = dsp->sb_timeo; 1.27 break; 1.28 case 0x48: /*Set DSP block transfer size*/ 1.29 dsp->sb_8_autolen = dsp->sb_data[0] + (dsp->sb_data[1] << 8); 1.30 @@ -516,7 +513,7 @@ 1.31 void sb_write(uint16_t a, uint8_t v, void *priv) 1.32 { 1.33 sb_dsp_t *dsp = (sb_dsp_t *)priv; 1.34 -// printf("sb_write : Write soundblaster %04X %02X %04X:%04X %02X\n",a,v,CS,pc,dsp->sb_command); 1.35 +// pclog("sb_write : Write soundblaster %04X %02X %04X:%04X %02X\n",a,v,CS,pc,dsp->sb_command); 1.36 switch (a&0xF) 1.37 { 1.38 case 6: /*Reset*/ 1.39 @@ -811,7 +808,7 @@ 1.40 1.41 if (dsp->sb_16_length < 0) 1.42 { 1.43 -// pclog("16DMA over %i\n",sb_16_autoinit); 1.44 +// pclog("16DMA over %i\n",dsp->sb_16_autoinit); 1.45 if (dsp->sb_16_autoinit) dsp->sb_16_length = dsp->sb_16_autolen; 1.46 else dsp->sb_16_enable = dsp->sbenable = 0; 1.47 sb_irq(dsp, 0);
