summaryrefslogtreecommitdiff
path: root/src/JSystem/JAudio/JASBasicInst.cpp
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2023-11-08 00:41:29 -0800
committerJasper St. Pierre <jstpierre@mecheye.net>2023-11-08 00:41:29 -0800
commit47303cd4b7718d95c36fad9718ce3f65f84d87df (patch)
treec10f090ea1dce4fb79f39a6c2e545aa5a8282fa6 /src/JSystem/JAudio/JASBasicInst.cpp
parent044fec8706f7e480deb085482dcc1f9c23ddcee2 (diff)
JAS work
Diffstat (limited to 'src/JSystem/JAudio/JASBasicInst.cpp')
-rw-r--r--src/JSystem/JAudio/JASBasicInst.cpp97
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];
}