* Currently the SSI263 thread is disabled (not even initialized in MB_DSInit()
* Do we need this stuff? Methinks we do, yet we don't have a testcase of
needing it (MB C in 4 & 5 --or-- Phasor in 4 works fine with U5) Wtf?
* soundcore-openal.c : Get the OpenAL state only right after queueing buffer (and restart OpenAL if needed)
* soundcore-openal.c : Handle buffer underruns
* elsewhere : No longer call DSZero...
* this allows for better latency with the 22050Hz sample rate
* keep the mockingboard at the same buffersize to prevent underruns (latency handled differently there)
* Now using OpenAL as the main backend, ALSA has been deprecated...
* soundcore-openal.[hc] - OpenAL sound output for emulator
* alhelpers.[hc] - OpenAL suport files
* mockingboard.[hc] , AY8910.[hc] , SSI263Phonemes.h - Mockingboard support ported from AppleWin ...
This is part 1 of 2
* Proper emulator timing is critical for emulating the Apple2 speaker with a
square wave on a modern soundcard. The AppleWin sources provided
reference, inspiration, and source for both timing and speaker emulation
code.
* cpu.S, cpu.h, timing.c : OK so I flip-flopped quite a bit here on how best
to do proper emulator timing, but the previous spinloop implementation was
not one of my more enlightened decisions :P ... cpu/power consumption
nightmare ...
* ds-shim.h, win-shim.h -- Shims for Windows-isms and DirectSound-isms. I
assume these will eventually be refactored away...
* soundcore.[hc], speaker.[hc] -- Directly ported from a recent version of
AppleWin. Everything I've added should be braced with #ifdef APPLE2IX.
* soundcore-alsa.[hc] -- An ALSA backend using mmap'ed soundcard access.
WARN: this is still a WIP and untested. Instead of nanosleep() the cpu thread
now uses an adaptive spinloop. This better emulates the actual apple //e speed
in preparation to do near-realtime audio. The drawback is that the cpu thread
is pegged at 100% usage.