diff options
| author | Jasper St. Pierre <jstpierre@mecheye.net> | 2023-11-08 00:41:29 -0800 |
|---|---|---|
| committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2023-11-08 00:41:29 -0800 |
| commit | 47303cd4b7718d95c36fad9718ce3f65f84d87df (patch) | |
| tree | c10f090ea1dce4fb79f39a6c2e545aa5a8282fa6 /src/JSystem/JAudio/JASBasicInst.cpp | |
| parent | 044fec8706f7e480deb085482dcc1f9c23ddcee2 (diff) | |
JAS work
Diffstat (limited to 'src/JSystem/JAudio/JASBasicInst.cpp')
| -rw-r--r-- | src/JSystem/JAudio/JASBasicInst.cpp | 97 |
1 files changed, 51 insertions, 46 deletions
diff --git a/src/JSystem/JAudio/JASBasicInst.cpp b/src/JSystem/JAudio/JASBasicInst.cpp index dac876e3..f004afd5 100644 --- a/src/JSystem/JAudio/JASBasicInst.cpp +++ b/src/JSystem/JAudio/JASBasicInst.cpp @@ -18,7 +18,7 @@ JASystem::TBasicInst::TBasicInst() { mEffectCount = 0; mOsc = NULL; mOscCount = 0; - field_0x1c = 0; + mKeyRegionCount = 0; mKeymap = NULL; } @@ -30,82 +30,87 @@ JASystem::TBasicInst::~TBasicInst() { } /* 80284914-80284B4C .text getParam__Q28JASystem10TBasicInstCFiiPQ28JASystem10TInstParam */ -bool JASystem::TBasicInst::getParam(int param_1, int param_2, TInstParam* param_3) const { +bool JASystem::TBasicInst::getParam(int key, int velo, TInstParam* param) const { /* Nonmatching */ - param_3->field_0x0 = 0; - param_3->field_0x38 = 0; - param_3->field_0x8 = mOsc; - param_3->field_0xc = mOscCount; - param_3->field_0x10 *= field_0x4; - param_3->field_0x14 *= field_0x8; + param->field_0x0 = 0; + param->field_0x38 = 0; + param->field_0x8 = mOsc; + param->field_0xc = mOscCount; + param->field_0x10 *= field_0x4; + param->field_0x14 *= field_0x8; for (int i = 0; i < mEffectCount; i++) { TInstEffect* effect = mEffect[i]; if (!effect) { continue; } - f32 y = effect->getY(param_1, param_2); + f32 y = effect->getY(key, velo); switch (effect->mTarget) { case 0: - param_3->field_0x18 *= y; + param->field_0x18 *= y; break; case 1: - param_3->field_0x1c *= y; + param->field_0x1c *= y; break; case 2: - param_3->field_0x2c += y - 0.5; + param->field_0x2c += y - 0.5; break; case 3: - param_3->field_0x30 += y; + param->field_0x30 += y; break; case 4: - param_3->field_0x34 += y; + param->field_0x34 += y; break; default: JUT_ASSERT(93, 0); } } - TKeymap* keymap = NULL; - for (int i = 0; i < field_0x1c; i++) { + const TKeymap* keymap = NULL; + for (int i = 0; i < mKeyRegionCount; i++) { keymap = &mKeymap[i]; - if (param_1 <= keymap->field_0x0) { - param_3->field_0x3c = i; + if (key <= keymap->mBaseKey) { + param->field_0x3c = i; break; } } if (!keymap) { return false; } - for (int i = 0; i < keymap->field_0x4; i++) { - void* region = keymap->getVeloRegion(i); - // TODO + for (int i = 0; i < keymap->mVeloRegionCount; i++) { + const JASystem::TBasicInst::TVeloRegion * region = keymap->getVeloRegion(i); + if (velo <= region->mBaseVel) { + param->field_0x10 *= region->field_0x08; + param->field_0x14 *= region->field_0x0c; + param->field_0x4 = region->field_0x04; + return true; + } } return false; } /* 80284B4C-80284B54 .text getKeymapIndex__Q28JASystem10TBasicInstCFi */ -int JASystem::TBasicInst::getKeymapIndex(int param_1) const { - return param_1; +int JASystem::TBasicInst::getKeymapIndex(int index) const { + return index; } /* 80284B54-80284C10 .text setKeyRegionCount__Q28JASystem10TBasicInstFUl */ -void JASystem::TBasicInst::setKeyRegionCount(u32 param_1) { +void JASystem::TBasicInst::setKeyRegionCount(u32 num) { delete[] mKeymap; - mKeymap = new (TBank::getCurrentHeap(), 0) TKeymap[param_1]; + mKeymap = new (TBank::getCurrentHeap(), 0) TKeymap[num]; JUT_ASSERT(140, mKeymap != 0); - field_0x1c = param_1; + mKeyRegionCount = num; } /* 80284C10-80284CC4 .text setEffectCount__Q28JASystem10TBasicInstFUl */ -void JASystem::TBasicInst::setEffectCount(u32 param_1) { +void JASystem::TBasicInst::setEffectCount(u32 num) { delete[] mEffect; - mEffectCount = param_1; - if (param_1 == 0) { + mEffectCount = num; + if (num == 0) { mEffect = NULL; return; } - mEffect = new (TBank::getCurrentHeap(), 0) TInstEffect*[param_1]; + mEffect = new (TBank::getCurrentHeap(), 0) TInstEffect*[num]; JUT_ASSERT(157, mEffect != 0); - Calc::bzero(mEffect, param_1 * 4); + Calc::bzero(mEffect, num * 4); } /* 80284CC4-80284D7C .text setEffect__Q28JASystem10TBasicInstFiPQ28JASystem11TInstEffect */ @@ -116,16 +121,16 @@ void JASystem::TBasicInst::setEffect(int index, TInstEffect* effect) { } /* 80284D7C-80284E30 .text setOscCount__Q28JASystem10TBasicInstFUl */ -void JASystem::TBasicInst::setOscCount(u32 param_1) { +void JASystem::TBasicInst::setOscCount(u32 num) { delete[] mOsc; - mOscCount = param_1; - if (param_1 == 0) { + mOscCount = num; + if (num == 0) { mOsc = NULL; return; } - mOsc = new (TBank::getCurrentHeap(), 0) TOscillator::Osc_*[param_1]; + mOsc = new (TBank::getCurrentHeap(), 0) TOscillator::Osc_*[num]; JUT_ASSERT(193, mOsc != 0); - Calc::bzero(mOsc, param_1 * 4); + Calc::bzero(mOsc, num * 4); } /* 80284E30-80284EE8 .text setOsc__Q28JASystem10TBasicInstFiPQ38JASystem11TOscillator4Osc_ */ @@ -138,7 +143,7 @@ void JASystem::TBasicInst::setOsc(int index, TOscillator::Osc_* osc) { /* 80284EE8-80284F70 .text getKeyRegion__Q28JASystem10TBasicInstFi */ JASystem::TBasicInst::TKeymap* JASystem::TBasicInst::getKeyRegion(int index) { JUT_ASSERT(217, index >= 0); - if (index >= field_0x1c) { + if (index >= mKeyRegionCount) { return NULL; } return &mKeymap[index]; @@ -150,27 +155,27 @@ JASystem::TBasicInst::TKeymap::~TKeymap() { } /* 80284FC4-80285058 .text setVeloRegionCount__Q38JASystem10TBasicInst7TKeymapFUl */ -void JASystem::TBasicInst::TKeymap::setVeloRegionCount(u32 param_1) { +void JASystem::TBasicInst::TKeymap::setVeloRegionCount(u32 num) { delete[] mVelomap; - mVelomap = new (TBank::getCurrentHeap(), 0) u8[param_1 * 16]; + mVelomap = new (TBank::getCurrentHeap(), 0) JASystem::TBasicInst::TVeloRegion[num]; JUT_ASSERT(244, mVelomap != 0); - field_0x4 = param_1; + mVeloRegionCount = num; } /* 80285058-802850E0 .text getVeloRegion__Q38JASystem10TBasicInst7TKeymapFi */ -void* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) { +JASystem::TBasicInst::TVeloRegion* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) { JUT_ASSERT(252, index >= 0); - if (index >= field_0x4) { + if (index >= mVeloRegionCount) { return NULL; } - return (u8*)mVelomap + index * 16; + return &mVelomap[index]; } /* 802850E0-80285168 .text getVeloRegion__Q38JASystem10TBasicInst7TKeymapCFi */ -const void* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) const { +const JASystem::TBasicInst::TVeloRegion* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) const { JUT_ASSERT(261, index >= 0); - if (index >= field_0x4) { + if (index >= mVeloRegionCount) { return NULL; } - return (u8*)mVelomap + index * 16; + return &mVelomap[index]; } |
