mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-15 17:25:06 +00:00
i'll finish this later
This commit is contained in:
parent
1bfca78df1
commit
2f9d1e8c0f
2 changed files with 30 additions and 3 deletions
|
@ -30,7 +30,6 @@
|
||||||
// N = invalid
|
// N = invalid
|
||||||
#define N 255
|
#define N 255
|
||||||
|
|
||||||
/*
|
|
||||||
const unsigned char slotsOPL2[4][20]={
|
const unsigned char slotsOPL2[4][20]={
|
||||||
{0, 1, 2, 6, 7, 8, 12, 13, 14}, // OP1
|
{0, 1, 2, 6, 7, 8, 12, 13, 14}, // OP1
|
||||||
{3, 4, 5, 9, 10, 11, 15, 16, 17}, // OP2
|
{3, 4, 5, 9, 10, 11, 15, 16, 17}, // OP2
|
||||||
|
@ -45,6 +44,10 @@ const unsigned char slotsOPL2Drums[4][20]={
|
||||||
{N, N, N, N, N, N, N, N, N, N, N}
|
{N, N, N, N, N, N, N, N, N, N, N}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const unsigned char chanMapOPL2[20]={
|
||||||
|
0, 1, 2, 3, 4, 5, 6, 7, 8, N, N, N, N, N, N, N, N, N, N, N
|
||||||
|
};
|
||||||
|
|
||||||
const unsigned char slotsOPL3[4][20]={
|
const unsigned char slotsOPL3[4][20]={
|
||||||
{0, 6, 1, 7, 2, 8, 18, 24, 19, 25, 20, 26, 30, 31, 32, 12, 13, 14}, // OP1
|
{0, 6, 1, 7, 2, 8, 18, 24, 19, 25, 20, 26, 30, 31, 32, 12, 13, 14}, // OP1
|
||||||
{3, 9, 4, 10, 5, 11, 21, 27, 22, 28, 23, 29, 33, 34, 35, 15, 16, 17}, // OP2
|
{3, 9, 4, 10, 5, 11, 21, 27, 22, 28, 23, 29, 33, 34, 35, 15, 16, 17}, // OP2
|
||||||
|
@ -58,7 +61,10 @@ const unsigned char slotsOPL3Drums[4][20]={
|
||||||
{6, N, 7, N, 8, N, 24, N, 25, N, 26, N, N, N, N, N, N, N, N, N}, // OP3
|
{6, N, 7, N, 8, N, 24, N, 25, N, 26, N, N, N, N, N, N, N, N, N}, // OP3
|
||||||
{9, N, 10, N, 11, N, 27, N, 28, N, 29, N, N, N, N, N, N, N, N, N} // OP4
|
{9, N, 10, N, 11, N, 27, N, 28, N, 29, N, N, N, N, N, N, N, N, N} // OP4
|
||||||
};
|
};
|
||||||
*/
|
|
||||||
|
const unsigned char chanMapOPL3[20]={
|
||||||
|
0, 3, 1, 4, 2, 5, 9, 12, 10, 13, 11, 14, 15, 16, 17, 6, 7, 8, N, N
|
||||||
|
};
|
||||||
|
|
||||||
#undef N
|
#undef N
|
||||||
|
|
||||||
|
@ -773,6 +779,22 @@ void DivPlatformOPL::setYMFM(bool use) {
|
||||||
useYMFM=use;
|
useYMFM=use;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DivPlatformOPL::setOPLType(int type) {
|
||||||
|
switch (type) {
|
||||||
|
case 1: case 2:
|
||||||
|
slotsNonDrums=(const unsigned char**)slotsOPL2;
|
||||||
|
slotsDrums=(const unsigned char**)slotsOPL2Drums;
|
||||||
|
chanMap=chanMapOPL2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
slotsNonDrums=(const unsigned char**)slotsOPL3;
|
||||||
|
slotsDrums=(const unsigned char**)slotsOPL3Drums;
|
||||||
|
chanMap=chanMapOPL3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
oplType=type;
|
||||||
|
}
|
||||||
|
|
||||||
void DivPlatformOPL::setFlags(unsigned int flags) {
|
void DivPlatformOPL::setFlags(unsigned int flags) {
|
||||||
/*
|
/*
|
||||||
if (flags==3) {
|
if (flags==3) {
|
||||||
|
|
|
@ -64,7 +64,11 @@ class DivPlatformOPL: public DivDispatch {
|
||||||
};
|
};
|
||||||
std::queue<QueuedWrite> writes;
|
std::queue<QueuedWrite> writes;
|
||||||
opl3_chip fm;
|
opl3_chip fm;
|
||||||
int delay;
|
const unsigned char** slotsNonDrums;
|
||||||
|
const unsigned char** slotsDrums;
|
||||||
|
const unsigned char** slots;
|
||||||
|
const unsigned char* chanMap;
|
||||||
|
int delay, oplType;
|
||||||
unsigned char lastBusy;
|
unsigned char lastBusy;
|
||||||
|
|
||||||
unsigned char regPool[512];
|
unsigned char regPool[512];
|
||||||
|
@ -103,6 +107,7 @@ class DivPlatformOPL: public DivDispatch {
|
||||||
void muteChannel(int ch, bool mute);
|
void muteChannel(int ch, bool mute);
|
||||||
bool isStereo();
|
bool isStereo();
|
||||||
void setYMFM(bool use);
|
void setYMFM(bool use);
|
||||||
|
void setOPLType(int type);
|
||||||
bool keyOffAffectsArp(int ch);
|
bool keyOffAffectsArp(int ch);
|
||||||
bool keyOffAffectsPorta(int ch);
|
bool keyOffAffectsPorta(int ch);
|
||||||
void toggleRegisterDump(bool enable);
|
void toggleRegisterDump(bool enable);
|
||||||
|
|
Loading…
Reference in a new issue