mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-10-05 03:47:31 -04:00
Allow audio samples to be played back from anywhere in memory rather than ARAM.
This is accomplished through a new mAramBaseAddress field on the DSP channels, which effectively relocates ARAM for that channel.
This commit is contained in:
@@ -33,7 +33,7 @@ JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8
|
||||
return NULL;
|
||||
}
|
||||
intptr_t wavePtr = waveHandle->getWavePtr();
|
||||
if (!wavePtr) {
|
||||
if (!wavePtr IF_DUSK(&& !waveHandle->getAramBaseAddress())) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -44,6 +44,9 @@ JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8
|
||||
channel->setPriority(param_4);
|
||||
channel->field_0xdc.mWaveInfo = *waveInfo;
|
||||
channel->mWaveAramAddress = wavePtr;
|
||||
#if TARGET_PC
|
||||
channel->mAramBaseAddress = waveHandle->getAramBaseAddress();
|
||||
#endif
|
||||
channel->field_0xdc.mChannelType = stack_60.field_0x1c;
|
||||
channel->setBankDisposeID(param_0);
|
||||
channel->setInitPitch(stack_60.mPitch * (waveInfo->mSampleRate / JASDriver::getDacRate()));
|
||||
|
||||
@@ -26,6 +26,9 @@ JASChannel::JASChannel(Callback i_callback, void* i_callbackData) :
|
||||
mCallback(i_callback),
|
||||
mCallbackData(i_callbackData),
|
||||
mUpdateTimer(0),
|
||||
#if TARGET_PC
|
||||
mAramBaseAddress(nullptr),
|
||||
#endif
|
||||
mBankDisposeID(NULL),
|
||||
mKey(0),
|
||||
mVelocity(0x7f),
|
||||
@@ -256,6 +259,9 @@ s32 JASChannel::initialUpdateDSPChannel(JASDsp::TChannel* i_channel) {
|
||||
switch (field_0xdc.mChannelType) {
|
||||
case 0:
|
||||
i_channel->setWaveInfo(field_0xdc.mWaveInfo, mWaveAramAddress, mSkipSamples);
|
||||
#if TARGET_PC
|
||||
i_channel->mAramBaseAddress = mAramBaseAddress;
|
||||
#endif
|
||||
break;
|
||||
case 2:
|
||||
i_channel->setOscInfo(mOscillatorSomething);
|
||||
|
||||
Reference in New Issue
Block a user