diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1bf88a60c..ef3b55091 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -255,11 +255,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 649e3e10c..601f01370 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,6 +122,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) @@ -1174,7 +1180,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` diff --git a/demos/misc/ZetaForceLevel2.fur b/demos/misc/ZetaForceLevel2.fur new file mode 100644 index 000000000..634a76478 Binary files /dev/null and b/demos/misc/ZetaForceLevel2.fur differ 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; 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; 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", diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index f91a45905..59a3ab8ff 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -216,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")