ES5506: Amiga pitch option......
This commit is contained in:
parent
de935c3aac
commit
6d8a343ead
7 changed files with 233 additions and 77 deletions
|
|
@ -39,17 +39,11 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
|||
try {
|
||||
DivSong ds;
|
||||
ds.version=DIV_VERSION_XM;
|
||||
//ds.linearPitch=0;
|
||||
//ds.pitchMacroIsLinear=false;
|
||||
ds.noSlidesOnFirstTick=true;
|
||||
ds.rowResetsArpPos=true;
|
||||
ds.ignoreJumpAtEnd=false;
|
||||
ds.pitchSlideSpeed=4;
|
||||
|
||||
ds.system[0]=DIV_SYSTEM_ES5506;
|
||||
ds.systemFlags[0].set("amigaVol",true);
|
||||
ds.systemLen=1;
|
||||
|
||||
logV("Impulse Tracker module");
|
||||
|
||||
// load here
|
||||
|
|
@ -81,6 +75,12 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
|||
unsigned short flags=reader.readS();
|
||||
unsigned short special=reader.readS();
|
||||
|
||||
if (flags&8) {
|
||||
ds.linearPitch=2;
|
||||
} else {
|
||||
ds.linearPitch=0;
|
||||
}
|
||||
|
||||
unsigned char globalVol=reader.readC();
|
||||
unsigned char masterVol=reader.readC();
|
||||
unsigned char initSpeed=reader.readC();
|
||||
|
|
@ -399,6 +399,7 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
|||
}
|
||||
|
||||
// read patterns
|
||||
int maxChan=0;
|
||||
for (int i=0; i<patCount; i++) {
|
||||
unsigned char mask[64];
|
||||
unsigned char note[64];
|
||||
|
|
@ -449,6 +450,8 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
|||
}
|
||||
chan&=63;
|
||||
|
||||
if (chan>maxChan) maxChan=chan;
|
||||
|
||||
if (mask[chan]&1) {
|
||||
note[chan]=reader.readC();
|
||||
hasNote=true;
|
||||
|
|
@ -510,8 +513,14 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
|
|||
}
|
||||
}
|
||||
|
||||
logV("DAMN IT: %x",insPtr[0]);
|
||||
logV("DAMN IT: %x",samplePtr[0]);
|
||||
for (int i=0; i<(maxChan+32)>>5; i++) {
|
||||
ds.system[i]=DIV_SYSTEM_ES5506;
|
||||
ds.systemFlags[i].set("amigaVol",true);
|
||||
if (ds.linearPitch!=2) {
|
||||
ds.systemFlags[i].set("amigaPitch",true);
|
||||
}
|
||||
}
|
||||
ds.systemLen=(maxChan+32)>>5;
|
||||
|
||||
if (active) quitDispatch();
|
||||
BUSY_BEGIN_SOFT;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue