mirror of https://github.com/PrimeDecomp/prime.git
Link snd_synthapi
Former-commit-id: 20cb8ee9ecdd41d276fdb41d2473659b08dd8fcf
This commit is contained in:
parent
09a8bba742
commit
54971c1dcb
|
@ -19325,16 +19325,16 @@ synthGlobalVariable = .bss:0x80550AB4; // type:object size:0x40 scope:global dat
|
||||||
inpAuxB = .bss:0x80550AF4; // type:object size:0x480 scope:global
|
inpAuxB = .bss:0x80550AF4; // type:object size:0x480 scope:global
|
||||||
inpAuxA = .bss:0x80550F74; // type:object size:0x480 scope:global
|
inpAuxA = .bss:0x80550F74; // type:object size:0x480 scope:global
|
||||||
streamInfo = .bss:0x805513F8; // type:object size:0x1900 scope:global
|
streamInfo = .bss:0x805513F8; // type:object size:0x1900 scope:global
|
||||||
dataKeymapTab = .bss:0x80552CF8; // type:object size:0x800 scope:global
|
dataKeymapTab = .bss:0x80552CF8; // type:object size:0x800 scope:local
|
||||||
dataLayerTab = .bss:0x805534F8; // type:object size:0xC00 scope:global
|
dataLayerTab = .bss:0x805534F8; // type:object size:0xC00 scope:local
|
||||||
dataCurveTab = .bss:0x805540F8; // type:object size:0x4000 scope:global
|
dataCurveTab = .bss:0x805540F8; // type:object size:0x4000 scope:local
|
||||||
dataSmpSDirs = .bss:0x805580F8; // type:object size:0x600 scope:global data:4byte
|
dataSmpSDirs = .bss:0x805580F8; // type:object size:0x600 scope:local data:4byte
|
||||||
dataFXGroups = .bss:0x805586F8; // type:object size:0x400 scope:global data:2byte
|
dataFXGroups = .bss:0x805586F8; // type:object size:0x400 scope:local data:2byte
|
||||||
dataMacMaintab = .bss:0x80558AF8; // type:object size:0x800 scope:global data:2byte
|
dataMacMainTab = .bss:0x80558AF8; // type:object size:0x800 scope:local data:2byte
|
||||||
dataMacSubTabmem = .bss:0x805592F8; // type:object size:0x4000 scope:global
|
dataMacSubTabmem = .bss:0x805592F8; // type:object size:0x4000 scope:local
|
||||||
key$731 = .bss:0x8055D2F8; // type:object size:0x20 scope:global data:2byte
|
key$284 = .bss:0x8055D2F8; // type:object size:0x20 scope:local data:2byte
|
||||||
key$493 = .bss:0x8055D318; // type:object size:0xC scope:global
|
key$329 = .bss:0x8055D318; // type:object size:0xC scope:local
|
||||||
key$487 = .bss:0x8055D324; // type:object size:0xC scope:global data:2byte
|
key$341 = .bss:0x8055D324; // type:object size:0xA scope:local data:2byte
|
||||||
newsmp$473 = .bss:0x8055D330; // type:object size:0x20 scope:global data:4byte
|
newsmp$473 = .bss:0x8055D330; // type:object size:0x20 scope:global data:4byte
|
||||||
vidList = .bss:0x8055D350; // type:object size:0x800 scope:local data:4byte
|
vidList = .bss:0x8055D350; // type:object size:0x800 scope:local data:4byte
|
||||||
voicePrioSortVoices = .bss:0x8055DB50; // type:object size:0x100 scope:global
|
voicePrioSortVoices = .bss:0x8055DB50; // type:object size:0x100 scope:global
|
||||||
|
@ -19362,7 +19362,7 @@ aramQueueLo = .bss:0x80566F90; // type:object size:0x284 scope:local
|
||||||
aramQueueHi = .bss:0x80567214; // type:object size:0x284 scope:local
|
aramQueueHi = .bss:0x80567214; // type:object size:0x284 scope:local
|
||||||
aramStreamBuffers = .bss:0x80567498; // type:object size:0x400 scope:local data:4byte
|
aramStreamBuffers = .bss:0x80567498; // type:object size:0x400 scope:local data:4byte
|
||||||
dsp_task = .bss:0x805678A0; // type:object size:0x50 scope:local align:8
|
dsp_task = .bss:0x805678A0; // type:object size:0x50 scope:local align:8
|
||||||
dram_image = .bss:0x80567900; // type:object size:0x2008 scope:local align:32
|
dram_image = .bss:0x80567900; // type:object size:0x2000 scope:local align:32
|
||||||
__block_for_run_callback = .bss:0x80569908; // type:object size:0x30 scope:local
|
__block_for_run_callback = .bss:0x80569908; // type:object size:0x30 scope:local
|
||||||
__block_for_prep_callback = .bss:0x80569938; // type:object size:0x30 scope:local
|
__block_for_prep_callback = .bss:0x80569938; // type:object size:0x30 scope:local
|
||||||
__block_for_stream_status = .bss:0x80569968; // type:object size:0x30 scope:local
|
__block_for_stream_status = .bss:0x80569968; // type:object size:0x30 scope:local
|
||||||
|
@ -22282,27 +22282,26 @@ synthRealTime = .sbss:0x805A9A48; // type:object size:0x8 scope:global data:4byt
|
||||||
nextPublicID = .sbss:0x805A9A50; // type:object size:0x4 scope:local data:4byte
|
nextPublicID = .sbss:0x805A9A50; // type:object size:0x4 scope:local data:4byte
|
||||||
streamCallDelay = .sbss:0x805A9A54; // type:object size:0x1 scope:local data:byte
|
streamCallDelay = .sbss:0x805A9A54; // type:object size:0x1 scope:local data:byte
|
||||||
streamCallCnt = .sbss:0x805A9A55; // type:object size:0x1 scope:local data:byte
|
streamCallCnt = .sbss:0x805A9A55; // type:object size:0x1 scope:local data:byte
|
||||||
result$494 = .sbss:0x805A9A58; // type:object size:0x4 scope:local data:4byte
|
result$330 = .sbss:0x805A9A58; // type:object size:0x4 scope:local data:4byte
|
||||||
result$768 = .sbss:0x805A9A5C; // type:object size:0x4 scope:local data:4byte
|
result$318 = .sbss:0x805A9A5C; // type:object size:0x4 scope:local data:4byte
|
||||||
key$767 = .sbss:0x805A9A60; // type:object size:0x8 scope:local
|
key$317 = .sbss:0x805A9A60; // type:object size:0x8 scope:local
|
||||||
result$760 = .sbss:0x805A9A68; // type:object size:0x4 scope:local data:4byte
|
result$310 = .sbss:0x805A9A68; // type:object size:0x4 scope:local data:4byte
|
||||||
key$759 = .sbss:0x805A9A6C; // type:object size:0x8 scope:local
|
key$309 = .sbss:0x805A9A6C; // type:object size:0x8 scope:local
|
||||||
sheader$733 = .sbss:0x805A9A74; // type:object size:0x4 scope:local data:4byte
|
sheader$286 = .sbss:0x805A9A74; // type:object size:0x4 scope:local data:4byte
|
||||||
result$732 = .sbss:0x805A9A78; // type:object size:0x4 scope:local data:4byte
|
result$285 = .sbss:0x805A9A78; // type:object size:0x4 scope:local data:4byte
|
||||||
result$714 = .sbss:0x805A9A7C; // type:object size:0x4 scope:local data:4byte
|
result$269 = .sbss:0x805A9A7C; // type:object size:0x4 scope:local data:4byte
|
||||||
key$713 = .sbss:0x805A9A80; // type:object size:0x8 scope:local
|
key$268 = .sbss:0x805A9A80; // type:object size:0x8 scope:local
|
||||||
main$712 = .sbss:0x805A9A88; // type:object size:0x4 scope:local data:4byte
|
main$267 = .sbss:0x805A9A88; // type:object size:0x4 scope:local data:4byte
|
||||||
base$711 = .sbss:0x805A9A8C; // type:object size:0x4 scope:local data:4byte
|
base$266 = .sbss:0x805A9A8C; // type:object size:0x4 scope:local data:4byte
|
||||||
dataFXGroupNum = .sbss:0x805A9A90; // type:object size:0x2 scope:local data:2byte
|
dataFXGroupNum = .sbss:0x805A9A90; // type:object size:0x2 scope:local data:2byte
|
||||||
dataMacTotal = .sbss:0x805A9A92; // type:object size:0x2 scope:local data:2byte
|
dataMacTotal = .sbss:0x805A9A92; // type:object size:0x2 scope:local data:2byte
|
||||||
dataLayerNum = .sbss:0x805A9A94; // type:object size:0x2 scope:local data:2byte
|
dataLayerNum = .sbss:0x805A9A94; // type:object size:0x2 scope:local data:2byte
|
||||||
dataKeymapNum = .sbss:0x805A9A96; // type:object size:0x2 scope:local data:2byte
|
dataKeymapNum = .sbss:0x805A9A96; // type:object size:0x2 scope:local data:2byte
|
||||||
dataCurveNum = .sbss:0x805A9A98; // type:object size:0x2 scope:local data:2byte
|
dataCurveNum = .sbss:0x805A9A98; // type:object size:0x2 scope:local data:2byte
|
||||||
dataSmpSDirNum = .sbss:0x805A9A9A; // type:object size:0x6 scope:local data:2byte
|
dataSmpSDirNum = .sbss:0x805A9A9A; // type:object size:0x2 scope:local data:2byte
|
||||||
cstep$1643 = .sbss:0x805A9AA0; // type:object size:0x8 scope:local data:4byte
|
cstep$1643 = .sbss:0x805A9AA0; // type:object size:0x8 scope:local data:4byte
|
||||||
macRealTime = .sbss:0x805A9AA8; // type:object size:0x4 scope:local data:4byte
|
macRealTime = .sbss:0x805A9AA8; // type:object size:0x8 scope:local data:8byte
|
||||||
lbl_805A9AAC = .sbss:0x805A9AAC; // type:object size:0x4 data:4byte
|
macTimeQueueRoot = .sbss:0x805A9AB0; // type:object size:0x4 scope:local
|
||||||
macTimeQueueRoot = .sbss:0x805A9AB0; // type:object size:0x4 scope:local data:4byte
|
|
||||||
macActiveMacroRoot = .sbss:0x805A9AB4; // type:object size:0x4 scope:local data:4byte
|
macActiveMacroRoot = .sbss:0x805A9AB4; // type:object size:0x4 scope:local data:4byte
|
||||||
DebugMacroSteps = .sbss:0x805A9AB8; // type:object size:0x8 scope:local data:byte
|
DebugMacroSteps = .sbss:0x805A9AB8; // type:object size:0x8 scope:local data:byte
|
||||||
vidFree = .sbss:0x805A9AC0; // type:object size:0x4 scope:local data:4byte
|
vidFree = .sbss:0x805A9AC0; // type:object size:0x4 scope:local data:4byte
|
||||||
|
|
16
configure.py
16
configure.py
|
@ -200,7 +200,9 @@ cflags_musyx_debug = [
|
||||||
"-nosyspath",
|
"-nosyspath",
|
||||||
"-i include",
|
"-i include",
|
||||||
"-i libc",
|
"-i libc",
|
||||||
"-g -sym on -D_DEBUG=1",
|
"-g",
|
||||||
|
"-sym on",
|
||||||
|
"-D_DEBUG=1",
|
||||||
"-enum int",
|
"-enum int",
|
||||||
"-D_MATH_INLINE=static",
|
"-D_MATH_INLINE=static",
|
||||||
]
|
]
|
||||||
|
@ -1156,16 +1158,16 @@ config.libs = [
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
MusyX(
|
MusyX(
|
||||||
# debug=True,
|
#debug=True,
|
||||||
# mw_version="GC/1.2.5",
|
#mw_version="GC/1.2.5",
|
||||||
# major=1,
|
#major=1,
|
||||||
# minor=5,
|
#minor=5,
|
||||||
# patch=3,
|
#patch=3,
|
||||||
objects=[
|
objects=[
|
||||||
Object(Matching, "musyx/runtime/seq.c"),
|
Object(Matching, "musyx/runtime/seq.c"),
|
||||||
Object(Matching, "musyx/runtime/synth.c"),
|
Object(Matching, "musyx/runtime/synth.c"),
|
||||||
Object(Matching, "musyx/runtime/seq_api.c"),
|
Object(Matching, "musyx/runtime/seq_api.c"),
|
||||||
Object(NonMatching, "musyx/runtime/snd_synthapi.c"),
|
Object(Matching, "musyx/runtime/snd_synthapi.c"),
|
||||||
Object(NonMatching, "musyx/runtime/stream.c"),
|
Object(NonMatching, "musyx/runtime/stream.c"),
|
||||||
Object(NonMatching, "musyx/runtime/synthdata.c"),
|
Object(NonMatching, "musyx/runtime/synthdata.c"),
|
||||||
Object(NonMatching, "musyx/runtime/synthmacros.c"),
|
Object(NonMatching, "musyx/runtime/synthmacros.c"),
|
||||||
|
|
|
@ -1,21 +1,20 @@
|
||||||
|
|
||||||
#include "musyx/musyx_priv.h"
|
#include "musyx/musyx_priv.h"
|
||||||
|
|
||||||
static u16 dataSmpSDirNum = 0;
|
|
||||||
static SDIR_TAB dataSmpSDirs[128];
|
static SDIR_TAB dataSmpSDirs[128];
|
||||||
static u16 dataCurveNum = 0;
|
static u16 dataSmpSDirNum;
|
||||||
static DATA_TAB dataCurveTab[2048];
|
static DATA_TAB dataCurveTab[2048];
|
||||||
static u16 dataKeymapNum = 0;
|
static u16 dataCurveNum;
|
||||||
static DATA_TAB dataKeymapTab[256];
|
static DATA_TAB dataKeymapTab[256];
|
||||||
static u16 dataLayerNum = 0;
|
static u16 dataKeymapNum;
|
||||||
static LAYER_TAB dataLayerTab[256];
|
static LAYER_TAB dataLayerTab[256];
|
||||||
static u16 dataMacTotal = 0;
|
static u16 dataLayerNum;
|
||||||
static MAC_MAINTAB dataMacMainTab[512];
|
static MAC_MAINTAB dataMacMainTab[512];
|
||||||
static MAC_SUBTAB dataMacSubTabmem[2048];
|
static MAC_SUBTAB dataMacSubTabmem[2048];
|
||||||
static u16 dataFXGroupNum = 0;
|
static u16 dataMacTotal;
|
||||||
static FX_GROUP dataFXGroups[128];
|
static FX_GROUP dataFXGroups[128];
|
||||||
|
static u16 dataFXGroupNum;
|
||||||
|
|
||||||
u32 dataInsertKeymap(u16 cid, void* keymapdata) {
|
bool dataInsertKeymap(u16 cid, void* keymapdata) {
|
||||||
long i; // r31
|
long i; // r31
|
||||||
long j; // r29
|
long j; // r29
|
||||||
hwDisableIrq();
|
hwDisableIrq();
|
||||||
|
@ -32,19 +31,15 @@ u32 dataInsertKeymap(u16 cid, void* keymapdata) {
|
||||||
for (j = dataKeymapNum - 1; j >= i; --j)
|
for (j = dataKeymapNum - 1; j >= i; --j)
|
||||||
dataKeymapTab[j + 1] = dataKeymapTab[j];
|
dataKeymapTab[j + 1] = dataKeymapTab[j];
|
||||||
++dataKeymapNum;
|
++dataKeymapNum;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
hwEnableIrq();
|
hwEnableIrq();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
dataKeymapTab[i].refCount++;
|
dataKeymapTab[i].refCount++;
|
||||||
hwEnableIrq();
|
hwEnableIrq();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (dataKeymapNum < 256) {
|
} else if (dataKeymapNum < 256) {
|
||||||
++dataKeymapNum;
|
++dataKeymapNum;
|
||||||
} else {
|
} else {
|
||||||
|
@ -62,7 +57,7 @@ u32 dataInsertKeymap(u16 cid, void* keymapdata) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataRemoveKeymap(unsigned short sid) {
|
bool dataRemoveKeymap(u16 sid) {
|
||||||
long i; // r31
|
long i; // r31
|
||||||
long j; // r30
|
long j; // r30
|
||||||
|
|
||||||
|
@ -70,17 +65,21 @@ unsigned long dataRemoveKeymap(unsigned short sid) {
|
||||||
for (i = 0; i < dataKeymapNum && dataKeymapTab[i].id != sid; ++i)
|
for (i = 0; i < dataKeymapNum && dataKeymapTab[i].id != sid; ++i)
|
||||||
;
|
;
|
||||||
|
|
||||||
if (i != dataKeymapNum) {
|
if (i != dataKeymapNum && --dataKeymapTab[i].refCount == 0) {
|
||||||
for (j = i + 1; j < dataKeymapNum; j++, i++) {
|
for (j = i + 1; j < dataKeymapNum; j++) {
|
||||||
dataKeymapTab[i] = dataKeymapTab[j];
|
dataKeymapTab[j - 1] = dataKeymapTab[j];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
--dataKeymapNum;
|
||||||
|
hwEnableIrq();
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
hwEnableIrq();
|
hwEnableIrq();
|
||||||
return 1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataInsertLayer(unsigned short cid, void* layerdata, unsigned short size) {
|
bool dataInsertLayer(u16 cid, void* layerdata, u16 size) {
|
||||||
long i; // r31
|
long i; // r31
|
||||||
long j; // r29
|
long j; // r29
|
||||||
|
|
||||||
|
@ -129,12 +128,29 @@ unsigned long dataInsertLayer(unsigned short cid, void* layerdata, unsigned shor
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataRemoveLayer(unsigned short sid) {
|
bool dataRemoveLayer(u16 sid) {
|
||||||
long i; // r31
|
long i; // r31
|
||||||
long j; // r30
|
long j; // r30
|
||||||
|
|
||||||
|
hwDisableIrq();
|
||||||
|
for (i = 0; i < dataLayerNum && dataLayerTab[i].id != sid; ++i)
|
||||||
|
;
|
||||||
|
|
||||||
|
if (i != dataLayerNum && --dataLayerTab[i].refCount == 0) {
|
||||||
|
for (j = i + 1; j < dataLayerNum; j++) {
|
||||||
|
dataLayerTab[j - 1] = dataLayerTab[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
--dataLayerNum;
|
||||||
|
hwEnableIrq();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
hwEnableIrq();
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataInsertCurve(unsigned short cid, void* curvedata) {
|
bool dataInsertCurve(u16 cid, void* curvedata) {
|
||||||
long i; // r31
|
long i; // r31
|
||||||
long j; // r29
|
long j; // r29
|
||||||
|
|
||||||
|
@ -180,64 +196,121 @@ unsigned long dataInsertCurve(unsigned short cid, void* curvedata) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataRemoveCurve(unsigned short sid) {
|
bool dataRemoveCurve(u16 sid) {
|
||||||
long i; // r31
|
long i; // r31
|
||||||
long j; // r30
|
long j; // r30
|
||||||
|
|
||||||
|
hwDisableIrq();
|
||||||
|
for (i = 0; i < dataCurveNum && dataCurveTab[i].id != sid; ++i)
|
||||||
|
;
|
||||||
|
|
||||||
|
if (i != dataCurveNum && --dataCurveTab[i].refCount == 0) {
|
||||||
|
for (j = i + 1; j < dataCurveNum; j++) {
|
||||||
|
dataCurveTab[j - 1] = dataCurveTab[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
--dataCurveNum;
|
||||||
|
hwEnableIrq();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
hwEnableIrq();
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataInsertSDir(struct SDIR_DATA* sdir, void* smp_data) {
|
bool dataInsertSDir(SDIR_DATA* sdir, void* smp_data) {
|
||||||
long i; // r31
|
s32 i; // r31
|
||||||
struct SDIR_DATA* s; // r25
|
SDIR_DATA* s; // r25
|
||||||
unsigned short n; // r27
|
u16 n; // r27
|
||||||
unsigned short j; // r29
|
u16 j; // r29
|
||||||
unsigned short k; // r26
|
u16 k; // r26
|
||||||
|
for (i = 0; i < dataSmpSDirNum && dataSmpSDirs[i].data != sdir; ++i)
|
||||||
|
;
|
||||||
|
|
||||||
|
if (i == dataSmpSDirNum) {
|
||||||
|
if (dataSmpSDirNum < 128) {
|
||||||
|
n = 0;
|
||||||
|
for (s = sdir; s->id != 0xffff; ++s) {
|
||||||
|
++n;
|
||||||
|
}
|
||||||
|
|
||||||
|
hwDisableIrq();
|
||||||
|
|
||||||
|
for (j = 0; j < n; ++j) {
|
||||||
|
for (i = 0; i < dataSmpSDirNum; ++i) {
|
||||||
|
for (k = 0; k < dataSmpSDirs[i].numSmp; ++k) {
|
||||||
|
if (sdir[j].id == dataSmpSDirs[i].data[k].id)
|
||||||
|
goto done_loop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
done_loop:
|
||||||
|
if (i == dataSmpSDirNum) {
|
||||||
|
sdir[j].ref_cnt = 0;
|
||||||
|
} else {
|
||||||
|
sdir[j].ref_cnt = 0xffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
dataSmpSDirs[dataSmpSDirNum].data = sdir;
|
||||||
|
dataSmpSDirs[dataSmpSDirNum].numSmp = n;
|
||||||
|
dataSmpSDirs[dataSmpSDirNum].base = smp_data;
|
||||||
|
++dataSmpSDirNum;
|
||||||
|
hwEnableIrq();
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataRemoveSDir(struct SDIR_DATA* sdir) {
|
bool dataRemoveSDir(struct SDIR_DATA* sdir) {
|
||||||
long i; // r28
|
long i; // r28
|
||||||
long j; // r30
|
long j; // r30
|
||||||
long index; // r27
|
long index; // r27
|
||||||
struct SDIR_DATA* data; // r31
|
struct SDIR_DATA* data; // r31
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataAddSampleReference(unsigned short sid) {
|
bool dataAddSampleReference(u16 sid) {
|
||||||
unsigned long i; // r29
|
u32 i; // r29
|
||||||
struct SAMPLE_HEADER* header; // r1+0xC
|
SAMPLE_HEADER* header; // r1+0xC
|
||||||
struct SDIR_DATA* data; // r30
|
SDIR_DATA* data; // r30
|
||||||
struct SDIR_DATA* sdir; // r31
|
SDIR_DATA* sdir; // r31
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataRemoveSampleReference(unsigned short sid) {
|
bool dataRemoveSampleReference(u16 sid) {
|
||||||
unsigned long i; // r30
|
unsigned long i; // r30
|
||||||
struct SDIR_DATA* sdir; // r31
|
struct SDIR_DATA* sdir; // r31
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataInsertFX(unsigned short gid, struct FX_TAB* fx, unsigned short fxNum) {
|
bool dataInsertFX(u16 gid, struct FX_TAB* fx, u16 fxNum) {
|
||||||
long i; // r31
|
long i; // r31
|
||||||
|
return dataFXGroups[0].gid;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataRemoveFX(unsigned short gid) {
|
bool dataRemoveFX(u16 gid) {
|
||||||
long i; // r31
|
long i; // r31
|
||||||
long j; // r30
|
long j; // r30
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataInsertMacro(unsigned short mid, void* macroaddr) {
|
bool dataInsertMacro(u16 mid, void* macroaddr) {
|
||||||
long main; // r28
|
long main; // r28
|
||||||
long pos; // r29
|
long pos; // r29
|
||||||
long base; // r27
|
long base; // r27
|
||||||
long i; // r31
|
long i; // r31
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long dataRemoveMacro(unsigned short mid) {
|
bool dataRemoveMacro(u16 mid) {
|
||||||
long main; // r29
|
long main; // r29
|
||||||
long base; // r28
|
long base; // r28
|
||||||
long i; // r31
|
long i; // r31
|
||||||
}
|
}
|
||||||
|
|
||||||
long maccmp(void* p1, void* p2) { return ((MAC_SUBTAB*)p1)->id - ((MAC_SUBTAB*)p2)->id; }
|
static s32 maccmp(void* p1, void* p2) { return ((MAC_SUBTAB*)p1)->id - ((MAC_SUBTAB*)p2)->id; }
|
||||||
|
|
||||||
struct MSTEP* dataGetMacro(unsigned short mid) {
|
MSTEP* dataGetMacro(u16 mid) {
|
||||||
static s32 base;
|
static s32 base;
|
||||||
static s32 main;
|
static s32 main;
|
||||||
static MAC_SUBTAB key;
|
static MAC_SUBTAB key;
|
||||||
|
@ -257,11 +330,9 @@ struct MSTEP* dataGetMacro(unsigned short mid) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
long smpcmp(void* p1, void* p2) { return ((SDIR_DATA*)p1)->id - ((SDIR_DATA*)p2)->id; }
|
static s32 smpcmp(void* p1, void* p2) { return ((SDIR_DATA*)p1)->id - ((SDIR_DATA*)p2)->id; }
|
||||||
|
|
||||||
long dataGetSample(unsigned short sid, SAMPLE_INFO* newsmp) {
|
long dataGetSample(u16 sid, SAMPLE_INFO* newsmp) {
|
||||||
static s32 base;
|
|
||||||
static s32 main;
|
|
||||||
static SDIR_DATA key;
|
static SDIR_DATA key;
|
||||||
static SDIR_DATA* result;
|
static SDIR_DATA* result;
|
||||||
static SAMPLE_HEADER* sheader;
|
static SAMPLE_HEADER* sheader;
|
||||||
|
@ -293,33 +364,33 @@ long dataGetSample(unsigned short sid, SAMPLE_INFO* newsmp) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
long curvecmp(void* p1, void* p2) { return ((DATA_TAB*)p1)->id - ((DATA_TAB*)p2)->id; }
|
static s32 curvecmp(void* p1, void* p2) { return ((DATA_TAB*)p1)->id - ((DATA_TAB*)p2)->id; }
|
||||||
|
|
||||||
void* dataGetCurve(unsigned short cid) {
|
void* dataGetCurve(u16 cid) {
|
||||||
static DATA_TAB key;
|
static DATA_TAB key;
|
||||||
static DATA_TAB* result;
|
static DATA_TAB* result;
|
||||||
|
|
||||||
key.id = cid;
|
key.id = cid;
|
||||||
if (result =
|
if (result =
|
||||||
(DATA_TAB*)sndBSearcH(&key, dataCurveTab, dataCurveNum, sizeof(DATA_TAB), curvecmp)) {
|
(DATA_TAB*)sndBSearch(&key, dataCurveTab, dataCurveNum, sizeof(DATA_TAB), curvecmp)) {
|
||||||
return result->data;
|
return result->data;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* dataGetKeymap(unsigned short cid) {
|
void* dataGetKeymap(u16 cid) {
|
||||||
static DATA_TAB key;
|
static DATA_TAB key;
|
||||||
static DATA_TAB* result;
|
static DATA_TAB* result;
|
||||||
|
|
||||||
key.id = cid;
|
key.id = cid;
|
||||||
if (result =
|
if (result =
|
||||||
(DATA_TAB*)sndBSearcH(&key, dataCurveTab, dataCurveNum, sizeof(DATA_TAB), curvecmp)) {
|
(DATA_TAB*)sndBSearch(&key, dataKeymapTab, dataKeymapNum, sizeof(DATA_TAB), curvecmp)) {
|
||||||
return result->data;
|
return result->data;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
long layercmp(void* p1, void* p2) { return ((LAYER_TAB*)p1)->id - ((LAYER_TAB*)p2)->id; }
|
static s32 layercmp(void* p1, void* p2) { return ((LAYER_TAB*)p1)->id - ((LAYER_TAB*)p2)->id; }
|
||||||
|
|
||||||
void* dataGetLayer(u16 cid, u16* n) {
|
void* dataGetLayer(u16 cid, u16* n) {
|
||||||
static LAYER_TAB key;
|
static LAYER_TAB key;
|
||||||
|
@ -327,16 +398,16 @@ void* dataGetLayer(u16 cid, u16* n) {
|
||||||
|
|
||||||
key.id = cid;
|
key.id = cid;
|
||||||
if (result =
|
if (result =
|
||||||
(LAYER_TAB*)sndBSearcH(&key, dataLayerTab, dataLayerNum, sizeof(LAYER_TAB), layercmp)) {
|
(LAYER_TAB*)sndBSearch(&key, dataLayerTab, dataLayerNum, sizeof(LAYER_TAB), layercmp)) {
|
||||||
*n = result->num;
|
*n = result->num;
|
||||||
return result->data;
|
return result->data;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
long fxcmp(void* p1, void* p2) { return ((FX_TAB*)p1)->id - ((FX_TAB*)p2)->id; }
|
static s32 fxcmp(void* p1, void* p2) { return ((FX_TAB*)p1)->id - ((FX_TAB*)p2)->id; }
|
||||||
|
|
||||||
struct FX_TAB* dataGetFX(unsigned short fid) {
|
struct FX_TAB* dataGetFX(u16 fid) {
|
||||||
static FX_TAB key;
|
static FX_TAB key;
|
||||||
FX_TAB* ret; // r29
|
FX_TAB* ret; // r29
|
||||||
long i; // r31
|
long i; // r31
|
||||||
|
|
|
@ -292,7 +292,9 @@ static void mcmdUntrapEvent(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
svoice->trapEventAny = 0;
|
svoice->trapEventAny = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma dont_inline on
|
||||||
static void mcmdLoop(SYNTH_VOICE* svoice, MSTEP* cstep) {}
|
static void mcmdLoop(SYNTH_VOICE* svoice, MSTEP* cstep) {}
|
||||||
|
#pragma dont_inline reset
|
||||||
|
|
||||||
static void mcmdPlayMacro(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
static void mcmdPlayMacro(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
s32 key; // r29
|
s32 key; // r29
|
||||||
|
@ -570,6 +572,7 @@ static void mcmdSetupLFO(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
svoice->lfo[n].period = time;
|
svoice->lfo[n].period = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma dont_inline on
|
||||||
static void DoSetPitch(SYNTH_VOICE* svoice) {
|
static void DoSetPitch(SYNTH_VOICE* svoice) {
|
||||||
u32 f; // r28
|
u32 f; // r28
|
||||||
u32 of; // r25
|
u32 of; // r25
|
||||||
|
@ -583,6 +586,7 @@ static void DoSetPitch(SYNTH_VOICE* svoice) {
|
||||||
4096, 4339, 4597, 4871, 5160, 5467, 5792, 6137, 6502, 6888, 7298, 7732, 8192,
|
4096, 4339, 4597, 4871, 5160, 5467, 5792, 6137, 6502, 6888, 7298, 7732, 8192,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
#pragma dont_inline reset
|
||||||
|
|
||||||
static void mcmdSetPitch(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
static void mcmdSetPitch(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
svoice->playFrq = (u32)(cstep->para[0] >> 8);
|
svoice->playFrq = (u32)(cstep->para[0] >> 8);
|
||||||
|
@ -592,6 +596,7 @@ static void mcmdSetPitch(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma dont_inline on
|
||||||
static void mcmdSetADSR(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
static void mcmdSetADSR(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
ADSR_INFO adsr; // r1+0x10
|
ADSR_INFO adsr; // r1+0x10
|
||||||
ADSR_INFO* adsr_ptr; // r31
|
ADSR_INFO* adsr_ptr; // r31
|
||||||
|
@ -599,6 +604,7 @@ static void mcmdSetADSR(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
s32 dscale; // r28
|
s32 dscale; // r28
|
||||||
float sScale; // r63
|
float sScale; // r63
|
||||||
}
|
}
|
||||||
|
#pragma dont_inline reset
|
||||||
|
|
||||||
static s32 midi2TimeTab[128] = {
|
static s32 midi2TimeTab[128] = {
|
||||||
0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110,
|
0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110,
|
||||||
|
@ -614,6 +620,7 @@ static s32 midi2TimeTab[128] = {
|
||||||
150000, 155000, 160000, 165000, 170000, 175000, 180000, 0,
|
150000, 155000, 160000, 165000, 170000, 175000, 180000, 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#pragma dont_inline on
|
||||||
static void mcmdSetADSRFromCtrl(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
static void mcmdSetADSRFromCtrl(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
float sScale; // r63
|
float sScale; // r63
|
||||||
ADSR_INFO adsr; // r1+0x10
|
ADSR_INFO adsr; // r1+0x10
|
||||||
|
@ -626,6 +633,7 @@ static void mcmdSetPitchADSR(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
s32 ascale; // r27
|
s32 ascale; // r27
|
||||||
s32 dscale; // r26
|
s32 dscale; // r26
|
||||||
}
|
}
|
||||||
|
#pragma dont_inline reset
|
||||||
|
|
||||||
static u32 mcmdPitchSweep(SYNTH_VOICE* svoice, MSTEP* cstep, int num) {
|
static u32 mcmdPitchSweep(SYNTH_VOICE* svoice, MSTEP* cstep, int num) {
|
||||||
s32 delta; // r31
|
s32 delta; // r31
|
||||||
|
@ -787,6 +795,7 @@ static void mcmdFadeIn(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
DoEnvelopeCalculation(svoice, cstep, 0);
|
DoEnvelopeCalculation(svoice, cstep, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma dont_inline on
|
||||||
static void mcmdRandomKey(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
static void mcmdRandomKey(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
u8 k1; // r30
|
u8 k1; // r30
|
||||||
u8 k2; // r29
|
u8 k2; // r29
|
||||||
|
@ -795,6 +804,7 @@ static void mcmdRandomKey(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
s32 i2; // r27
|
s32 i2; // r27
|
||||||
u8 detune; // r26
|
u8 detune; // r26
|
||||||
}
|
}
|
||||||
|
#pragma dont_inline reset
|
||||||
|
|
||||||
static void mcmdSetPitchbendAfterKeyOff(SYNTH_VOICE* svoice) { svoice->cFlags |= 0x10000; }
|
static void mcmdSetPitchbendAfterKeyOff(SYNTH_VOICE* svoice) { svoice->cFlags |= 0x10000; }
|
||||||
static void mcmdScaleReverb(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
static void mcmdScaleReverb(SYNTH_VOICE* svoice, MSTEP* cstep) {
|
||||||
|
|
Loading…
Reference in New Issue