and Monday is a good follow up day
Few more things to note.
– bits $40 set (volume bits irrelevant). Will not update waveform memory. Waveform memory pointer is reset to $00. No sound is outputted when writing to $806.
– bits $C0 set (volume bits relevant to output). Will not update waveform memory. Waveform memory pointer is reset to $00. Sound is immediately output when writing to $806. Change in volume bits causes last $806 write to be output with new volume level.
– bits $80 set (volume bits relevant to output). Writes to $806 will update current waveform memory. Waveform pointer is not incremented upon writes to $806. Writes to $806 immediately get output (no mixing). Changing volume bits causes last sample from waveform memory to be re-output (if playback speed is slow enough) with new volume level.
– Bits $1f (volume bits). Changes to volume level are buffered (single buffer). Contents of buffer are applied to new samples on the DAC at ~1747Hz. Any faster change will be ignored and the last change will show up/take effect. Left and Right channel waveforms are also out of phase from each other (about 256 cpu cycles).
SGX and PCE differences:
– $9f->$5f causes a spike on the PCE. On SGX, it doesn’t
– Volume change (any volume port). PCE: large differences cause a DC offset with a slow return to zero. Polarity direction of the spike is relative to the direction of the volume change. SGX: same, but the spike is very small in comparison.
– Waveform output. SGX is inverted in comparison to the PCE (might explain why Ootake does inverted output. Since the Coregrafx 1 (not model 2) also uses the 6280A sound chip revision like the SGX and Ki used that as a test board IIRC).
Note: Doing $df->$9f (volume bits are irrelevant) causes a max amplitude sample to be output before the channel period system starts up and updates the DAC. This isn’t a ‘spike’ like the volume DC offset issues. Whatever sample value written to DDA port prior seems to have no effect on this. And it happens on both the 6280 and 6280A.