diff --git a/playxm/dumpmod.c b/playxm/dumpmod.c index bbe7705d..b8560886 100644 --- a/playxm/dumpmod.c +++ b/playxm/dumpmod.c @@ -732,6 +732,7 @@ int preParseMOD31 (unsigned char *mem, int len, int *channels31instruments) } } else if (!memcmp(&mem[20+31*30+2+128], "FLT4", 4)) { printf ("%sNOTE: got FLT4 - probably StarTrekker 4-channel MOD%s\n", FONT_BRIGHT_GREEN, FONT_RESET); canbe31instruments = (highestorder < 64) ? 4 : 0; *channels31instruments = 4; } else if (!memcmp(&mem[20+31*30+2+128], "FLT8", 4)) { printf ("%sNOTE: got FLT8 - probably StarTrekker 8-channel MOD%s\n", FONT_BRIGHT_GREEN, FONT_RESET); canbe31instruments = (highestorder < 64) ? 4 : 0; *channels31instruments = 8; + } else if (!memcmp(&mem[20+31*30+2+128], "CD61", 4)) { printf ("%sNOTE: got CD61 - probably Oktalyzer for Atari ST?%s\n", FONT_BRIGHT_GREEN, FONT_RESET); canbe31instruments = (highestorder < 64) ? 4 : 0; *channels31instruments = 6; } else if (!memcmp(&mem[20+31*30+2+128], "CD81", 4)) { printf ("%sNOTE: got CD81 - probably Oktalyzer for Atari ST?%s\n", FONT_BRIGHT_GREEN, FONT_RESET); canbe31instruments = (highestorder < 64) ? 4 : 0; *channels31instruments = 8; } else if (!memcmp(&mem[20+31*30+2+128], "OKTA", 4)) { printf ("%sNOTE: got OKTA - probably Oktalyzer for Atari ST?%s\n", FONT_BRIGHT_GREEN, FONT_RESET); canbe31instruments = (highestorder < 64) ? 4 : 0; *channels31instruments = 8; } else if (!memcmp(&mem[20+31*30+2+128], "OCTA", 4)) { printf ("%sNOTE: got OKTA - probably OctaMED%s\n", FONT_BRIGHT_GREEN, FONT_RESET); canbe31instruments = (highestorder < 64) ? 4 : 0; *channels31instruments = 8; diff --git a/playxm/xmlmod.c b/playxm/xmlmod.c index 95c8da7e..fa918bba 100644 --- a/playxm/xmlmod.c +++ b/playxm/xmlmod.c @@ -133,6 +133,7 @@ static int loadmod (struct cpifaceSessionAPI_t *cpifaceSession, struct xmodule * m->nchan=4; m->ninst=15; break; + case 0x31364443: m->nchan=6; break; /* CD61 */ case 0x31384443: m->nchan=8; break; /* CD81 */ case 0x315A4454: m->nchan=1; break; /* TDZ1 */ diff --git a/playxm/xmtype.c b/playxm/xmtype.c index cf3385a9..9d0e98b1 100644 --- a/playxm/xmtype.c +++ b/playxm/xmtype.c @@ -65,6 +65,7 @@ static uint32_t xmpGetModuleType(const char *buf, int len, const char *filename) case 0x48433532: case 0x48433632: case 0x48433732: case 0x48433832: /* "25CH" "26CH" "27CH" "28CH" */ case 0x48433932: case 0x48433033: case 0x48433133: case 0x48433233: /* "29CH" "30CH" "31CH" "32CH" */ case 0x38301446: case 0x36304146: case 0x38304146: /* "FA04" "FA06" "FA08" */ + case 0x31364443: case 0x31384443: /* "CD61" "CD81" */ { return MODULETYPE("MOD"); } @@ -219,6 +220,8 @@ static int xmpReadInfo(struct moduleinfostruct *m, struct ocpfilehandle_t *fp, c case 0x34304146: m->channels=4; snprintf (m->comment, sizeof (m->comment), "Atari Falcon, Digital Tracker (MOD), 4 channels"); break; /* FA04 */ case 0x36304146: m->channels=6; snprintf (m->comment, sizeof (m->comment), "Atari Falcon, Digital Tracker (MOD), 6 channels"); break; /* FA06 */ case 0x38304146: m->channels=8; snprintf (m->comment, sizeof (m->comment), "Atari Falcon, Digital Tracker (MOD), 8 channels"); break; /* FA08 */ + case 0x31364443: m->channels=6; snprintf (m->comment, sizeof (m->comment), "Atari STe/Falcon, Octalyser, 6 channels"); break; /* CD61 */ + case 0x31384443: m->channels=8; snprintf (m->comment, sizeof (m->comment), "Atari STe/Falcon, Octalyser, 8 channels"); break; /* CD81 */ } }