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 char defVol[256];
|
||||
unsigned char noteMap[256][128];
|
||||
|
||||
bool doesPitchSlide[64];
|
||||
bool doesVibrato[64];
|
||||
bool doesPanning[64];
|
||||
|
@ -55,6 +58,9 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
|||
memset(orders,0,256);
|
||||
memset(patLen,0,256*sizeof(unsigned short));
|
||||
|
||||
memset(defVol,0,256);
|
||||
memset(noteMap,0,256*128);
|
||||
|
||||
try {
|
||||
DivSong ds;
|
||||
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++) {
|
||||
ins->amiga.noteMap[j].freq=(unsigned char)reader.readC();
|
||||
ins->amiga.noteMap[j].map=reader.readC()-1;
|
||||
noteMap[i][j]=ins->amiga.noteMap[j].map;
|
||||
}
|
||||
|
||||
// TODO: envelopes...
|
||||
|
@ -356,9 +363,9 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
|||
|
||||
unsigned char globalVol=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);
|
||||
|
||||
|
@ -739,6 +746,8 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
|||
}
|
||||
if (hasVol) {
|
||||
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) {
|
||||
switch (effect[chan]+'A'-1) {
|
||||
|
|
Loading…
Reference in a new issue