diff --git a/CMakeLists.txt b/CMakeLists.txt
index af46dee1..4d436602 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,8 +13,8 @@ endif()
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_PROJECT_VERSION_MAJOR 0)
-set(CMAKE_PROJECT_VERSION_MINOR 6)
-set(CMAKE_PROJECT_VERSION_PATCH 0)
+set(CMAKE_PROJECT_VERSION_MINOR 5)
+set(CMAKE_PROJECT_VERSION_PATCH 7)
if (ANDROID)
set(BUILD_GUI_DEFAULT OFF)
diff --git a/README.md b/README.md
index 83dc67ec..b5e28cf6 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# PlagiaTracker
+# Furnace Tracker
![screenshot](papers/screenshot1.png)
diff --git a/res/Info.plist b/res/Info.plist
index d9528b15..d6f1c4a0 100644
--- a/res/Info.plist
+++ b/res/Info.plist
@@ -15,17 +15,17 @@
CFBundleInfoDictionaryVersion
6.0
CFBundleLongVersionString
- 0.6pre0
+ 0.5.7
CFBundleName
Furnace
CFBundlePackageType
APPL
CFBundleShortVersionString
- 0.6pre0
+ 0.5.7
CFBundleSignature
????
CFBundleVersion
- 0.6pre0
+ 0.5.7
NSHumanReadableCopyright
NSHighResolutionCapable
diff --git a/src/engine/config.cpp b/src/engine/config.cpp
index cbbc1d1f..f7444e3c 100644
--- a/src/engine/config.cpp
+++ b/src/engine/config.cpp
@@ -55,7 +55,7 @@ bool DivEngine::loadConf() {
logI("creating default config.\n");
return saveConf();
}
- logI("peepoHappy\n");
+ logI("loading config.\n");
while (!feof(f)) {
String key="";
String value="";
diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp
index a8a6371b..26e2402c 100644
--- a/src/engine/engine.cpp
+++ b/src/engine/engine.cpp
@@ -114,8 +114,6 @@ const char* DivEngine::getEffectDesc(unsigned char effect, int chan) {
return "F9xx: Single tick volume slide down";
case 0xfa:
return "FAxx: Fast volume slide (0y: down; x0: up)";
- case 0xfe:
- return "FExx: Quit Furnace";
case 0xff:
return "FFxx: Stop song";
default:
@@ -658,10 +656,6 @@ bool DivEngine::addSystem(DivSystem which) {
renderSamples();
reset();
BUSY_END;
- if (which==DIV_SYSTEM_KONTAKT_5) {
- lastError="Kontakt not installed or detected!\nPlease use the \"Set plugin path\" option in the Configure System menu first.";
- return false;
- }
return true;
}
@@ -3012,7 +3006,7 @@ bool DivEngine::init() {
bool DivEngine::quit() {
deinitAudioBackend();
quitDispatch();
- logI("peepoLeave\n");
+ logI("saving config.\n");
saveConf();
active=false;
delete[] oscBuf[0];
diff --git a/src/engine/engine.h b/src/engine/engine.h
index b9e18a7b..938ed134 100644
--- a/src/engine/engine.h
+++ b/src/engine/engine.h
@@ -42,8 +42,8 @@
#define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock();
#define BUSY_END isBusy.unlock(); softLocked=false;
-#define DIV_VERSION "0.6pre0"
-#define DIV_ENGINE_VERSION 75
+#define DIV_VERSION "dev74"
+#define DIV_ENGINE_VERSION 74
// for imports
#define DIV_VERSION_MOD 0xff01
diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp
index 114db213..0e82b6b7 100644
--- a/src/engine/fileOps.cpp
+++ b/src/engine/fileOps.cpp
@@ -1788,16 +1788,6 @@ bool DivEngine::load(unsigned char* f, size_t slen) {
}
SafeWriter* DivEngine::saveFur(bool notPrimary) {
- if (!notPrimary) {
- for (int i=0; i CREDITS <",
"",
@@ -103,7 +108,7 @@ const char* aboutLine[]={
"licensed under GPLv2+! see",
"LICENSE for more information.",
"",
- "help PlagiaTracker shrink:",
+ "help Furnace grow:",
"https://github.com/tildearrow/furnace",
"",
"contact tildearrow at:",
@@ -126,7 +131,7 @@ const size_t aboutCount=sizeof(aboutLine)/sizeof(aboutLine[0]);
void FurnaceGUI::drawAbout() {
// do stuff
if (ImGui::Begin("About Furnace",NULL,ImGuiWindowFlags_Modal|ImGuiWindowFlags_NoMove|ImGuiWindowFlags_NoResize|ImGuiWindowFlags_NoDocking|ImGuiWindowFlags_NoTitleBar)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128)); else ImGui::SetWindowPos(ImVec2(0,0));
+ ImGui::SetWindowPos(ImVec2(0,0));
ImGui::SetWindowSize(ImVec2(scrW*dpiScale,scrH*dpiScale));
ImGui::PushFont(bigFont);
ImDrawList* dl=ImGui::GetWindowDrawList();
diff --git a/src/gui/channels.cpp b/src/gui/channels.cpp
index 5dd425b8..5b2a7e0c 100644
--- a/src/gui/channels.cpp
+++ b/src/gui/channels.cpp
@@ -28,7 +28,6 @@ void FurnaceGUI::drawChannels() {
}
if (!channelsOpen) return;
if (ImGui::Begin("Channels",&channelsOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
if (ImGui::BeginTable("ChannelList",3)) {
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0);
ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0);
diff --git a/src/gui/compatFlags.cpp b/src/gui/compatFlags.cpp
index 5074acfc..91aa34c7 100644
--- a/src/gui/compatFlags.cpp
+++ b/src/gui/compatFlags.cpp
@@ -27,7 +27,6 @@ void FurnaceGUI::drawCompatFlags() {
}
if (!compatFlagsOpen) return;
if (ImGui::Begin("Compatibility Flags",&compatFlagsOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
ImGui::TextWrapped("these flags are designed to provide better DefleMask/older Furnace compatibility.");
ImGui::Checkbox("Limit slide range",&e->song.limitSlides);
if (ImGui::IsItemHovered()) {
diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp
index aa81fad2..648abbd8 100644
--- a/src/gui/dataList.cpp
+++ b/src/gui/dataList.cpp
@@ -36,7 +36,6 @@ void FurnaceGUI::drawInsList() {
}
if (!insListOpen) return;
if (ImGui::Begin("Instruments",&insListOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
if (ImGui::Button(ICON_FA_PLUS "##InsAdd")) {
doAction(GUI_ACTION_INS_LIST_ADD);
}
@@ -242,7 +241,6 @@ void FurnaceGUI::drawWaveList() {
}
if (!waveListOpen) return;
if (ImGui::Begin("Wavetables",&waveListOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
if (ImGui::Button(ICON_FA_PLUS "##WaveAdd")) {
doAction(GUI_ACTION_WAVE_LIST_ADD);
}
@@ -288,7 +286,6 @@ void FurnaceGUI::drawSampleList() {
}
if (!sampleListOpen) return;
if (ImGui::Begin("Samples",&sampleListOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
if (ImGui::Button(ICON_FA_PLUS "##SampleAdd")) {
doAction(GUI_ACTION_SAMPLE_LIST_ADD);
}
diff --git a/src/gui/debugWindow.cpp b/src/gui/debugWindow.cpp
index ad3b363d..31830681 100644
--- a/src/gui/debugWindow.cpp
+++ b/src/gui/debugWindow.cpp
@@ -35,7 +35,6 @@ void FurnaceGUI::drawDebug() {
if (!debugOpen) return;
ImGui::SetNextWindowSizeConstraints(ImVec2(400.0f*dpiScale,200.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale));
if (ImGui::Begin("Debug",&debugOpen,ImGuiWindowFlags_NoDocking)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
ImGui::Text("NOTE: use with caution.");
if (ImGui::TreeNode("Debug Controls")) {
if (e->isHalted()) {
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
index f61718f4..e8a40a66 100644
--- a/src/gui/gui.cpp
+++ b/src/gui/gui.cpp
@@ -428,55 +428,11 @@ void FurnaceGUI::setFileName(String name) {
#endif
}
-const char* trackers[]={
- "PlagiaTracker",
- "Freezer",
- "TamiFracker [BETA]",
- "DafleMesk",
- "Torvex Tracker",
- "SheepTracker",
- "FT Studio",
- "ClosedTPM",
- "FoxTracker",
- "FurryTracker",
- "DeMaFia",
- "InfernoTracker",
- "IceTracker",
- "Resilence",
- "NoobTracker",
- "Mutter Tracker",
- "SlowTracker",
- "Furniture",
- "Furnace: Clown Edition"
-};
-
-constexpr int trackersLen=sizeof(trackers)/sizeof(void*);
-
void FurnaceGUI::updateWindowTitle() {
if (e->song.name.empty()) {
- if (rand()&1) {
- SDL_SetWindowTitle(sdlWin,fmt::sprintf("%s",trackers[rand()%trackersLen]).c_str());
- } else if (rand()&2) {
- if (e->song.author.empty()) {
- SDL_SetWindowTitle(sdlWin,fmt::sprintf("%s",trackers[rand()%trackersLen]).c_str());
- } else {
- SDL_SetWindowTitle(sdlWin,fmt::sprintf("%s by %s",trackers[rand()%trackersLen],e->song.author).c_str());
- }
- } else {
- SDL_SetWindowTitle(sdlWin,fmt::sprintf("%s (%s)",trackers[rand()%trackersLen],e->getSongSystemName()).c_str());
- }
+ SDL_SetWindowTitle(sdlWin,fmt::sprintf("Furnace (%s)",e->getSongSystemName()).c_str());
} else {
- if (rand()&1) {
- SDL_SetWindowTitle(sdlWin,fmt::sprintf("%s",trackers[rand()%trackersLen]).c_str());
- } else if (rand()&2) {
- if (e->song.author.empty()) {
- SDL_SetWindowTitle(sdlWin,fmt::sprintf("%s",trackers[rand()%trackersLen]).c_str());
- } else {
- SDL_SetWindowTitle(sdlWin,fmt::sprintf("%s by %s",trackers[rand()%trackersLen],e->song.author).c_str());
- }
- } else {
- SDL_SetWindowTitle(sdlWin,fmt::sprintf("%s - %s (%s)",e->song.name,trackers[rand()%trackersLen],e->getSongSystemName()).c_str());
- }
+ SDL_SetWindowTitle(sdlWin,fmt::sprintf("%s - Furnace (%s)",e->song.name,e->getSongSystemName()).c_str());
}
}
@@ -1321,17 +1277,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) {
dpiScale
);
break;
- case GUI_FILE_FIND_KONTAKT:
- curKStage=0;
- if (!dirExists(workingDirFont)) workingDirFont=getHomeDir();
- hasOpened=fileDialog->openLoad(
- "Find Plugin Path",
- {"plugins", "*.dll *.vst3 *.so *.dylib"},
- "plugins{.dll,.vst3,.so,.dylib}",
- workingDirFont,
- dpiScale
- );
- break;
}
if (hasOpened) curFileDialog=type;
//ImGui::GetIO().ConfigFlags|=ImGuiConfigFlags_NavEnableKeyboard;
@@ -1659,23 +1604,23 @@ void FurnaceGUI::processDrags(int dragX, int dragY) {
void FurnaceGUI::editOptions(bool topMenu) {
char id[4096];
- if (ImGui::MenuItem("Cut",BIND_FOR(GUI_ACTION_PAT_CUT))) doCopy(true);
- if (ImGui::MenuItem("Copy",BIND_FOR(GUI_ACTION_PAT_COPY))) doCopy(false);
- if (ImGui::MenuItem("Paste",BIND_FOR(GUI_ACTION_PAT_PASTE))) doPaste();
- if (ImGui::BeginMenu("Paste Special")) {
- if (ImGui::MenuItem("Paste Mix",BIND_FOR(GUI_ACTION_PAT_PASTE_MIX))) doPaste(GUI_PASTE_MODE_MIX_FG);
- if (ImGui::MenuItem("Paste Mix (background)",BIND_FOR(GUI_ACTION_PAT_PASTE_MIX_BG))) doPaste(GUI_PASTE_MODE_MIX_BG);
- if (ImGui::MenuItem("Paste Flood",BIND_FOR(GUI_ACTION_PAT_PASTE_FLOOD))) doPaste(GUI_PASTE_MODE_FLOOD);
- if (ImGui::MenuItem("Paste Overflow",BIND_FOR(GUI_ACTION_PAT_PASTE_OVERFLOW))) doPaste(GUI_PASTE_MODE_OVERFLOW);
+ if (ImGui::MenuItem("cut",BIND_FOR(GUI_ACTION_PAT_CUT))) doCopy(true);
+ if (ImGui::MenuItem("copy",BIND_FOR(GUI_ACTION_PAT_COPY))) doCopy(false);
+ if (ImGui::MenuItem("paste",BIND_FOR(GUI_ACTION_PAT_PASTE))) doPaste();
+ if (ImGui::BeginMenu("paste special...")) {
+ if (ImGui::MenuItem("paste mix",BIND_FOR(GUI_ACTION_PAT_PASTE_MIX))) doPaste(GUI_PASTE_MODE_MIX_FG);
+ if (ImGui::MenuItem("paste mix (background)",BIND_FOR(GUI_ACTION_PAT_PASTE_MIX_BG))) doPaste(GUI_PASTE_MODE_MIX_BG);
+ if (ImGui::MenuItem("paste flood",BIND_FOR(GUI_ACTION_PAT_PASTE_FLOOD))) doPaste(GUI_PASTE_MODE_FLOOD);
+ if (ImGui::MenuItem("paste overflow",BIND_FOR(GUI_ACTION_PAT_PASTE_OVERFLOW))) doPaste(GUI_PASTE_MODE_OVERFLOW);
ImGui::EndMenu();
}
- if (ImGui::MenuItem("Delete",BIND_FOR(GUI_ACTION_PAT_DELETE))) doDelete();
+ if (ImGui::MenuItem("delete",BIND_FOR(GUI_ACTION_PAT_DELETE))) doDelete();
if (topMenu) {
- if (ImGui::MenuItem("Select All",BIND_FOR(GUI_ACTION_PAT_SELECT_ALL))) doSelectAll();
+ if (ImGui::MenuItem("select all",BIND_FOR(GUI_ACTION_PAT_SELECT_ALL))) doSelectAll();
}
ImGui::Separator();
- ImGui::Text("Operation Mask");
+ ImGui::Text("operation mask");
ImGui::SameLine();
ImGui::PushFont(patFont);
@@ -1713,16 +1658,16 @@ void FurnaceGUI::editOptions(bool topMenu) {
}
ImGui::PopFont();
- ImGui::Text("Input Latch");
+ ImGui::Text("input latch");
if (ImGui::MenuItem("set latch",BIND_FOR(GUI_ACTION_PAT_LATCH))) {
// TODO
}
ImGui::Separator();
- if (ImGui::MenuItem("Increase Notes",BIND_FOR(GUI_ACTION_PAT_NOTE_UP))) doTranspose(1);
- if (ImGui::MenuItem("Decrease Notes",BIND_FOR(GUI_ACTION_PAT_NOTE_DOWN))) doTranspose(-1);
- if (ImGui::MenuItem("Increase Octaves",BIND_FOR(GUI_ACTION_PAT_OCTAVE_UP))) doTranspose(12);
- if (ImGui::MenuItem("Decrease Octaves",BIND_FOR(GUI_ACTION_PAT_OCTAVE_DOWN))) doTranspose(-12);
+ if (ImGui::MenuItem("note up",BIND_FOR(GUI_ACTION_PAT_NOTE_UP))) doTranspose(1);
+ if (ImGui::MenuItem("note down",BIND_FOR(GUI_ACTION_PAT_NOTE_DOWN))) doTranspose(-1);
+ if (ImGui::MenuItem("octave up",BIND_FOR(GUI_ACTION_PAT_OCTAVE_UP))) doTranspose(12);
+ if (ImGui::MenuItem("octave down",BIND_FOR(GUI_ACTION_PAT_OCTAVE_DOWN))) doTranspose(-12);
if (ImGui::InputInt("##TransposeAmount",&transposeAmount,1,1)) {
if (transposeAmount<-96) transposeAmount=-96;
if (transposeAmount>96) transposeAmount=96;
@@ -1734,8 +1679,8 @@ void FurnaceGUI::editOptions(bool topMenu) {
}
ImGui::Separator();
- if (ImGui::MenuItem("Interpolate",BIND_FOR(GUI_ACTION_PAT_INTERPOLATE))) doInterpolate();
- if (ImGui::BeginMenu("Change Instrument")) {
+ if (ImGui::MenuItem("interpolate",BIND_FOR(GUI_ACTION_PAT_INTERPOLATE))) doInterpolate();
+ if (ImGui::BeginMenu("change instrument...")) {
if (e->song.ins.empty()) {
ImGui::Text("no instruments available");
}
@@ -1747,7 +1692,7 @@ void FurnaceGUI::editOptions(bool topMenu) {
}
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Fade")) {
+ if (ImGui::BeginMenu("gradient/fade...")) {
if (ImGui::InputInt("Start",&fadeMin,1,1)) {
if (fadeMin<0) fadeMin=0;
if (fadeMode) {
@@ -1779,7 +1724,7 @@ void FurnaceGUI::editOptions(bool topMenu) {
}
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Scale")) {
+ if (ImGui::BeginMenu("scale...")) {
if (ImGui::InputFloat("##ScaleMax",&scaleMax,1,1,"%.1f%%")) {
if (scaleMax<0.0f) scaleMax=0.0f;
if (scaleMax>25600.0f) scaleMax=25600.0f;
@@ -1790,7 +1735,7 @@ void FurnaceGUI::editOptions(bool topMenu) {
}
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Randomize")) {
+ if (ImGui::BeginMenu("randomize...")) {
if (ImGui::InputInt("Minimum",&randomizeMin,1,1)) {
if (randomizeMin<0) randomizeMin=0;
if (randomMode) {
@@ -1825,22 +1770,22 @@ void FurnaceGUI::editOptions(bool topMenu) {
}
ImGui::EndMenu();
}
- if (ImGui::MenuItem("Invert Values",BIND_FOR(GUI_ACTION_PAT_INVERT_VALUES))) doInvertValues();
+ if (ImGui::MenuItem("invert values",BIND_FOR(GUI_ACTION_PAT_INVERT_VALUES))) doInvertValues();
ImGui::Separator();
- if (ImGui::MenuItem("Flip selection",BIND_FOR(GUI_ACTION_PAT_FLIP_SELECTION))) doFlip();
- if (ImGui::MenuItem("Shrink",BIND_FOR(GUI_ACTION_PAT_COLLAPSE_ROWS))) doCollapse(2);
- if (ImGui::MenuItem("Expand",BIND_FOR(GUI_ACTION_PAT_EXPAND_ROWS))) doExpand(2);
+ if (ImGui::MenuItem("flip selection",BIND_FOR(GUI_ACTION_PAT_FLIP_SELECTION))) doFlip();
+ if (ImGui::MenuItem("collapse",BIND_FOR(GUI_ACTION_PAT_COLLAPSE_ROWS))) doCollapse(2);
+ if (ImGui::MenuItem("expand",BIND_FOR(GUI_ACTION_PAT_EXPAND_ROWS))) doExpand(2);
if (topMenu) {
ImGui::Separator();
- ImGui::MenuItem("Shrink Pattern",BIND_FOR(GUI_ACTION_PAT_COLLAPSE_PAT));
- ImGui::MenuItem("Expand Pattern",BIND_FOR(GUI_ACTION_PAT_EXPAND_PAT));
+ ImGui::MenuItem("collapse pattern",BIND_FOR(GUI_ACTION_PAT_COLLAPSE_PAT));
+ ImGui::MenuItem("expand pattern",BIND_FOR(GUI_ACTION_PAT_EXPAND_PAT));
ImGui::Separator();
- ImGui::MenuItem("Shrink Song",BIND_FOR(GUI_ACTION_PAT_COLLAPSE_SONG));
- ImGui::MenuItem("Expand Song",BIND_FOR(GUI_ACTION_PAT_EXPAND_SONG));
+ ImGui::MenuItem("collapse song",BIND_FOR(GUI_ACTION_PAT_COLLAPSE_SONG));
+ ImGui::MenuItem("expand song",BIND_FOR(GUI_ACTION_PAT_EXPAND_SONG));
}
}
@@ -2137,15 +2082,15 @@ bool FurnaceGUI::loop() {
curWindow=GUI_WINDOW_NOTHING;
ImGui::BeginMainMenuBar();
- if (ImGui::BeginMenu("File")) {
- if (ImGui::MenuItem("New")) {
+ if (ImGui::BeginMenu("file")) {
+ if (ImGui::MenuItem("new...")) {
if (modified) {
showWarning("Unsaved changes! Are you sure?",GUI_WARN_NEW);
} else {
displayNew=true;
}
}
- if (ImGui::MenuItem("Open",BIND_FOR(GUI_ACTION_OPEN))) {
+ if (ImGui::MenuItem("open...",BIND_FOR(GUI_ACTION_OPEN))) {
if (modified) {
showWarning("Unsaved changes! Are you sure?",GUI_WARN_OPEN);
} else {
@@ -2153,7 +2098,7 @@ bool FurnaceGUI::loop() {
}
}
ImGui::Separator();
- if (ImGui::MenuItem("Save",BIND_FOR(GUI_ACTION_SAVE))) {
+ if (ImGui::MenuItem("save",BIND_FOR(GUI_ACTION_SAVE))) {
if (curFileName=="" || curFileName==backupPath || e->song.version>=0xff00) {
openFileDialog(GUI_FILE_SAVE);
} else {
@@ -2162,14 +2107,14 @@ bool FurnaceGUI::loop() {
}
}
}
- if (ImGui::MenuItem("Save As..",BIND_FOR(GUI_ACTION_SAVE_AS))) {
+ if (ImGui::MenuItem("save as...",BIND_FOR(GUI_ACTION_SAVE_AS))) {
openFileDialog(GUI_FILE_SAVE);
}
- if (ImGui::MenuItem("Save As .dmf (1.0/legacy)..",BIND_FOR(GUI_ACTION_SAVE_AS))) {
+ if (ImGui::MenuItem("save as .dmf (1.0/legacy)...",BIND_FOR(GUI_ACTION_SAVE_AS))) {
openFileDialog(GUI_FILE_SAVE_DMF_LEGACY);
}
ImGui::Separator();
- if (ImGui::BeginMenu("Save WAV")) {
+ if (ImGui::BeginMenu("export audio...")) {
if (ImGui::MenuItem("one file")) {
openFileDialog(GUI_FILE_EXPORT_AUDIO_ONE);
}
@@ -2184,7 +2129,7 @@ bool FurnaceGUI::loop() {
}
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Save VGM")) {
+ if (ImGui::BeginMenu("export VGM...")) {
ImGui::Text("settings:");
ImGui::Checkbox("loop",&vgmExportLoop);
ImGui::Text("systems to export:");;
@@ -2213,13 +2158,13 @@ bool FurnaceGUI::loop() {
ImGui::EndMenu();
}
ImGui::Separator();
- if (ImGui::BeginMenu("Add System")) {
+ if (ImGui::BeginMenu("add system...")) {
for (int j=0; availableSystems[j]; j++) {
sysAddOption((DivSystem)availableSystems[j]);
}
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Configure System")) {
+ if (ImGui::BeginMenu("configure system...")) {
for (int i=0; isong.systemLen; i++) {
if (ImGui::TreeNode(fmt::sprintf("%d. %s##_SYSP%d",i+1,getSystemName(e->song.system[i]),i).c_str())) {
drawSysConf(i);
@@ -2228,7 +2173,7 @@ bool FurnaceGUI::loop() {
}
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Change System")) {
+ if (ImGui::BeginMenu("change system...")) {
for (int i=0; isong.systemLen; i++) {
if (ImGui::BeginMenu(fmt::sprintf("%d. %s##_SYSC%d",i+1,getSystemName(e->song.system[i]),i).c_str())) {
for (int j=0; availableSystems[j]; j++) {
@@ -2239,7 +2184,7 @@ bool FurnaceGUI::loop() {
}
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Remove System")) {
+ if (ImGui::BeginMenu("remove system...")) {
for (int i=0; isong.systemLen; i++) {
if (ImGui::MenuItem(fmt::sprintf("%d. %s##_SYSR%d",i+1,getSystemName(e->song.system[i]),i).c_str())) {
if (!e->removeSystem(i)) {
@@ -2250,7 +2195,7 @@ bool FurnaceGUI::loop() {
ImGui::EndMenu();
}
ImGui::Separator();
- if (ImGui::MenuItem("Restore Backup",BIND_FOR(GUI_ACTION_OPEN_BACKUP))) {
+ if (ImGui::MenuItem("restore backup",BIND_FOR(GUI_ACTION_OPEN_BACKUP))) {
doAction(GUI_ACTION_OPEN_BACKUP);
}
ImGui::Separator();
@@ -2263,32 +2208,32 @@ bool FurnaceGUI::loop() {
}
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Edit")) {
- if (ImGui::MenuItem("Undo",BIND_FOR(GUI_ACTION_UNDO))) doUndo();
- if (ImGui::MenuItem("Redo",BIND_FOR(GUI_ACTION_REDO))) doRedo();
+ if (ImGui::BeginMenu("edit")) {
+ if (ImGui::MenuItem("undo",BIND_FOR(GUI_ACTION_UNDO))) doUndo();
+ if (ImGui::MenuItem("redo",BIND_FOR(GUI_ACTION_REDO))) doRedo();
ImGui::Separator();
editOptions(true);
/*ImGui::Separator();
ImGui::MenuItem("clear...");*/
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Options")) {
- if (ImGui::MenuItem("Visualizer",NULL,fancyPattern)) {
+ if (ImGui::BeginMenu("settings")) {
+ if (ImGui::MenuItem("visualizer",NULL,fancyPattern)) {
fancyPattern=!fancyPattern;
e->enableCommandStream(fancyPattern);
e->getCommandStream(cmdStream);
cmdStream.clear();
}
- if (ImGui::MenuItem("Reset Layout")) {
+ if (ImGui::MenuItem("reset layout")) {
showWarning("Are you sure you want to reset the workspace layout?",GUI_WARN_RESET_LAYOUT);
}
- if (ImGui::MenuItem("Settings",BIND_FOR(GUI_ACTION_WINDOW_SETTINGS))) {
+ if (ImGui::MenuItem("settings...",BIND_FOR(GUI_ACTION_WINDOW_SETTINGS))) {
syncSettings();
settingsOpen=true;
}
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Window")) {
+ if (ImGui::BeginMenu("window")) {
if (ImGui::MenuItem("song information",BIND_FOR(GUI_ACTION_WINDOW_SONG_INFO),songInfoOpen)) songInfoOpen=!songInfoOpen;
if (ImGui::MenuItem("instruments",BIND_FOR(GUI_ACTION_WINDOW_INS_LIST),insListOpen)) insListOpen=!insListOpen;
if (ImGui::MenuItem("wavetables",BIND_FOR(GUI_ACTION_WINDOW_WAVE_LIST),waveListOpen)) waveListOpen=!waveListOpen;
@@ -2313,13 +2258,12 @@ bool FurnaceGUI::loop() {
ImGui::EndMenu();
}
- if (ImGui::BeginMenu("Help")) {
- if (ImGui::MenuItem("Reset Tutorial",BIND_FOR(GUI_ACTION_WINDOW_DEBUG))) debugOpen=!debugOpen;
- if (ImGui::MenuItem("Manual",BIND_FOR(GUI_ACTION_PANIC))) e->syncReset();
- if (ImGui::MenuItem("About",BIND_FOR(GUI_ACTION_WINDOW_ABOUT))) {
+ if (ImGui::BeginMenu("help")) {
+ if (ImGui::MenuItem("debug menu",BIND_FOR(GUI_ACTION_WINDOW_DEBUG))) debugOpen=!debugOpen;
+ if (ImGui::MenuItem("panic",BIND_FOR(GUI_ACTION_PANIC))) e->syncReset();
+ if (ImGui::MenuItem("about...",BIND_FOR(GUI_ACTION_WINDOW_ABOUT))) {
aboutOpen=true;
aboutScroll=0;
- play();
}
ImGui::EndMenu();
}
@@ -2327,7 +2271,7 @@ bool FurnaceGUI::loop() {
if (e->isPlaying()) {
int totalTicks=e->getTotalTicks();
int totalSeconds=e->getTotalSeconds();
- ImGui::Text("| Slowness %d:%d @ %g BPM (%gHz) | Order %d/%d | Row %d/%d | %d:%.2d:%.2d.%.2d",e->getSpeed1(),e->getSpeed2(),e->getCurHz(),calcBPM(e->getSpeed1(),e->getSpeed2(),e->getCurHz()),e->getOrder(),e->song.ordersLen,e->getRow(),e->song.patLen,totalSeconds/3600,(totalSeconds/60)%60,totalSeconds%60,totalTicks/10000);
+ ImGui::Text("| Speed %d:%d @ %gHz (%g BPM) | Order %d/%d | Row %d/%d | %d:%.2d:%.2d.%.2d",e->getSpeed1(),e->getSpeed2(),e->getCurHz(),calcBPM(e->getSpeed1(),e->getSpeed2(),e->getCurHz()),e->getOrder(),e->song.ordersLen,e->getRow(),e->song.patLen,totalSeconds/3600,(totalSeconds/60)%60,totalSeconds%60,totalTicks/10000);
} else {
bool hasInfo=false;
String info;
@@ -2435,7 +2379,6 @@ bool FurnaceGUI::loop() {
break;
case GUI_FILE_INS_OPEN:
case GUI_FILE_INS_SAVE:
- case GUI_FILE_FIND_KONTAKT:
workingDirIns=fileDialog->getPath()+DIR_SEPARATOR_STR;
break;
case GUI_FILE_WAVE_OPEN:
@@ -2583,9 +2526,6 @@ bool FurnaceGUI::loop() {
case GUI_FILE_EXPORT_ROM:
showError("Coming soon!");
break;
- case GUI_FILE_FIND_KONTAKT:
- showWarning("This is not the Kontakt 5 plugin!",GUI_WARN_KONTAKT);
- break;
case GUI_FILE_LOAD_MAIN_FONT:
settings.mainFontPath=copyOfName;
break;
@@ -2655,58 +2595,41 @@ bool FurnaceGUI::loop() {
if (ImGui::BeginPopupModal("Warning",NULL,ImGuiWindowFlags_AlwaysAutoResize)) {
ImGui::Text("%s",warnString.c_str());
- if (warnAction==GUI_WARN_KONTAKT) {
- if (ImGui::Button("OK")) {
- ImGui::CloseCurrentPopup();
+ if (ImGui::Button(warnAction==GUI_WARN_GENERIC?"OK":"Yes")) {
+ ImGui::CloseCurrentPopup();
+ switch (warnAction) {
+ case GUI_WARN_QUIT:
+ quit=true;
+ break;
+ case GUI_WARN_NEW:
+ displayNew=true;
+ break;
+ case GUI_WARN_OPEN:
+ openFileDialog(GUI_FILE_OPEN);
+ break;
+ case GUI_WARN_OPEN_BACKUP:
+ if (load(backupPath)>0) {
+ showError("No backup available! (or unable to open it)");
+ }
+ break;
+ case GUI_WARN_OPEN_DROP:
+ if (load(nextFile)>0) {
+ showError(fmt::sprintf("Error while loading file! (%s)",lastError));
+ }
+ nextFile="";
+ break;
+ case GUI_WARN_RESET_LAYOUT:
+ ImGui::LoadIniSettingsFromMemory(defaultLayout);
+ ImGui::SaveIniSettingsToDisk(finalLayoutPath);
+ break;
+ case GUI_WARN_GENERIC:
+ break;
}
+ }
+ if (warnAction!=GUI_WARN_GENERIC) {
ImGui::SameLine();
- if (ImGui::Button(kButtons[curKStage])) {
- curKStage++;
- showWarning(kStages[curKStage],GUI_WARN_KONTAKT);
- }
- if ((ImGui::IsItemHovered() && curKStage==6 && !ImGui::IsItemActive()) || (curKStage==9 && !ImGui::IsItemHovered()) || curKStage==10) {
- ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
- e->noteOn(rand()%e->getTotalChannelCount(),(e->song.insLen==0)?0:(rand()%e->song.insLen),rand()%128);
- }
- } else {
- if (ImGui::Button(warnAction==GUI_WARN_GENERIC?"OK":"Yes")) {
+ if (ImGui::Button("No")) {
ImGui::CloseCurrentPopup();
- switch (warnAction) {
- case GUI_WARN_QUIT:
- quit=true;
- break;
- case GUI_WARN_NEW:
- displayNew=true;
- break;
- case GUI_WARN_OPEN:
- openFileDialog(GUI_FILE_OPEN);
- break;
- case GUI_WARN_OPEN_BACKUP:
- if (load(backupPath)>0) {
- showError("No backup available! (or unable to open it)");
- }
- break;
- case GUI_WARN_OPEN_DROP:
- if (load(nextFile)>0) {
- showError(fmt::sprintf("Error while loading file! (%s)",lastError));
- }
- nextFile="";
- break;
- case GUI_WARN_RESET_LAYOUT:
- ImGui::LoadIniSettingsFromMemory(defaultLayout);
- ImGui::SaveIniSettingsToDisk(finalLayoutPath);
- break;
- case GUI_WARN_GENERIC:
- break;
- case GUI_WARN_KONTAKT:
- break;
- }
- }
- if (warnAction!=GUI_WARN_GENERIC) {
- ImGui::SameLine();
- if (ImGui::Button("No")) {
- ImGui::CloseCurrentPopup();
- }
}
}
ImGui::EndPopup();
@@ -2769,7 +2692,6 @@ bool FurnaceGUI::loop() {
}
bool FurnaceGUI::init() {
- srand(time(NULL));
#ifndef __APPLE__
float dpiScaleF;
#endif
@@ -2830,7 +2752,7 @@ bool FurnaceGUI::init() {
SDL_Init(SDL_INIT_VIDEO);
- sdlWin=SDL_CreateWindow("PlagiaTracker",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,scrW*dpiScale,scrH*dpiScale,SDL_WINDOW_RESIZABLE|SDL_WINDOW_ALLOW_HIGHDPI);
+ sdlWin=SDL_CreateWindow("Furnace",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,scrW*dpiScale,scrH*dpiScale,SDL_WINDOW_RESIZABLE|SDL_WINDOW_ALLOW_HIGHDPI);
if (sdlWin==NULL) {
logE("could not open window! %s\n",SDL_GetError());
return false;
@@ -3029,7 +2951,6 @@ FurnaceGUI::FurnaceGUI():
loopRow(-1),
loopEnd(-1),
isClipping(0),
- curKStage(0),
extraChannelButtons(0),
patNameTarget(-1),
newSongCategory(0),
diff --git a/src/gui/gui.h b/src/gui/gui.h
index 1bcaec75..bf2050f0 100644
--- a/src/gui/gui.h
+++ b/src/gui/gui.h
@@ -192,8 +192,7 @@ enum FurnaceGUIFileDialogs {
GUI_FILE_EXPORT_VGM,
GUI_FILE_EXPORT_ROM,
GUI_FILE_LOAD_MAIN_FONT,
- GUI_FILE_LOAD_PAT_FONT,
- GUI_FILE_FIND_KONTAKT
+ GUI_FILE_LOAD_PAT_FONT
};
enum FurnaceGUIWarnings {
@@ -203,8 +202,7 @@ enum FurnaceGUIWarnings {
GUI_WARN_OPEN_BACKUP,
GUI_WARN_OPEN_DROP,
GUI_WARN_RESET_LAYOUT,
- GUI_WARN_GENERIC,
- GUI_WARN_KONTAKT
+ GUI_WARN_GENERIC
};
enum FurnaceGUIFMAlgs {
@@ -730,7 +728,6 @@ class FurnaceGUI {
int loadJapanese;
int fmLayout;
int susPosition;
- int seriousMode;
unsigned int maxUndoSteps;
String mainFontPath;
String patFontPath;
@@ -785,7 +782,6 @@ class FurnaceGUI {
loadJapanese(0),
fmLayout(0),
susPosition(0),
- seriousMode(0),
maxUndoSteps(100),
mainFontPath(""),
patFontPath(""),
@@ -797,7 +793,7 @@ class FurnaceGUI {
char finalLayoutPath[4096];
int curIns, curWave, curSample, curOctave, oldRow, oldOrder, oldOrder1, editStep, exportLoops, soloChan, soloTimeout, orderEditMode, orderCursor;
- int loopOrder, loopRow, loopEnd, isClipping, curKStage, extraChannelButtons, patNameTarget, newSongCategory;
+ int loopOrder, loopRow, loopEnd, isClipping, extraChannelButtons, patNameTarget, newSongCategory;
bool editControlsOpen, ordersOpen, insListOpen, songInfoOpen, patternOpen, insEditOpen;
bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen, settingsOpen;
bool mixerOpen, debugOpen, inspectorOpen, oscOpen, volMeterOpen, statsOpen, compatFlagsOpen;
diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp
index 707cc7d7..01c60373 100644
--- a/src/gui/guiConst.cpp
+++ b/src/gui/guiConst.cpp
@@ -355,11 +355,9 @@ const int availableSystems[]={
DIV_SYSTEM_YM2610_FULL_EXT,
DIV_SYSTEM_YM2610B,
DIV_SYSTEM_YM2610B_EXT,
- DIV_SYSTEM_KONTAKT_5,
DIV_SYSTEM_AY8910,
DIV_SYSTEM_AMIGA,
DIV_SYSTEM_PCSPKR,
- DIV_SYSTEM_HDA,
DIV_SYSTEM_OPLL,
DIV_SYSTEM_OPLL_DRUMS,
DIV_SYSTEM_VRC7,
@@ -385,35 +383,3 @@ const int availableSystems[]={
0 // don't remove this last one!
};
-const char* kStages[]={
- "Error while loading plugin: Use of force prohibited.",
- "I said this is NOT Kontakt 5!",
- "But I said this is not Kontakt 5!",
- "You are the one who cannot realize this ain't Kontakt 5!",
- "\"What are you smoking\" Are you serious! I am a furnace!",
- "In your DAW, silly. You really thought Furnace was a DAW?",
- "Okay, okay, if I load your Kontakt 5 will you be happy?",
- "Fatal Python error: init_import_site: Failed to import the site module\n\
-Python runtime state: initialized\n\
-Traceback (most recent call last):\n\
- File \"/usr/lib/python3.9/site.py\", line 589, in \n\
- button_clicked()\n\
-ButtonClickedException",
- "Wait, there's more! Wanna see Kontakt 5 for real?",
- "Loading Kontakt 5 in 3...",
- "2...",
-};
-
-const char* kButtons[]={
- "It IS Kontakt 5!",
- "But it is Kontakt 5!",
- "I repeat, this IS Kontakt 5! Are you blind or what?",
- "But look at the file name! What are you smoking!",
- "Who cares where is my damn Kontakt 5!",
- "Then why is there a Kontakt 5 option in the menu!",
- "Yes! Pretty please with a cherry on top!",
- "Oh fuck you for wasting my day!",
- "Not anymore! I'm so pissed off!",
- "Shut the hell up! I'm past my bed time!",
- "Smash every button in the keyboard"
-};
\ No newline at end of file
diff --git a/src/gui/guiConst.h b/src/gui/guiConst.h
index 64855eaa..6b55df86 100644
--- a/src/gui/guiConst.h
+++ b/src/gui/guiConst.h
@@ -28,6 +28,4 @@ extern const char* sampleDepths[17];
extern const char* resampleStrats[];
extern const int availableSystems[];
extern const char* guiActions[][2];
-extern const int altValues[24];
-extern const char* kStages[];
-extern const char* kButtons[];
\ No newline at end of file
+extern const int altValues[24];
\ No newline at end of file
diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp
index a49919dd..9cf382cf 100644
--- a/src/gui/insEdit.cpp
+++ b/src/gui/insEdit.cpp
@@ -1127,7 +1127,6 @@ void FurnaceGUI::drawInsEdit() {
if (!insEditOpen) return;
ImGui::SetNextWindowSizeConstraints(ImVec2(440.0f*dpiScale,400.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale));
if (ImGui::Begin("Instrument Editor",&insEditOpen,settings.allowEditDocking?0:ImGuiWindowFlags_NoDocking)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
if (curIns<0 || curIns>=(int)e->song.ins.size()) {
ImGui::Text("no instrument selected");
} else {
diff --git a/src/gui/mixer.cpp b/src/gui/mixer.cpp
index 14e68230..04710176 100644
--- a/src/gui/mixer.cpp
+++ b/src/gui/mixer.cpp
@@ -30,7 +30,6 @@ void FurnaceGUI::drawMixer() {
ImGui::SetNextWindowSizeConstraints(ImVec2(400.0f*dpiScale,200.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale));
if (ImGui::Begin("Mixer",&mixerOpen,settings.allowEditDocking?0:ImGuiWindowFlags_NoDocking)) {
char id[32];
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
if (ImGui::SliderFloat("Master Volume",&e->song.masterVol,0,3,"%.2fx")) {
if (e->song.masterVol<0) e->song.masterVol=0;
if (e->song.masterVol>3) e->song.masterVol=3;
diff --git a/src/gui/newSong.cpp b/src/gui/newSong.cpp
index 6fac285c..d6188b3e 100644
--- a/src/gui/newSong.cpp
+++ b/src/gui/newSong.cpp
@@ -85,9 +85,6 @@ void FurnaceGUI::drawNewSong() {
selEnd=SelectionPoint();
cursor=SelectionPoint();
updateWindowTitle();
- if (e->song.system[0]==DIV_SYSTEM_KONTAKT_5) {
- showError("Kontakt not installed or detected!\nPlease use the \"Set plugin path\" option in the Configure System menu first.");
- }
ImGui::CloseCurrentPopup();
}
}
\ No newline at end of file
diff --git a/src/gui/orders.cpp b/src/gui/orders.cpp
index ca1255ea..37faba8d 100644
--- a/src/gui/orders.cpp
+++ b/src/gui/orders.cpp
@@ -30,7 +30,6 @@ void FurnaceGUI::drawOrders() {
}
if (!ordersOpen) return;
if (ImGui::Begin("Orders",&ordersOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
float regionX=ImGui::GetContentRegionAvail().x;
ImVec2 prevSpacing=ImGui::GetStyle().ItemSpacing;
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing,ImVec2(1.0f*dpiScale,1.0f*dpiScale));
diff --git a/src/gui/osc.cpp b/src/gui/osc.cpp
index ff205ef5..0bdcdf8a 100644
--- a/src/gui/osc.cpp
+++ b/src/gui/osc.cpp
@@ -31,7 +31,6 @@ void FurnaceGUI::drawOsc() {
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing,ImVec2(0,0));
ImGui::PushStyleVar(ImGuiStyleVar_ItemInnerSpacing,ImVec2(0,0));
if (ImGui::Begin("Oscilloscope",&oscOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
float values[512];
for (int i=0; i<512; i++) {
int pos=i*e->oscSize/512;
diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp
index 298260c3..79612827 100644
--- a/src/gui/pattern.cpp
+++ b/src/gui/pattern.cpp
@@ -27,7 +27,7 @@
#include
const FurnaceGUIColors fxColors[16]={
- GUI_COLOR_PATTERN_EFFECT_INVALID, // 00
+ GUI_COLOR_PATTERN_EFFECT_MISC, // 00
GUI_COLOR_PATTERN_EFFECT_PITCH, // 01
GUI_COLOR_PATTERN_EFFECT_PITCH, // 02
GUI_COLOR_PATTERN_EFFECT_PITCH, // 03
@@ -192,22 +192,22 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
// instrument
if (pat->data[i][2]==-1) {
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INACTIVE]);
- sprintf(id,"...##PI_%d_%d",i,j);
+ sprintf(id,"..##PI_%d_%d",i,j);
} else {
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INS]);
- sprintf(id,"%.3d##PI_%d_%d",pat->data[i][2],i,j);
+ sprintf(id,"%.2X##PI_%d_%d",pat->data[i][2],i,j);
}
ImGui::SameLine(0.0f,0.0f);
if (cursorIns) {
ImGui::PushStyleColor(ImGuiCol_Header,uiColors[GUI_COLOR_PATTERN_CURSOR]);
ImGui::PushStyleColor(ImGuiCol_HeaderActive,uiColors[GUI_COLOR_PATTERN_CURSOR_ACTIVE]);
ImGui::PushStyleColor(ImGuiCol_HeaderHovered,uiColors[GUI_COLOR_PATTERN_CURSOR_HOVER]);
- ImGui::Selectable(id,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,threeChars);
+ ImGui::Selectable(id,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,twoChars);
demandX=ImGui::GetCursorPosX();
ImGui::PopStyleColor(3);
} else {
if (selectedIns) ImGui::PushStyleColor(ImGuiCol_Header,uiColors[GUI_COLOR_PATTERN_SELECTION]);
- ImGui::Selectable(id,isPushing || selectedIns,ImGuiSelectableFlags_NoPadWithHalfSpacing,threeChars);
+ ImGui::Selectable(id,isPushing || selectedIns,ImGuiSelectableFlags_NoPadWithHalfSpacing,twoChars);
if (selectedIns) ImGui::PopStyleColor();
}
if (ImGui::IsItemClicked()) {
@@ -220,13 +220,13 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
// volume
if (pat->data[i][3]==-1) {
- sprintf(id,"...##PV_%d_%d",i,j);
+ sprintf(id,"..##PV_%d_%d",i,j);
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INACTIVE]);
} else {
int volColor=(pat->data[i][3]*127)/chanVolMax;
if (volColor>127) volColor=127;
if (volColor<0) volColor=0;
- sprintf(id,"%3d##PV_%d_%d",pat->data[i][3],i,j);
+ sprintf(id,"%.2X##PV_%d_%d",pat->data[i][3],i,j);
ImGui::PushStyleColor(ImGuiCol_Text,volColors[volColor]);
}
ImGui::SameLine(0.0f,0.0f);
@@ -234,12 +234,12 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
ImGui::PushStyleColor(ImGuiCol_Header,uiColors[GUI_COLOR_PATTERN_CURSOR]);
ImGui::PushStyleColor(ImGuiCol_HeaderActive,uiColors[GUI_COLOR_PATTERN_CURSOR_ACTIVE]);
ImGui::PushStyleColor(ImGuiCol_HeaderHovered,uiColors[GUI_COLOR_PATTERN_CURSOR_HOVER]);
- ImGui::Selectable(id,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,threeChars);
+ ImGui::Selectable(id,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,twoChars);
demandX=ImGui::GetCursorPosX();
ImGui::PopStyleColor(3);
} else {
if (selectedVol) ImGui::PushStyleColor(ImGuiCol_Header,uiColors[GUI_COLOR_PATTERN_SELECTION]);
- ImGui::Selectable(id,isPushing || selectedVol,ImGuiSelectableFlags_NoPadWithHalfSpacing,threeChars);
+ ImGui::Selectable(id,isPushing || selectedVol,ImGuiSelectableFlags_NoPadWithHalfSpacing,twoChars);
if (selectedVol) ImGui::PopStyleColor();
}
if (ImGui::IsItemClicked()) {
@@ -260,10 +260,10 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
// effect
if (pat->data[i][index]==-1) {
- sprintf(id,"...##PE%d_%d_%d",k,i,j);
+ sprintf(id,"..##PE%d_%d_%d",k,i,j);
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INACTIVE]);
} else {
- sprintf(id,"%03d##PE%d_%d_%d",pat->data[i][index],k,i,j);
+ sprintf(id,"%.2X##PE%d_%d_%d",pat->data[i][index],k,i,j);
if (pat->data[i][index]<0x10) {
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[fxColors[pat->data[i][index]]]);
} else if (pat->data[i][index]<0x20) {
@@ -291,12 +291,12 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
ImGui::PushStyleColor(ImGuiCol_Header,uiColors[GUI_COLOR_PATTERN_CURSOR]);
ImGui::PushStyleColor(ImGuiCol_HeaderActive,uiColors[GUI_COLOR_PATTERN_CURSOR_ACTIVE]);
ImGui::PushStyleColor(ImGuiCol_HeaderHovered,uiColors[GUI_COLOR_PATTERN_CURSOR_HOVER]);
- ImGui::Selectable(id,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,threeChars);
+ ImGui::Selectable(id,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,twoChars);
demandX=ImGui::GetCursorPosX();
ImGui::PopStyleColor(3);
} else {
if (selectedEffect) ImGui::PushStyleColor(ImGuiCol_Header,uiColors[GUI_COLOR_PATTERN_SELECTION]);
- ImGui::Selectable(id,isPushing || selectedEffect,ImGuiSelectableFlags_NoPadWithHalfSpacing,threeChars);
+ ImGui::Selectable(id,isPushing || selectedEffect,ImGuiSelectableFlags_NoPadWithHalfSpacing,twoChars);
if (selectedEffect) ImGui::PopStyleColor();
}
if (ImGui::IsItemClicked()) {
@@ -308,21 +308,21 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
// effect value
if (pat->data[i][index+1]==-1) {
- sprintf(id,"...##PF%d_%d_%d",k,i,j);
+ sprintf(id,"..##PF%d_%d_%d",k,i,j);
} else {
- sprintf(id,"%03d##PF%d_%d_%d",pat->data[i][index+1],k,i,j);
+ sprintf(id,"%.2X##PF%d_%d_%d",pat->data[i][index+1],k,i,j);
}
ImGui::SameLine(0.0f,0.0f);
if (cursorEffectVal) {
ImGui::PushStyleColor(ImGuiCol_Header,uiColors[GUI_COLOR_PATTERN_CURSOR]);
ImGui::PushStyleColor(ImGuiCol_HeaderActive,uiColors[GUI_COLOR_PATTERN_CURSOR_ACTIVE]);
ImGui::PushStyleColor(ImGuiCol_HeaderHovered,uiColors[GUI_COLOR_PATTERN_CURSOR_HOVER]);
- ImGui::Selectable(id,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,threeChars);
+ ImGui::Selectable(id,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,twoChars);
demandX=ImGui::GetCursorPosX();
ImGui::PopStyleColor(3);
} else {
if (selectedEffectVal) ImGui::PushStyleColor(ImGuiCol_Header,uiColors[GUI_COLOR_PATTERN_SELECTION]);
- ImGui::Selectable(id,isPushing || selectedEffectVal,ImGuiSelectableFlags_NoPadWithHalfSpacing,threeChars);
+ ImGui::Selectable(id,isPushing || selectedEffectVal,ImGuiSelectableFlags_NoPadWithHalfSpacing,twoChars);
if (selectedEffectVal) ImGui::PopStyleColor();
}
if (ImGui::IsItemClicked()) {
@@ -377,7 +377,6 @@ void FurnaceGUI::drawPattern() {
}
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding,ImVec2(0.0f,0.0f));
if (ImGui::Begin("Pattern",&patternOpen,settings.avoidRaisingPattern?ImGuiWindowFlags_NoBringToFrontOnFocus:0)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
//ImGui::SetWindowSize(ImVec2(scrW*dpiScale,scrH*dpiScale));
patWindowPos=ImGui::GetWindowPos();
patWindowSize=ImGui::GetWindowSize();
@@ -398,7 +397,7 @@ void FurnaceGUI::drawPattern() {
ImGui::TableSetupColumn("pos",ImGuiTableColumnFlags_WidthFixed);
char chanID[2048];
float lineHeight=(ImGui::GetTextLineHeight()+2*dpiScale);
- int curRow=(e->getOrder()&1 && !settings.seriousMode)?(e->song.patLen-e->getRow()-1):e->getRow();
+ int curRow=e->getRow();
if (e->isPlaying() && followPattern) updateScroll(curRow);
if (nextScroll>-0.5f) {
ImGui::SetScrollY(nextScroll);
@@ -561,7 +560,7 @@ void FurnaceGUI::drawPattern() {
}
ImGui::TableNextColumn();
if (e->hasExtValue()) {
- ImGui::TextColored(uiColors[GUI_COLOR_EE_VALUE]," %d",e->getExtValue());
+ ImGui::TextColored(uiColors[GUI_COLOR_EE_VALUE]," %.2X",e->getExtValue());
}
float oneCharSize=ImGui::CalcTextSize("A").x;
threeChars=ImVec2(oneCharSize*3.0f,lineHeight);
@@ -583,14 +582,8 @@ void FurnaceGUI::drawPattern() {
}
ImGui::EndDisabled();
// active area
- if (e->getOrder()&1 && !settings.seriousMode) {
- for (int i=e->song.patLen-1; i>=0; i--) {
- patternRow(i,e->isPlaying(),lineHeight,chans,ord);
- }
- } else {
- for (int i=0; isong.patLen; i++) {
- patternRow(i,e->isPlaying(),lineHeight,chans,ord);
- }
+ for (int i=0; isong.patLen; i++) {
+ patternRow(i,e->isPlaying(),lineHeight,chans,ord);
}
// next pattern
ImGui::BeginDisabled();
diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp
index cfa310b3..f92c2b35 100644
--- a/src/gui/presets.cpp
+++ b/src/gui/presets.cpp
@@ -33,21 +33,6 @@
void FurnaceGUI::initSystemPresets() {
FurnaceGUISysCategory cat;
- cat=FurnaceGUISysCategory("FT Studio");
- cat.systems.push_back(FurnaceGUISysDef(
- "Realtek HD Audio", {
- DIV_SYSTEM_HDA, 64, 0, 0,
- 0
- }
- ));
- cat.systems.push_back(FurnaceGUISysDef(
- "Kontakt 5", {
- DIV_SYSTEM_KONTAKT_5, 64, 0, 0,
- 0
- }
- ));
- sysCategories.push_back(cat);
-
cat=FurnaceGUISysCategory("FM");
cat.systems.push_back(FurnaceGUISysDef(
"Yamaha YM2612", {
diff --git a/src/gui/regView.cpp b/src/gui/regView.cpp
index 6668528d..9755e4a8 100644
--- a/src/gui/regView.cpp
+++ b/src/gui/regView.cpp
@@ -27,7 +27,6 @@ void FurnaceGUI::drawRegView() {
}
if (!regViewOpen) return;
if (ImGui::Begin("Register View",®ViewOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
for (int i=0; isong.systemLen; i++) {
ImGui::Text("%d. %s",i+1,getSystemName(e->song.system[i]));
int size=0;
diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp
index 80b57ef0..0998856c 100644
--- a/src/gui/sampleEdit.cpp
+++ b/src/gui/sampleEdit.cpp
@@ -36,7 +36,6 @@ void FurnaceGUI::drawSampleEdit() {
}
if (!sampleEditOpen) return;
if (ImGui::Begin("Sample Editor",&sampleEditOpen,settings.allowEditDocking?0:ImGuiWindowFlags_NoDocking)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
if (curSample<0 || curSample>=(int)e->song.sample.size()) {
ImGui::Text("no sample selected");
} else {
diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp
index 5c5b7e67..b9e616da 100644
--- a/src/gui/settings.cpp
+++ b/src/gui/settings.cpp
@@ -211,12 +211,6 @@ void FurnaceGUI::drawSettings() {
if (ImGui::Begin("Settings",NULL,ImGuiWindowFlags_NoDocking)) {
if (ImGui::BeginTabBar("settingsTab")) {
if (ImGui::BeginTabItem("General")) {
- bool seriousModeB=settings.seriousMode;
- if (ImGui::Checkbox("END MY SUFFERING!",&seriousModeB)) {
- settings.seriousMode=seriousModeB;
- showError("You know the rules, and so do I!");
- }
-
ImGui::Text("Toggle channel solo on:");
if (ImGui::RadioButton("Right-click or double-click##soloA",settings.soloAction==0)) {
settings.soloAction=0;
@@ -1355,7 +1349,6 @@ void FurnaceGUI::syncSettings() {
settings.loadJapanese=e->getConfInt("loadJapanese",0);
settings.fmLayout=e->getConfInt("fmLayout",0);
settings.susPosition=e->getConfInt("susPosition",0);
- settings.seriousMode=e->getConfInt("seriousMode",0);
clampSetting(settings.mainFontSize,2,96);
clampSetting(settings.patFontSize,2,96);
@@ -1402,7 +1395,6 @@ void FurnaceGUI::syncSettings() {
clampSetting(settings.loadJapanese,0,1);
clampSetting(settings.fmLayout,0,3);
clampSetting(settings.susPosition,0,1);
- clampSetting(settings.seriousMode,0,1);
// keybinds
LOAD_KEYBIND(GUI_ACTION_OPEN,FURKMOD_CMD|SDLK_o);
@@ -1646,7 +1638,6 @@ void FurnaceGUI::commitSettings() {
e->setConf("loadJapanese",settings.loadJapanese);
e->setConf("fmLayout",settings.fmLayout);
e->setConf("susPosition",settings.susPosition);
- e->setConf("seriousMode",settings.seriousMode);
PUT_UI_COLOR(GUI_COLOR_BACKGROUND);
PUT_UI_COLOR(GUI_COLOR_FRAME_BACKGROUND);
diff --git a/src/gui/songInfo.cpp b/src/gui/songInfo.cpp
index 3d4934b4..b5923801 100644
--- a/src/gui/songInfo.cpp
+++ b/src/gui/songInfo.cpp
@@ -29,7 +29,6 @@ void FurnaceGUI::drawSongInfo() {
}
if (!songInfoOpen) return;
if (ImGui::Begin("Song Information",&songInfoOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
if (ImGui::BeginTable("NameAuthor",2,ImGuiTableFlags_SizingStretchProp)) {
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0);
ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0);
diff --git a/src/gui/songNotes.cpp b/src/gui/songNotes.cpp
index 5e1f5684..7c7cbdaa 100644
--- a/src/gui/songNotes.cpp
+++ b/src/gui/songNotes.cpp
@@ -30,7 +30,6 @@ void FurnaceGUI::drawNotes() {
}
if (!notesOpen) return;
if (ImGui::Begin("Song Comments",¬esOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
ImGui::InputTextMultiline("##SongNotes",&e->song.notes,ImGui::GetContentRegionAvail());
}
if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_NOTES;
diff --git a/src/gui/stats.cpp b/src/gui/stats.cpp
index 4f012eb6..274be2ed 100644
--- a/src/gui/stats.cpp
+++ b/src/gui/stats.cpp
@@ -28,7 +28,6 @@ void FurnaceGUI::drawStats() {
}
if (!statsOpen) return;
if (ImGui::Begin("Statistics",&statsOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
String adpcmAUsage=fmt::sprintf("%d/16384KB",e->adpcmAMemLen/1024);
String adpcmBUsage=fmt::sprintf("%d/16384KB",e->adpcmBMemLen/1024);
String qsoundUsage=fmt::sprintf("%d/16384KB",e->qsoundMemLen/1024);
diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp
index b633f4d7..8260b0a4 100644
--- a/src/gui/sysConf.cpp
+++ b/src/gui/sysConf.cpp
@@ -386,15 +386,6 @@ void FurnaceGUI::drawSysConf(int i) {
case DIV_SYSTEM_PET:
ImGui::Text("nothing to configure");
break;
- case DIV_SYSTEM_HDA:
- ImGui::Text("nothing to configure. Did you expect HD Audio to be any more capable?");
- break;
- case DIV_SYSTEM_KONTAKT_5:
- if (ImGui::Button("Try to set plugin path")) {
- // LOL
- openFileDialog(GUI_FILE_FIND_KONTAKT);
- }
- break;
default:
if (ImGui::Checkbox("PAL",&sysPal)) {
e->setSysFlags(i,sysPal,restart);
diff --git a/src/gui/volMeter.cpp b/src/gui/volMeter.cpp
index 665df460..29f62c96 100644
--- a/src/gui/volMeter.cpp
+++ b/src/gui/volMeter.cpp
@@ -34,7 +34,6 @@ void FurnaceGUI::drawVolMeter() {
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing,ImVec2(0,0));
ImGui::PushStyleVar(ImGuiStyleVar_ItemInnerSpacing,ImVec2(0,0));
if (ImGui::Begin("Volume Meter",&volMeterOpen)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
ImDrawList* dl=ImGui::GetWindowDrawList();
bool aspectRatio=(ImGui::GetWindowSize().x/ImGui::GetWindowSize().y)>1.0;
diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp
index 1a182db9..e1359da9 100644
--- a/src/gui/waveEdit.cpp
+++ b/src/gui/waveEdit.cpp
@@ -32,7 +32,6 @@ void FurnaceGUI::drawWaveEdit() {
float wavePreview[256];
ImGui::SetNextWindowSizeConstraints(ImVec2(450.0f*dpiScale,300.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale));
if (ImGui::Begin("Wavetable Editor",&waveEditOpen,settings.allowEditDocking?0:ImGuiWindowFlags_NoDocking)) {
- if (curKStage==10) ImGui::SetWindowPos(ImVec2(ImGui::GetWindowPos().x+(rand()%256)-128,ImGui::GetWindowPos().y+(rand()%256)-128));
if (curWave<0 || curWave>=(int)e->song.wave.size()) {
ImGui::Text("no wavetable selected");
} else {
diff --git a/src/main.cpp b/src/main.cpp
index 0e4848fa..c1afe438 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -127,7 +127,7 @@ bool pLogLevel(String val) {
}
bool pVersion(String) {
- printf("Furniture version " DIV_VERSION ".\n\n");
+ printf("Furnace version " DIV_VERSION ".\n\n");
printf("copyright (C) 2021-2022 tildearrow and contributors.\n");
printf("licensed under the GNU General Public License version 2 or later\n");
printf(".\n\n");
@@ -135,7 +135,7 @@ bool pVersion(String) {
printf("pass the -warranty parameter for more information.\n\n");
printf("DISCLAIMER: this program is not affiliated with Delek in any form.\n");
printf("\n");
- printf("furniture is powered by:\n");
+ printf("furnace is powered by:\n");
printf("- libsndfile by Erik de Castro Lopo and rest of libsndfile team (LGPLv2.1)\n");
printf("- SDL2 by Sam Lantinga (zlib license)\n");
printf("- zlib by Jean-loup Gailly and Mark Adler (zlib license)\n");
@@ -235,7 +235,7 @@ void initParams() {
params.push_back(TAParam("l","loops",true,pLoops,"","set number of loops (-1 means loop forever)"));
params.push_back(TAParam("o","outmode",true,pOutMode,"one|persys|perchan","set file output mode"));
- params.push_back(TAParam("V","version",false,pVersion,"","view information about Furniture."));
+ params.push_back(TAParam("V","version",false,pVersion,"","view information about Furnace."));
params.push_back(TAParam("W","warranty",false,pWarranty,"","view warranty disclaimer."));
}
@@ -310,7 +310,7 @@ int main(int argc, char** argv) {
logI("usage: %s file\n",argv[0]);
return 1;
}
- logI("Furniture version " DIV_VERSION ".\n");
+ logI("Furnace version " DIV_VERSION ".\n");
if (!fileName.empty()) {
logI("loading module...\n");
FILE* f=ps_fopen(fileName.c_str(),"rb");