diff --git a/playxm/dumpmod.c b/playxm/dumpmod.c index b5a55ab1..bbe7705d 100644 --- a/playxm/dumpmod.c +++ b/playxm/dumpmod.c @@ -721,6 +721,15 @@ int preParseMOD31 (unsigned char *mem, int len, int *channels31instruments) printf ("%sWARNING: Order < 64 not possible in M!K! format - can not be 31 instrument file%s\n", FONT_BRIGHT_YELLOW, FONT_RESET); return -1; } + } else if (!memcmp(&mem[20+31*30+2+128], "M&K!", 4)) + { + printf ("%sNOTE: got M&K! signature in 31 instrument format (His Master's Noise)%s\n", FONT_BRIGHT_GREEN, FONT_RESET); + canbe31instruments = 4; + if (highestorder >= 64) + { + printf ("%sWARNING: Order > 63 not possible in M&K! format - can not be 31 instrument file%s\n", FONT_BRIGHT_YELLOW, FONT_RESET); + return -1; + } } 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], "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; diff --git a/playxm/xmlmod.c b/playxm/xmlmod.c index 2765f931..95c8da7e 100644 --- a/playxm/xmlmod.c +++ b/playxm/xmlmod.c @@ -124,6 +124,7 @@ static int loadmod (struct cpifaceSessionAPI_t *cpifaceSession, struct xmodule * { case 0x2E4B2E4D: /* M.K. */ case 0x214B214D: /* M!K! */ + case 0x214B264D: /* M&K! */ case 0x34544C46: /* FLT4 */ m->nchan=4; m->ninst=31; diff --git a/playxm/xmtype.c b/playxm/xmtype.c index deed3bfa..cf3385a9 100644 --- a/playxm/xmtype.c +++ b/playxm/xmtype.c @@ -55,7 +55,7 @@ static uint32_t xmpGetModuleType(const char *buf, int len, const char *filename) case 0x2E542E4E: /* N.T. */ return MODULETYPE("MODt"); - case 0x2E4B2E4D: case 0x214B214D: case 0x34544C46: /* "M.K." "M!K!" "FLT4" */ + case 0x2E4B2E4D: case 0x214B214D: case 0x214B264D: case 0x34544C46: /* "M.K." "M!K!" "M&K!" "FLT4" */ case 0x4E484331: case 0x4E484332: case 0x4E484333: case 0x4E484334: /* "1CHN" "2CHN" "3CHN" "4CHN" */ case 0x4E484335: case 0x4E484336: case 0x4E484337: case 0x4E484338: /* "5CHN" "6CHN" "7CHN" "8CHN" */ case 0x4E484339: case 0x48433031: case 0x48433131: case 0x48433231: /* "9CHN" "10CH" "11CH" "12CH" */