Namco 163 memory composition

This commit is contained in:
tildearrow 2024-03-14 17:58:55 -05:00
parent d33e645ea8
commit 898155eb6b
12 changed files with 111 additions and 8 deletions

View file

@ -131,6 +131,8 @@ bool DivEngine::load(unsigned char* f, size_t slen) {
return loadFTM(file,len);
} else if (memcmp(file,DIV_FUR_MAGIC,16)==0) {
return loadFur(file,len);
} else if (memcmp(file,DIV_FUR_MAGIC_DS0,16)==0) {
return loadFur(file,len,DIV_FUR_VARIANT_B);
} else if (memcmp(file,DIV_FC13_MAGIC,4)==0 || memcmp(file,DIV_FC14_MAGIC,4)==0) {
return loadFC(file,len);
}

View file

@ -52,3 +52,10 @@ struct NotZlibException {
#define DIV_FC13_MAGIC "SMOD"
#define DIV_FC14_MAGIC "FC14"
#define DIV_S3M_MAGIC "SCRM"
#define DIV_FUR_MAGIC_DS0 "Furnace-B module"
enum DivFurVariants: int {
DIV_FUR_VARIANT_VANILLA=0,
DIV_FUR_VARIANT_B=1,
};

View file

@ -691,7 +691,7 @@ void DivEngine::convertOldFlags(unsigned int oldFlags, DivConfig& newFlags, DivS
}
}
bool DivEngine::loadFur(unsigned char* file, size_t len) {
bool DivEngine::loadFur(unsigned char* file, size_t len, int variantID) {
unsigned int insPtr[256];
unsigned int wavePtr[256];
unsigned int samplePtr[256];
@ -720,6 +720,11 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
ds.version=reader.readS();
logI("module version %d (0x%.2x)",ds.version,ds.version);
if (variantID!=DIV_FUR_VARIANT_VANILLA) {
logW("Furnace variant detected: %d",variantID);
addWarning("this module was created with a downstream version of Furnace. certain features may not be compatible.");
}
if (ds.version>DIV_ENGINE_VERSION) {
logW("this module was created with a more recent version of Furnace!");
addWarning("this module was created with a more recent version of Furnace!");