port .ftm loading progress

from LTVA
This commit is contained in:
tildearrow 2024-03-16 03:45:35 -05:00
parent e809995fa1
commit c0df3df4ed
7 changed files with 2218 additions and 386 deletions

View file

@ -547,7 +547,7 @@ class DivEngine {
bool loadFur(unsigned char* file, size_t len, int variantID=0);
bool loadMod(unsigned char* file, size_t len);
bool loadS3M(unsigned char* file, size_t len);
bool loadFTM(unsigned char* file, size_t len);
bool loadFTM(unsigned char* file, size_t len, bool dnft, bool dnftSig, bool eft);
bool loadFC(unsigned char* file, size_t len);
void loadDMP(SafeReader& reader, std::vector<DivInstrument*>& ret, String& stripPath);

View file

@ -128,7 +128,7 @@ bool DivEngine::load(unsigned char* f, size_t slen) {
if (memcmp(file,DIV_DMF_MAGIC,16)==0) {
return loadDMF(file,len);
} else if (memcmp(file,DIV_FTM_MAGIC,18)==0) {
return loadFTM(file,len);
return loadFTM(file,len,false,false,false);
} else if (memcmp(file,DIV_FUR_MAGIC,16)==0) {
return loadFur(file,len);
} else if (memcmp(file,DIV_FUR_MAGIC_DS0,16)==0) {

File diff suppressed because it is too large Load diff

View file

@ -259,6 +259,40 @@ bool DivInstrumentPowerNoise::operator==(const DivInstrumentPowerNoise& other) {
#undef _C
#define CONSIDER(x,t) \
case t: \
return &x; \
break;
DivInstrumentMacro* DivInstrumentSTD::macroByType(DivMacroType type) {
switch (type) {
CONSIDER(volMacro,DIV_MACRO_VOL)
CONSIDER(arpMacro,DIV_MACRO_ARP)
CONSIDER(dutyMacro,DIV_MACRO_DUTY)
CONSIDER(waveMacro,DIV_MACRO_WAVE)
CONSIDER(pitchMacro,DIV_MACRO_PITCH)
CONSIDER(ex1Macro,DIV_MACRO_EX1)
CONSIDER(ex2Macro,DIV_MACRO_EX2)
CONSIDER(ex3Macro,DIV_MACRO_EX3)
CONSIDER(algMacro,DIV_MACRO_ALG)
CONSIDER(fbMacro,DIV_MACRO_FB)
CONSIDER(fmsMacro,DIV_MACRO_FMS)
CONSIDER(amsMacro,DIV_MACRO_AMS)
CONSIDER(panLMacro,DIV_MACRO_PAN_LEFT)
CONSIDER(panRMacro,DIV_MACRO_PAN_RIGHT)
CONSIDER(phaseResetMacro,DIV_MACRO_PHASE_RESET)
CONSIDER(ex4Macro,DIV_MACRO_EX4)
CONSIDER(ex5Macro,DIV_MACRO_EX5)
CONSIDER(ex6Macro,DIV_MACRO_EX6)
CONSIDER(ex7Macro,DIV_MACRO_EX7)
CONSIDER(ex8Macro,DIV_MACRO_EX8)
}
return NULL;
}
#undef CONSIDER
#define FEATURE_BEGIN(x) \
w->write(x,2); \
size_t featStartSeek=w->tell(); \

View file

@ -329,6 +329,9 @@ struct DivInstrumentSTD {
damMacro(DIV_MACRO_OP_DAM), dvbMacro(DIV_MACRO_OP_DVB), egtMacro(DIV_MACRO_OP_EGT), kslMacro(DIV_MACRO_OP_KSL),
susMacro(DIV_MACRO_OP_SUS), vibMacro(DIV_MACRO_OP_VIB), wsMacro(DIV_MACRO_OP_WS), ksrMacro(DIV_MACRO_OP_KSR) {}
} opMacros[4];
DivInstrumentMacro* macroByType(DivMacroType type);
DivInstrumentSTD():
volMacro(DIV_MACRO_VOL,true),
arpMacro(DIV_MACRO_ARP),

View file

@ -1637,7 +1637,7 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) {
if (!dirExists(workingDirSong)) workingDirSong=getHomeDir();
hasOpened=fileDialog->openLoad(
"Open File",
{"compatible files", "*.fur *.dmf *.mod *.fc13 *.fc14 *.smod *.fc",
{"compatible files", "*.fur *.dmf *.mod *.fc13 *.fc14 *.smod *.fc *.ftm *.0cc *.dnm *.eft",
"all files", "*"},
workingDirSong,
dpiScale

View file

@ -5654,6 +5654,9 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".fc",uiColors[GUI_COLOR_FILE_SONG_IMPORT],ICON_FA_FILE);
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".smod",uiColors[GUI_COLOR_FILE_SONG_IMPORT],ICON_FA_FILE);
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".ftm",uiColors[GUI_COLOR_FILE_SONG_IMPORT],ICON_FA_FILE);
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".0cc",uiColors[GUI_COLOR_FILE_SONG_IMPORT],ICON_FA_FILE);
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".dnm",uiColors[GUI_COLOR_FILE_SONG_IMPORT],ICON_FA_FILE);
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".eft",uiColors[GUI_COLOR_FILE_SONG_IMPORT],ICON_FA_FILE);
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".tfi",uiColors[GUI_COLOR_FILE_INSTR],ICON_FA_FILE);
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".vgi",uiColors[GUI_COLOR_FILE_INSTR],ICON_FA_FILE);