Been a little bit lax with the updates, but I am going to put that down to there not being much to write. Although progress and changes have been made to my code.
I have moved the mixing of 4 channels of 8bit audio over to the DSP, as well as the output buffer into it’s cache RAM. I believe I know what the distortion is now, looks like the output is missing samples for short periods, I suspect this is either the CPUs fighting over RAM or catching each other up. The actual render code is working as intended, I took some dumps from RAM of it’s output, no distortion before playback, distortion added after playback.
Moving to the RISC did highlight a bug that had me scratching my head. I had erroneously operated the interrupt latches within the DSP, and hence not cleared the correct one, unbeknown to me this was preventing the DSPs main loop from running, a main loop that accessed main RAM to count a fair amount.. so when I fixed the latches, the DSP went on a mad bender of RAM access, almost halting the 68K from running at all. Once fixed all ran as I had hoped. Alas the distortion persisted, but the new changes have reduced the amount of time the 68K spends on the job, probably now down to around 5-10% CPU utilization on the 68K, amazing what shaving a few instructions from within a loop will do 🙂
Once I have conquered the distortion issue I will focus more on getting four channels working and playing through a whole module, rather than looping a single channel. Tonight is the Computer club at The Lass, so no code tonight, but hopefully the day off tomorrow will have plenty of coding time in it 🙂