public uint __sceSasInit(uint SasCorePointer, int GrainSamples, int MaxVoices, OutputMode OutputMode, int SampleRate)
{
if (SampleRate != 44100)
{
throw (new SceKernelException(SceKernelErrors.ERROR_SAS_INVALID_SAMPLE_RATE));
}
CheckGrains(GrainSamples);
if (MaxVoices < 1 || MaxVoices > PSP_SAS_VOICES_MAX)
{
throw(new SceKernelException(SceKernelErrors.ERROR_SAS_INVALID_MAX_VOICES));
}
if (OutputMode != sc_sascore.OutputMode.PSP_SAS_OUTPUTMODE_STEREO && OutputMode != sc_sascore.OutputMode.PSP_SAS_OUTPUTMODE_MULTICHANNEL)
{
throw (new SceKernelException(SceKernelErrors.ERROR_SAS_INVALID_OUTPUT_MODE));
}
var SasCore = GetSasCore(SasCorePointer, CreateIfNotExists: true);
{
SasCore.Initialized = true;
SasCore.GrainSamples = GrainSamples;
SasCore.MaxVoices = MaxVoices;
SasCore.OutputMode = OutputMode;
SasCore.SampleRate = SampleRate;
}
BufferTemp = new StereoIntSoundSample[SasCore.GrainSamples * 2];
BufferShort = new StereoShortSoundSample[SasCore.GrainSamples * 2];
MixBufferShort = new StereoShortSoundSample[SasCore.GrainSamples * 2];
return 0;
}