summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JAudio2/JASBasicBank.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/JSystem/src/JAudio2/JASBasicBank.cpp')
-rw-r--r--libs/JSystem/src/JAudio2/JASBasicBank.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/libs/JSystem/src/JAudio2/JASBasicBank.cpp b/libs/JSystem/src/JAudio2/JASBasicBank.cpp
new file mode 100644
index 0000000000..510d7a718d
--- /dev/null
+++ b/libs/JSystem/src/JAudio2/JASBasicBank.cpp
@@ -0,0 +1,49 @@
+#include "JSystem/JSystem.h" // IWYU pragma: keep
+
+#include "JSystem/JAudio2/JASBasicBank.h"
+#include "JSystem/JAudio2/JASCalc.h"
+
+JASBasicBank::JASBasicBank() {
+ mInstTable = NULL;
+ mInstNumMax = 0;
+}
+
+void JASBasicBank::newInstTable(u8 num, JKRHeap* heap) {
+ if (num != 0) {
+ JUT_ASSERT(31, num <= JASBank::PRG_OSC);
+ mInstNumMax = num;
+ mInstTable = new (heap, 0) JASInst*[mInstNumMax];
+ JASCalc::bzero(mInstTable, mInstNumMax * 4);
+ }
+}
+
+bool JASBasicBank::getInstParam(int prg_no, int param_1, int param_2,
+ JASInstParam* o_param) const {
+ JASInst* inst = getInst(prg_no);
+ if (inst == NULL) {
+ return NULL;
+ }
+ return inst->getParam(param_1, param_2, o_param);
+}
+
+void JASBasicBank::setInst(int prg_no, JASInst* inst) {
+ if (mInstTable != NULL) {
+ JUT_ASSERT(50, prg_no < mInstNumMax);
+ JUT_ASSERT(54, prg_no >= 0);
+ JUT_ASSERT(56, mInstTable[prg_no] == 0);
+ mInstTable[prg_no] = inst;
+ }
+}
+
+JASInst* JASBasicBank::getInst(int prg_no) const {
+ if (prg_no < 0) {
+ return NULL;
+ }
+ if (prg_no >= mInstNumMax) {
+ return NULL;
+ }
+ if (mInstTable == NULL) {
+ return NULL;
+ }
+ return mInstTable[prg_no];
+}