IT import: volume mapping
This commit is contained in:
parent
95bf3f2bb1
commit
2a248470af
|
@ -35,6 +35,9 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
|
|
||||||
unsigned short patLen[256];
|
unsigned short patLen[256];
|
||||||
|
|
||||||
|
unsigned char defVol[256];
|
||||||
|
unsigned char noteMap[256][128];
|
||||||
|
|
||||||
bool doesPitchSlide[64];
|
bool doesPitchSlide[64];
|
||||||
bool doesVibrato[64];
|
bool doesVibrato[64];
|
||||||
bool doesPanning[64];
|
bool doesPanning[64];
|
||||||
|
@ -55,6 +58,9 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
memset(orders,0,256);
|
memset(orders,0,256);
|
||||||
memset(patLen,0,256*sizeof(unsigned short));
|
memset(patLen,0,256*sizeof(unsigned short));
|
||||||
|
|
||||||
|
memset(defVol,0,256);
|
||||||
|
memset(noteMap,0,256*128);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DivSong ds;
|
DivSong ds;
|
||||||
ds.version=DIV_VERSION_IT;
|
ds.version=DIV_VERSION_IT;
|
||||||
|
@ -315,6 +321,7 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
for (int j=0; j<120; j++) {
|
for (int j=0; j<120; j++) {
|
||||||
ins->amiga.noteMap[j].freq=(unsigned char)reader.readC();
|
ins->amiga.noteMap[j].freq=(unsigned char)reader.readC();
|
||||||
ins->amiga.noteMap[j].map=reader.readC()-1;
|
ins->amiga.noteMap[j].map=reader.readC()-1;
|
||||||
|
noteMap[i][j]=ins->amiga.noteMap[j].map;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: envelopes...
|
// TODO: envelopes...
|
||||||
|
@ -356,9 +363,9 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
|
|
||||||
unsigned char globalVol=reader.readC();
|
unsigned char globalVol=reader.readC();
|
||||||
unsigned char flags=reader.readC();
|
unsigned char flags=reader.readC();
|
||||||
unsigned char sampleVol=reader.readC();
|
defVol[i]=reader.readC();
|
||||||
|
|
||||||
logV("volumes: %d %d",globalVol,sampleVol);
|
logV("volumes: %d",globalVol);
|
||||||
|
|
||||||
s->name=reader.readString(26);
|
s->name=reader.readString(26);
|
||||||
|
|
||||||
|
@ -739,6 +746,8 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
||||||
}
|
}
|
||||||
if (hasVol) {
|
if (hasVol) {
|
||||||
p->data[curRow][3]=vol[chan];
|
p->data[curRow][3]=vol[chan];
|
||||||
|
} else if (hasNote && hasIns && note[chan]<120) {
|
||||||
|
p->data[curRow][3]=defVol[noteMap[ins[chan]][note[chan]]];
|
||||||
}
|
}
|
||||||
if (hasEffect) {
|
if (hasEffect) {
|
||||||
switch (effect[chan]+'A'-1) {
|
switch (effect[chan]+'A'-1) {
|
||||||
|
|
Loading…
Reference in a new issue