From ef03dc0a6a2b99f53bdc8781609597e404ecf4b7 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Apr 2024 02:39:55 -0500 Subject: [PATCH 1/7] fix Linux build --- src/engine/fileOps/ftm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/fileOps/ftm.cpp b/src/engine/fileOps/ftm.cpp index 9b3b7d55b..bd8b93ea5 100644 --- a/src/engine/fileOps/ftm.cpp +++ b/src/engine/fileOps/ftm.cpp @@ -543,7 +543,7 @@ bool DivEngine::loadFTM(unsigned char* file, size_t len, bool dnft, bool dnft_si tchans = reader.readI(); - if (tchans<0 || tchans>=DIV_MAX_CHANS) { + if (tchans>=DIV_MAX_CHANS) { logE("invalid channel count! %d",tchans); lastError = "invalid channel count"; delete[] file; From 843ee6a401e98690660b0ea661f1a94e7712dfe3 Mon Sep 17 00:00:00 2001 From: Nikku4211 <73254369+nikku4211@users.noreply.github.com> Date: Mon, 15 Apr 2024 04:44:48 -0400 Subject: [PATCH 2/7] Zabutom - Zeta Force Level 2 (GBA DAC+PSG hardmixing remix) demo song request (#1848) * GBA PCM + PSG demo song * Delete demos/multichip/ZetaForceLevel2.fur * GBA PCM+PSG hardmixing demo song --- demos/misc/ZetaForceLevel2.fur | Bin 0 -> 3634 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/misc/ZetaForceLevel2.fur diff --git a/demos/misc/ZetaForceLevel2.fur b/demos/misc/ZetaForceLevel2.fur new file mode 100644 index 0000000000000000000000000000000000000000..634a764786d4afb74fb15853b8a2cc748f8a3f4e GIT binary patch literal 3634 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 Date: Mon, 15 Apr 2024 03:45:18 -0500 Subject: [PATCH 3/7] update credits --- src/gui/about.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/about.cpp b/src/gui/about.cpp index b19db9d5b..024cb9fe6 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -134,6 +134,7 @@ const char* aboutLine[]={ "NeoWar", "Nerreave", "niffuM", + "Nikku4211", "", "Notakin", "nwcr", From e7cedffde2a521476d1778c541a6dbfcc39734ed Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Apr 2024 16:42:37 -0500 Subject: [PATCH 4/7] fix FreeType font advance when hinting is off --- extern/imgui_patched/misc/freetype/imgui_freetype.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/imgui_patched/misc/freetype/imgui_freetype.cpp b/extern/imgui_patched/misc/freetype/imgui_freetype.cpp index 524d85735..570d61a3a 100644 --- a/extern/imgui_patched/misc/freetype/imgui_freetype.cpp +++ b/extern/imgui_patched/misc/freetype/imgui_freetype.cpp @@ -298,7 +298,7 @@ namespace out_glyph_info->Height = (int)ft_bitmap->rows; out_glyph_info->OffsetX = Face->glyph->bitmap_left; out_glyph_info->OffsetY = -Face->glyph->bitmap_top; - out_glyph_info->AdvanceX = (float)FT_CEIL(slot->advance.x); + out_glyph_info->AdvanceX = (float)FT_CEIL(slot->advance.x-((LoadFlags&FT_LOAD_NO_HINTING)?31:0)); out_glyph_info->IsColored = (ft_bitmap->pixel_mode == FT_PIXEL_MODE_BGRA); return ft_bitmap; From dfcaff639c1864e833ef9ae10ee781ef526c4a98 Mon Sep 17 00:00:00 2001 From: Velmyncier <108448686+Velmyncier@users.noreply.github.com> Date: Mon, 15 Apr 2024 11:31:45 -0400 Subject: [PATCH 5/7] Add Super Game Boy presets --- src/gui/presets.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index f91a45905..fca9b6b26 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -140,6 +140,19 @@ void FurnaceGUI::initSystemPresets() { CH(DIV_SYSTEM_GB, 1.0f, 0, "") } ); + ENTRY( + "Super Game Boy", { + CH(DIV_SYSTEM_GB, 1.0f, 0, "customClock=4295455"), + CH(DIV_SYSTEM_SNES, 1.0f, 0, "") + }, + "tickRate=61.44697015935724" + ); + SUB_ENTRY( + "Super Game Boy 2", { + CH(DIV_SYSTEM_GB, 1.0f, 0, ""), + CH(DIV_SYSTEM_SNES, 1.0f, 0, "") + } + ); ENTRY( "Game Boy Advance (no software mixing)", { CH(DIV_SYSTEM_GB, 1.0f, 0, "chipType=3"), From 3a1e286293ea9af9ad3583017d3d894b85a8cc98 Mon Sep 17 00:00:00 2001 From: Velmyncier <108448686+Velmyncier@users.noreply.github.com> Date: Mon, 15 Apr 2024 12:44:45 -0400 Subject: [PATCH 6/7] move presets under SNES --- src/gui/presets.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index fca9b6b26..59a3ab8ff 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -140,19 +140,6 @@ void FurnaceGUI::initSystemPresets() { CH(DIV_SYSTEM_GB, 1.0f, 0, "") } ); - ENTRY( - "Super Game Boy", { - CH(DIV_SYSTEM_GB, 1.0f, 0, "customClock=4295455"), - CH(DIV_SYSTEM_SNES, 1.0f, 0, "") - }, - "tickRate=61.44697015935724" - ); - SUB_ENTRY( - "Super Game Boy 2", { - CH(DIV_SYSTEM_GB, 1.0f, 0, ""), - CH(DIV_SYSTEM_SNES, 1.0f, 0, "") - } - ); ENTRY( "Game Boy Advance (no software mixing)", { CH(DIV_SYSTEM_GB, 1.0f, 0, "chipType=3"), @@ -229,6 +216,19 @@ void FurnaceGUI::initSystemPresets() { CH(DIV_SYSTEM_SNES, 1.0f, 0, "") } ); + SUB_ENTRY( + "Super Game Boy", { + CH(DIV_SYSTEM_GB, 1.0f, 0, "customClock=4295455"), + CH(DIV_SYSTEM_SNES, 1.0f, 0, "") + }, + "tickRate=61.44697015935724" + ); + SUB_ENTRY( + "Super Game Boy 2", { + CH(DIV_SYSTEM_GB, 1.0f, 0, ""), + CH(DIV_SYSTEM_SNES, 1.0f, 0, "") + } + ); ENTRY( "Mattel Intellivision", { CH(DIV_SYSTEM_AY8910, 1.0f, 0, "chipType=3") From fb36e5d8d7a88d13585dd129ad8b129504eb54fd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Apr 2024 17:08:37 -0500 Subject: [PATCH 7/7] do not alter macOS bundle during packaging thanks emberdex (https://github.com/tildearrow/furnace/pull/1609#issuecomment-2057085220) NOTE: if building for installation in /usr/local or something, be sure to pass -DFORCE_APPLE_BIN=ON to CMake! --- .github/workflows/build.yml | 5 ----- CMakeLists.txt | 10 +++++++++- README.md | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fadc87023..13ca442b5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -261,11 +261,6 @@ jobs: rmdir orig rm Furnace-*-Darwin.dmg - if [ -e new/Furnace.app/Contents/Resources/bin/furnace ]; then - rm -v new/Furnace.app/Contents/Resources/bin/furnace - rmdir new/Furnace.app/Contents/Resources/bin - fi - echo "copying extra stuff" cp -v ../LICENSE new/LICENSE.txt cp -v ../res/releaseReadme/stable-mac.txt new/README diff --git a/CMakeLists.txt b/CMakeLists.txt index a60657aeb..146d4afdc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,6 +116,12 @@ option(WITH_DEMOS "Install demo songs" ON) option(WITH_INSTRUMENTS "Install instruments" ON) option(WITH_WAVETABLES "Install wavetables" ON) option(SHOW_OPEN_ASSETS_MENU_ENTRY "Show option to open built-in assets directory (on supported platforms)" OFF) +if (APPLE) + option(FORCE_APPLE_BIN "Force enable binary installation to /bin" OFF) +else() + # not Apple - not needed + set(FORCE_APPLE_BIN OFF) +endif() set(DEPENDENCIES_INCLUDE_DIRS extern/IconFontCppHeaders src/icon) @@ -1161,7 +1167,9 @@ if (NOT ANDROID OR TERMUX) endforeach() install(FILES res/logo.png RENAME furnace.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/1024x1024/apps) else() - install(TARGETS furnace RUNTIME DESTINATION bin) + if (NOT APPLE OR FORCE_APPLE_BIN) + install(TARGETS furnace RUNTIME DESTINATION bin) + endif() endif() set(CPACK_PACKAGE_NAME "Furnace") diff --git a/README.md b/README.md index 63f92f8e3..199e6c117 100644 --- a/README.md +++ b/README.md @@ -278,6 +278,7 @@ Available options: | `WITH_INSTRUMENTS` | `ON` | Install demo instruments on `make install` | | `WITH_WAVETABLES` | `ON` | Install wavetables on `make install` | | `SHOW_OPEN_ASSETS_MENU_ENTRY` | `OFF` | Show option to open built-in assets directory (on supported platforms) | +| `FORCE_APPLE_BIN` | `OFF` | Enable installation of binaries (when doing `make install`) to PREFIX/bin on Apple platforms | (\*) `ON` if system-installed JACK detected, otherwise `OFF`