From 91a9f5de15878390ced70c00caa874c0bb69c142 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 8 Nov 2025 12:36:24 +0400 Subject: [PATCH 1/4] fix regview address clipping --- src/gui/regView.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gui/regView.cpp b/src/gui/regView.cpp index 6c545234b..913d8ffd1 100644 --- a/src/gui/regView.cpp +++ b/src/gui/regView.cpp @@ -39,7 +39,14 @@ void FurnaceGUI::drawRegView() { } else { ImGui::PushFont(patFont); if (ImGui::BeginTable("Memory",17)) { - ImGui::TableSetupColumn("addr",ImGuiTableColumnFlags_WidthFixed); + float widthOne=ImGui::CalcTextSize("0").x; + if (size>0xfff) { // no im got gonna put some clamped log formula instead + ImGui::TableSetupColumn("addr",ImGuiTableColumnFlags_WidthFixed, widthOne*4.0f); + } else if (size>0xff) { + ImGui::TableSetupColumn("addr",ImGuiTableColumnFlags_WidthFixed, widthOne*3.0f); + } else { + ImGui::TableSetupColumn("addr",ImGuiTableColumnFlags_WidthFixed, widthOne*2.0f); + } ImGui::TableNextRow(); ImGui::TableNextColumn(); From 4525e05ec1e0442c41bb9963d5e4e5abb2279ebe Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 8 Nov 2025 18:14:08 -0500 Subject: [PATCH 2/4] fix instrument saving --- src/engine/instrument.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index d16bf840a..d013e917d 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -886,7 +886,7 @@ size_t DivInstrument::writeFeatureLS(SafeWriter* w, std::vector& list, cons if (list.empty()) return 0; - FEATURE_BEGIN("SL"); + FEATURE_BEGIN("LS"); w->writeS(list.size()); @@ -935,7 +935,7 @@ size_t DivInstrument::writeFeatureLW(SafeWriter* w, std::vector& list, cons if (list.empty()) return 0; - FEATURE_BEGIN("WL"); + FEATURE_BEGIN("LW"); w->writeS(list.size()); @@ -2832,7 +2832,7 @@ DivDataErrors DivInstrument::readInsDataNew(SafeReader& reader, short version, b } else if (memcmp(featCode,"S3",2)==0) { // SID3 readFeatureS3(reader,version); } else { - if (song==NULL && (memcmp(featCode,"SL",2)==0 || (memcmp(featCode,"WL",2)==0))) { + if (song==NULL && (memcmp(featCode,"SL",2)==0 || (memcmp(featCode,"WL",2)==0) || (memcmp(featCode,"LS",2)==0) || (memcmp(featCode,"LW",2)==0))) { // nothing } else { logW("unknown feature code %c%c!",featCode[0],featCode[1]); From d9e23053180013fa92fb02e92d10f434f67e92df Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 8 Nov 2025 18:14:18 -0500 Subject: [PATCH 3/4] file picker: fix directory selection --- src/gui/newFilePicker.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gui/newFilePicker.cpp b/src/gui/newFilePicker.cpp index 517a74d47..12afb3af8 100644 --- a/src/gui/newFilePicker.cpp +++ b/src/gui/newFilePicker.cpp @@ -1603,7 +1603,7 @@ bool FurnaceFilePicker::draw(ImGuiWindowFlags winFlags) { } // OK/Cancel buttons - ImGui::BeginDisabled(entryName.empty() && chosenEntries.empty()); + ImGui::BeginDisabled(entryName.empty() && chosenEntries.empty() && !dirSelect); if (ImGui::Button(_("OK"))) { // accept entry acknowledged=true; @@ -1757,6 +1757,20 @@ bool FurnaceFilePicker::draw(ImGuiWindowFlags winFlags) { } } } + } else { + if (dirSelect) { + finalSelection.push_back(path); + curStatus=FP_STATUS_ACCEPTED; + if (noClose) { + for (FileEntry* j: chosenEntries) { + j->isSelected=false; + } + chosenEntries.clear(); + updateEntryName(); + } else { + isOpen=false; + } + } } } } From 684d041dbbb3f85fd79ab510640cba3b73e4b3bf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 8 Nov 2025 18:30:48 -0500 Subject: [PATCH 4/4] SN: mega-optimization --- src/engine/platform/sms.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index b046f69df..636cf6560 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -142,6 +142,7 @@ void DivPlatformSMS::acquire_mame(blip_buffer_t** bb, size_t len) { // wahahaha heuristic... int advance=len-h; for (int i=0; i<4; i++) { + if (sn->m_volume[i]==0) continue; if (sn->m_count[i]m_count[i]; } if (advance<1) advance=1;