Merge branch 'master' into metal
This commit is contained in:
commit
f51035e8a0
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
*.sfd text
|
49
.github/issue_template.md
vendored
49
.github/issue_template.md
vendored
|
@ -1 +1,48 @@
|
|||
<!-- NOTICE: if you are going to write a suggestion, see the Discussions section instead. any suggestions posted in Issues will be closed. -->
|
||||
# EXTREMELY IMPORTANT NOTICE - PLEASE **READ**!!!!!!!
|
||||
|
||||
BY SUBMITTING AN ISSUE, YOU HEREBY AGREE TO COMPLY WITH THESE TERMS.
|
||||
FAILURE TO DO SO MAY RESULT IN YOUR ISSUE BEING DECLARED VOID.
|
||||
|
||||
**ADDITIONALLY, FAILURE TO COMPLY WITH POINTS 1 AND 2 WILL RESULT IN THE INABILITY TO ISSUE FURTHER ISSUE REPORTS.**
|
||||
|
||||
1. this section is exclusively for ISSUES related to Furnace (bugs, major annoyances and others). ONLY THINGS THAT COUNT AS **ISSUES** (ad pedem litterae).
|
||||
2. **THIS SECTION IS NOT FOR SUGGESTIONS, REQUESTS, QUESTIONS, SHOWCASE OR ANY OTHER DISCUSSIONS THAT DO NOT MEET THE CRITERIA AND DEFINITION OF AN __ISSUE__.**
|
||||
- see the Discussions section if you wish to submit these.
|
||||
3. check whether your issue has been reported already.
|
||||
- go to the Issues section, and use the search bar that appears on top of the Issues list.
|
||||
4. include the following information:
|
||||
- version of Furnace (help > about)
|
||||
- operating system (and version)
|
||||
- whether you have downloaded Furnace, or built it from source.
|
||||
5. provide these details if you believe the issue is operating system and/or computer-specific:
|
||||
- CPU model
|
||||
- Windows: go to Control Panel > System.
|
||||
- macOS: go to the Apple menu and select About This Mac...
|
||||
- Linux: use `lscpu` or `cat /proc/cpuinfo`.
|
||||
- graphics card (and driver version)
|
||||
- Windows: open `dxdiag` and observe the Render tab.
|
||||
- macOS: go to the Apple menu and select About This Mac...
|
||||
- this information is not always shown.
|
||||
- this information is not necessary if you use an Apple silicon Mac.
|
||||
- Linux: use `glxinfo | grep OpenGL`.
|
||||
6. if your issue is an abnormal program termination (a "Crash"), you must provide additional details:
|
||||
- the furnace_crash.txt file that is created by Furnace after a Crash. this file is located in the following paths:
|
||||
- Windows: `C:\Users\<username>\furnace_crash.txt`
|
||||
- Linux/other: `/tmp/furnace_crash.txt`
|
||||
- on macOS this file is not generated. you may retrieve information about the Crash by clicking on "Report..." or "Show Details" in the "quit unexpectedly" dialog that appears following the Crash.
|
||||
- make sure to remove any personal information for privacy reasons.
|
||||
- be sure to select "Don't Send" afterwards.
|
||||
- the furnace.log file located in:
|
||||
- Windows: `C:\Users\<username>\AppData\Roaming\furnace\furnace.log`
|
||||
- macOS: `~/Library/Application Support/furnace/furnace.log`
|
||||
- Linux: `~/.config/furnace/furnace.log`
|
||||
- make sure to remove any personal information for privacy reasons.
|
||||
|
||||
BY SUBMITTING AN ISSUE, YOU HEREBY AGREE TO COMPLY WITH THESE TERMS.
|
||||
FAILURE TO DO SO MAY RESULT IN YOUR ISSUE BEING DECLARED VOID.
|
||||
|
||||
**ADDITIONALLY, FAILURE TO COMPLY WITH POINTS 1 AND 2 WILL RESULT IN THE INABILITY TO ISSUE FURTHER ISSUE REPORTS.**
|
||||
|
||||
***END OF NOTICE***
|
||||
PLEASE REMOVE THIS NOTICE AFTER READING.
|
||||
FAILURE TO REMOVE THIS NOTICE IS NEGLIGENCE.
|
||||
|
|
5
.github/pull_request_template.md
vendored
5
.github/pull_request_template.md
vendored
|
@ -1 +1,4 @@
|
|||
<!-- NOTICE: if you are contributing a new system, please be sure to ask tildearrow first in order to get system IDs allocated! -->
|
||||
<!--
|
||||
NOTICE: if you are contributing a new system, please be sure to ask tildearrow first in order to get system IDs allocated!
|
||||
Do NOT Force-Push after submitting Pull Request! If you do so, your pull request will be closed.
|
||||
-->
|
||||
|
|
120
.github/workflows/build.yml
vendored
120
.github/workflows/build.yml
vendored
|
@ -33,7 +33,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
|
@ -106,7 +106,7 @@ jobs:
|
|||
|
||||
- name: Setup Toolchain [Windows MSVC]
|
||||
if: ${{ matrix.config.compiler == 'msvc' }}
|
||||
uses: vadz/gha-setup-vsdevenv@avoid-deprecation-warnings
|
||||
uses: lunathir/gha-setup-vsdevenv@avoid-deprecation-warnings
|
||||
with:
|
||||
arch: ${{ steps.windows-identify.outputs.vswhere-target }}
|
||||
|
||||
|
@ -150,57 +150,6 @@ jobs:
|
|||
libjack-jackd2-dev:armhf
|
||||
ls /usr/arm-linux-gnueabihf/lib
|
||||
|
||||
- name: Configure (System Libraries)
|
||||
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }}
|
||||
run: |
|
||||
export USE_WAE=ON
|
||||
export CMAKE_EXTRA_ARGS=()
|
||||
if [ '${{ matrix.config.compiler }}' == 'msvc' ]; then
|
||||
CMAKE_EXTRA_ARGS+=('-DCMAKE_GENERATOR_PLATFORM=${{ steps.windows-identify.outputs.msvc-target }}')
|
||||
elif [ '${{ matrix.config.compiler }}' == 'mingw' ]; then
|
||||
CMAKE_EXTRA_ARGS+=('-DCMAKE_TOOLCHAIN_FILE=scripts/Cross-MinGW-${{ steps.windows-identify.outputs.mingw-target }}.cmake')
|
||||
else
|
||||
# Test with system libs
|
||||
CMAKE_EXTRA_ARGS+=(
|
||||
'-DSYSTEM_FMT=OFF'
|
||||
'-DSYSTEM_LIBSNDFILE=ON'
|
||||
'-DSYSTEM_RTMIDI=ON'
|
||||
'-DSYSTEM_ZLIB=ON'
|
||||
'-DWITH_JACK=ON'
|
||||
)
|
||||
# Too old on Ubuntu
|
||||
if [ '${{ runner.os }}' == 'macOS' ]; then
|
||||
CMAKE_EXTRA_ARGS+=('-DSYSTEM_SDL2=ON')
|
||||
fi
|
||||
fi
|
||||
|
||||
cmake \
|
||||
-B ${PWD}/build \
|
||||
-DCMAKE_INSTALL_PREFIX=${PWD}/target \
|
||||
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
|
||||
-DWARNINGS_ARE_ERRORS=${USE_WAE} \
|
||||
"${CMAKE_EXTRA_ARGS[@]}"
|
||||
|
||||
- name: Build (System Libraries)
|
||||
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }}
|
||||
run: |
|
||||
cmake \
|
||||
--build ${PWD}/build \
|
||||
--config ${{ env.BUILD_TYPE }} \
|
||||
--parallel ${{ steps.build-cores.outputs.amount }}
|
||||
|
||||
- name: Install (System Libraries)
|
||||
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }}
|
||||
run: |
|
||||
cmake \
|
||||
--install ${PWD}/build \
|
||||
--config ${{ env.BUILD_TYPE }}
|
||||
|
||||
- name: Cleanup (System Libraries)
|
||||
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }}
|
||||
run: |
|
||||
rm -rf build/ target/
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export USE_WAE=ON
|
||||
|
@ -271,7 +220,7 @@ jobs:
|
|||
pushd ${{ steps.package-identify.outputs.filename }}
|
||||
|
||||
cp -v ../LICENSE LICENSE.txt
|
||||
cp -v ../README.md README.txt
|
||||
cp -v ../res/releaseReadme/unstable-win.txt README.txt
|
||||
cp -vr ../papers ../${binPath}/furnace.exe ./
|
||||
if [ '${{ matrix.config.compiler }}' == 'msvc' ]; then
|
||||
cp -v ../${binPath}/furnace.pdb ./
|
||||
|
@ -284,8 +233,63 @@ jobs:
|
|||
if: ${{ runner.os == 'macOS' }}
|
||||
run: |
|
||||
pushd build
|
||||
cpack
|
||||
mv Furnace-*-Darwin.dmg ../${{ steps.package-identify.outputs.filename }}
|
||||
retries=0
|
||||
while ! cpack; do
|
||||
echo "TRYING AGAIN..."
|
||||
retries=$((retries+1))
|
||||
if [ $retries -gt 5 ]; then
|
||||
echo "OH NO, WE'VE FAILED..."
|
||||
exit 1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
echo "making dirs"
|
||||
mkdir orig
|
||||
mkdir new
|
||||
echo "attaching"
|
||||
echo "y" | hdiutil attach Furnace-*-Darwin.dmg -readonly -mount required -mountpoint orig
|
||||
|
||||
echo "copying"
|
||||
cp -v -r orig/Furnace.app new/Furnace.app
|
||||
echo "synchronizing"
|
||||
sync
|
||||
echo "detaching"
|
||||
hdiutil detach orig
|
||||
|
||||
echo "removing orig"
|
||||
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
|
||||
cp -v -r ../demos new/demos
|
||||
cp -v -r ../instruments new/instruments
|
||||
cp -v -r ../wavetables new/wavetables
|
||||
cd new
|
||||
wget https://tildearrow.org/furnace/doc/latest/manual.pdf
|
||||
cd ..
|
||||
|
||||
echo "creating new image"
|
||||
retries=0
|
||||
while ! hdiutil create -srcfolder new -volname Furnace -format UDZO -fs HFS+ furnace.dmg; do
|
||||
echo "TRYING AGAIN..."
|
||||
retries=$((retries+1))
|
||||
if [ $retries -gt 5 ]; then
|
||||
echo "OH NO, WE'VE FAILED..."
|
||||
exit 1
|
||||
break
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
|
||||
mv furnace.dmg ../${{ steps.package-identify.outputs.filename }}
|
||||
popd
|
||||
|
||||
- name: Package [Linux]
|
||||
|
@ -317,7 +321,7 @@ jobs:
|
|||
cd ..
|
||||
|
||||
cp ../../LICENSE .
|
||||
cp ../../README.md .
|
||||
cp ../../res/releaseReadme/unstable-other.txt .
|
||||
cp -r ../../papers papers
|
||||
rmdir usr
|
||||
|
||||
|
@ -329,7 +333,7 @@ jobs:
|
|||
|
||||
- name: Upload artifact
|
||||
if: ${{ github.repository == 'tildearrow/furnace' && github.ref_name == 'master' }}
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v4.3.0
|
||||
with:
|
||||
name: ${{ steps.package-identify.outputs.id }}
|
||||
path: ${{ steps.package-identify.outputs.filename }}
|
||||
|
|
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -6,6 +6,7 @@ release/
|
|||
t/
|
||||
winbuild/
|
||||
win32build/
|
||||
xpbuild/
|
||||
macbuild/
|
||||
linuxbuild/
|
||||
*.swp
|
||||
|
@ -15,6 +16,8 @@ test/songs/
|
|||
test/delta/
|
||||
test/result/
|
||||
test/assert_delta
|
||||
android/local.properties
|
||||
android/.idea/
|
||||
android/.gradle/
|
||||
android/app/build/
|
||||
android/app/.cxx/
|
||||
|
@ -24,3 +27,12 @@ CMakePresets.json
|
|||
extern/imgui_patched/examples/
|
||||
src/asm/68k/amigatest/*.bin
|
||||
src/asm/68k/amigatest/player
|
||||
src/check/calc_checksum
|
||||
res/binary_to_compressed_c
|
||||
res/binary_to_compressed_c.exe
|
||||
res/docpdf/manual.html
|
||||
res/docpdf/manual.pdf
|
||||
res/docpdf/.venv
|
||||
res/docpdf/htmldoc/
|
||||
res/fonts/compressed/
|
||||
res/furnace.appdata.xml
|
||||
|
|
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -12,3 +12,6 @@
|
|||
[submodule "extern/adpcm"]
|
||||
path = extern/adpcm
|
||||
url = https://github.com/superctr/adpcm
|
||||
[submodule "extern/portaudio"]
|
||||
path = extern/portaudio
|
||||
url = https://github.com/PortAudio/portaudio.git
|
||||
|
|
333
CMakeLists.txt
333
CMakeLists.txt
|
@ -8,6 +8,7 @@ project(furnace)
|
|||
|
||||
if (APPLE)
|
||||
enable_language(OBJC)
|
||||
enable_language(OBJCXX)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
|
@ -15,7 +16,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
|
|||
|
||||
set(CMAKE_PROJECT_VERSION_MAJOR 0)
|
||||
set(CMAKE_PROJECT_VERSION_MINOR 6)
|
||||
set(CMAKE_PROJECT_VERSION_PATCH 0)
|
||||
set(CMAKE_PROJECT_VERSION_PATCH 2)
|
||||
|
||||
set(BUILD_GUI_DEFAULT ON)
|
||||
set(USE_SDL2_DEFAULT ON)
|
||||
|
@ -25,8 +26,18 @@ set(SYSTEM_SDL2_DEFAULT OFF)
|
|||
include(CheckIncludeFile)
|
||||
include(TestBigEndian)
|
||||
|
||||
execute_process(COMMAND git status RESULT_VARIABLE DONT_HAVE_GIT WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||
if (NOT DONT_HAVE_GIT)
|
||||
message(STATUS "Git is available")
|
||||
else()
|
||||
message(WARNING "either Git is not available, or this Git repository has not been initialized.
|
||||
if you have used the \"Source code\" option in the GitHub release page, you are doing it wrong! unless you manually initialize submodules, the build is guaranteed to FAIL spectacularly!
|
||||
read the \"developer info\" section of README.md for more information.")
|
||||
endif()
|
||||
|
||||
if (ANDROID)
|
||||
set(USE_RTMIDI_DEFAULT OFF)
|
||||
set(WITH_PORTAUDIO_DEFAULT OFF)
|
||||
set(USE_BACKWARD_DEFAULT OFF)
|
||||
find_library(TERMUX rt)
|
||||
if (TERMUX)
|
||||
|
@ -34,6 +45,7 @@ if (ANDROID)
|
|||
endif()
|
||||
else()
|
||||
set(USE_RTMIDI_DEFAULT ON)
|
||||
set(WITH_PORTAUDIO_DEFAULT ON)
|
||||
if (WIN32 OR APPLE)
|
||||
set(USE_BACKWARD_DEFAULT ON)
|
||||
else()
|
||||
|
@ -55,15 +67,13 @@ else()
|
|||
endif()
|
||||
|
||||
set(WITH_RENDER_SDL_DEFAULT ON)
|
||||
if (APPLE)
|
||||
set(WITH_RENDER_OPENGL_DEFAULT OFF)
|
||||
else()
|
||||
set(WITH_RENDER_OPENGL_DEFAULT ON)
|
||||
endif()
|
||||
set(WITH_RENDER_OPENGL_DEFAULT ON)
|
||||
if (WIN32)
|
||||
set(WITH_RENDER_DX11_DEFAULT ON)
|
||||
set(WITH_RENDER_DX9_DEFAULT ON)
|
||||
else()
|
||||
set(WITH_RENDER_DX11_DEFAULT OFF)
|
||||
set(WITH_RENDER_DX9_DEFAULT OFF)
|
||||
endif()
|
||||
if (APPLE)
|
||||
set(WITH_RENDER_METAL_DEFAULT ON)
|
||||
|
@ -73,8 +83,14 @@ endif()
|
|||
|
||||
if (ANDROID)
|
||||
set(USE_GLES_DEFAULT ON)
|
||||
set(WITH_RENDER_OPENGL1_DEFAULT OFF)
|
||||
else()
|
||||
set(USE_GLES_DEFAULT OFF)
|
||||
if (APPLE)
|
||||
set(WITH_RENDER_OPENGL1_DEFAULT OFF)
|
||||
else()
|
||||
set(WITH_RENDER_OPENGL1_DEFAULT ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(BUILD_GUI "Build the tracker (disable to build only a headless player)" ${BUILD_GUI_DEFAULT})
|
||||
|
@ -83,14 +99,20 @@ option(USE_SDL2 "Build with SDL2. Required to build with GUI." ${USE_SDL2_DEFAUL
|
|||
option(USE_SNDFILE "Build with libsndfile. Required in order to work with audio files." ${USE_SNDFILE_DEFAULT})
|
||||
option(USE_BACKWARD "Use backward-cpp to print a backtrace on crash/abort." ${USE_BACKWARD_DEFAULT})
|
||||
option(WITH_JACK "Whether to build with JACK support. Auto-detects if JACK is available" ${WITH_JACK_DEFAULT})
|
||||
option(WITH_PORTAUDIO "Whether to build with PortAudio for audio output." ${WITH_PORTAUDIO_DEFAULT})
|
||||
option(WITH_RENDER_SDL "Whether to build with the SDL_Renderer render backend." ${WITH_RENDER_SDL_DEFAULT})
|
||||
option(WITH_RENDER_OPENGL "Whether to build with the OpenGL render backend." ${WITH_RENDER_OPENGL_DEFAULT})
|
||||
option(WITH_RENDER_OPENGL1 "Whether to build with the OpenGL 1.1 render backend." ${WITH_RENDER_OPENGL1_DEFAULT})
|
||||
option(WITH_RENDER_DX11 "Whether to build with the DirectX 11 render backend." ${WITH_RENDER_DX11_DEFAULT})
|
||||
option(WITH_RENDER_DX9 "Whether to build with the DirectX 9 render backend." ${WITH_RENDER_DX9_DEFAULT})
|
||||
option(WITH_RENDER_METAL "Whether to build with the Metal render backend." ${WITH_RENDER_METAL_DEFAULT})
|
||||
option(USE_GLES "Use OpenGL ES for the OpenGL render backend." ${USE_GLES_DEFAULT})
|
||||
option(USE_FREETYPE "Use FreeType for font rendering." ON)
|
||||
option(SYSTEM_FFTW "Use a system-installed version of FFTW instead of the vendored one" OFF)
|
||||
option(SYSTEM_FMT "Use a system-installed version of fmt instead of the vendored one" OFF)
|
||||
option(SYSTEM_FREETYPE "Use a system-installed version of FreeType instead of the vendored one" OFF)
|
||||
option(SYSTEM_LIBSNDFILE "Use a system-installed version of libsndfile instead of the vendored one" OFF)
|
||||
option(SYSTEM_PORTAUDIO "Use a system-installed version of PortAudio instead of the vendored one" OFF)
|
||||
option(SYSTEM_RTMIDI "Use a system-installed version of RtMidi instead of the vendored one" OFF)
|
||||
option(SYSTEM_ZLIB "Use a system-installed version of zlib instead of the vendored one" OFF)
|
||||
option(SYSTEM_SDL2 "Use a system-installed version of SDL2 instead of the vendored one" ${SYSTEM_SDL2_DEFAULT})
|
||||
|
@ -99,8 +121,9 @@ option(WARNINGS_ARE_ERRORS "Whether warnings in furnace's C++ code should be tre
|
|||
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)
|
||||
|
||||
set(DEPENDENCIES_INCLUDE_DIRS "")
|
||||
set(DEPENDENCIES_INCLUDE_DIRS extern/IconFontCppHeaders src/icon)
|
||||
|
||||
if (ANDROID AND NOT TERMUX)
|
||||
set(DEPENDENCIES_DEFINES "IS_MOBILE")
|
||||
|
@ -126,19 +149,20 @@ else()
|
|||
set(SYSTEM_SDL_MIN_VER 2.0.0)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
# support Windows XP
|
||||
if (SUPPORT_XP)
|
||||
add_compile_definitions("_WIN32_WINNT=0x0501")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS "extern/SAASound/include")
|
||||
#list(APPEND DEPENDENCIES_INCLUDE_DIRS "extern/SAASound/include")
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS "extern/vgsound_emu-modified")
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
|
||||
if (WIN32)
|
||||
# support Windows XP
|
||||
if (SUPPORT_XP)
|
||||
list(APPEND DEPENDENCIES_DEFINES "_WIN32_WINNT=0x0501")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (SYSTEM_FFTW)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(FFTW REQUIRED fftw3>=3.3)
|
||||
|
@ -184,6 +208,39 @@ else()
|
|||
message(STATUS "Using vendored fmt")
|
||||
endif()
|
||||
|
||||
if (BUILD_GUI AND USE_FREETYPE)
|
||||
# TODO: FIX FIX FIX FIX FIX
|
||||
if (SYSTEM_FREETYPE)
|
||||
if (PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(FREETYPE freetype2>=2.0.0)
|
||||
if (FREETYPE_FOUND)
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIRS})
|
||||
list(APPEND DEPENDENCIES_COMPILE_OPTIONS ${FREETYPE_CFLAGS_OTHER})
|
||||
list(APPEND DEPENDENCIES_LIBRARIES ${FREETYPE_LIBRARIES})
|
||||
list(APPEND DEPENDENCIES_LIBRARY_DIRS ${FREETYPE_LIBRARY_DIRS})
|
||||
list(APPEND DEPENDENCIES_LINK_OPTIONS ${FREETYPE_LDFLAGS_OTHER})
|
||||
list(APPEND DEPENDENCIES_LEGACY_LDFLAGS ${FREETYPE_LDFLAGS})
|
||||
endif()
|
||||
endif()
|
||||
if (NOT FREETYPE_FOUND)
|
||||
find_package(freetype REQUIRED)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES freetype::freetype)
|
||||
endif()
|
||||
message(STATUS "Using system-installed FreeType")
|
||||
else()
|
||||
set(FT_DISABLE_BROTLI ON CACHE BOOL "one" FORCE)
|
||||
set(FT_DISABLE_BZIP2 ON CACHE BOOL "two" FORCE)
|
||||
set(FT_DISABLE_HARFBUZZ ON CACHE BOOL "three" FORCE)
|
||||
set(FT_DISABLE_PNG ON CACHE BOOL "four" FORCE)
|
||||
set(FT_DISABLE_ZLIB ON CACHE BOOL "five" FORCE)
|
||||
add_subdirectory(extern/freetype EXCLUDE_FROM_ALL)
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/freetype/include)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES freetype)
|
||||
message(STATUS "Using vendored FreeType")
|
||||
endif()
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_FREETYPE)
|
||||
endif()
|
||||
|
||||
if (USE_SNDFILE)
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_SNDFILE)
|
||||
if (SYSTEM_LIBSNDFILE)
|
||||
|
@ -210,6 +267,27 @@ else()
|
|||
message(STATUS "Not using libsndfile")
|
||||
endif()
|
||||
|
||||
if (WITH_PORTAUDIO)
|
||||
if (SYSTEM_PORTAUDIO)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(PORTAUDIO REQUIRED portaudio-2.0)
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS ${PORTAUDIO_INCLUDE_DIRS})
|
||||
list(APPEND DEPENDENCIES_COMPILE_OPTIONS ${PORTAUDIO_CFLAGS_OTHER})
|
||||
list(APPEND DEPENDENCIES_LIBRARIES ${PORTAUDIO_LIBRARIES})
|
||||
list(APPEND DEPENDENCIES_LIBRARY_DIRS ${PORTAUDIO_LIBRARY_DIRS})
|
||||
list(APPEND DEPENDENCIES_LINK_OPTIONS ${PORTAUDIO_LDFLAGS_OTHER})
|
||||
list(APPEND DEPENDENCIES_LEGACY_LDFLAGS ${PORTAUDIO_LDFLAGS})
|
||||
message(STATUS "Using system-installed PortAudio")
|
||||
else()
|
||||
set(PA_BUILD_SHARED_LIBS OFF CACHE BOOL "Build dynamic library" FORCE)
|
||||
# don't - Furnace has its own implementation
|
||||
set(PA_USE_JACK OFF CACHE BOOL "Enable support for JACK Audio Connection Kit" FORCE)
|
||||
add_subdirectory(extern/portaudio EXCLUDE_FROM_ALL)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES PortAudio)
|
||||
message(STATUS "Using vendored PortAudio")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (USE_RTMIDI)
|
||||
if (SYSTEM_RTMIDI)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
@ -289,6 +367,18 @@ if (USE_SDL2)
|
|||
# If you link SDL statically, you also need to define HAVE_LIBC so it builds with the C runtime that your application uses.
|
||||
# This should probably go in a FAQ.
|
||||
set(SDL_LIBC ON CACHE BOOL "Tell SDL that we want it to use our C runtime (required for proper static linking)" FORCE)
|
||||
|
||||
# https://github.com/tildearrow/furnace/issues/1237
|
||||
# enabling this will result in SDL finding the Direct3D headers, forcing _WIN32_WINNT to an undesirable value (which makes the Wine headers define GetTickCount64)
|
||||
if (SUPPORT_XP)
|
||||
set(SDL_RENDER_D3D OFF CACHE BOOL "Enable the Direct3D render driver" FORCE)
|
||||
endif()
|
||||
|
||||
CHECK_INCLUDE_FILE(GLES/gl.h GLES_GL_FOUND)
|
||||
if (NOT GLES_GL_FOUND AND NOT USE_GLES)
|
||||
set(SDL_OPENGLES OFF CACHE BOOL "Enable OpenGL ES" FORCE)
|
||||
endif()
|
||||
|
||||
add_subdirectory(extern/SDL EXCLUDE_FROM_ALL)
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_SDL2)
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/SDL/include)
|
||||
|
@ -313,12 +403,6 @@ else()
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if (BUILD_GUI)
|
||||
if (NOT WITH_RENDER_SDL AND NOT WITH_RENDER_OPENGL AND NOT WITH_RENDER_DX11 AND NOT WITH_RENDER_METAL)
|
||||
message(FATAL_ERROR "No render backends selected!")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(AUDIO_SOURCES
|
||||
src/audio/abstract.cpp
|
||||
src/audio/midi.cpp
|
||||
|
@ -331,19 +415,29 @@ endif()
|
|||
if (WITH_JACK)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(JACK REQUIRED jack)
|
||||
list(APPEND AUDIO_SOURCES extern/weakjack/weak_libjack.c)
|
||||
list(APPEND AUDIO_SOURCES src/audio/jack.cpp)
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS ${JACK_INCLUDE_DIRS})
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_JACK)
|
||||
list(APPEND DEPENDENCIES_COMPILE_OPTIONS ${JACK_CFLAGS_OTHER})
|
||||
list(APPEND DEPENDENCIES_LIBRARIES ${JACK_LIBRARIES})
|
||||
list(APPEND DEPENDENCIES_LIBRARY_DIRS ${JACK_LIBRARY_DIRS})
|
||||
list(APPEND DEPENDENCIES_LINK_OPTIONS ${JACK_LDFLAGS_OTHER})
|
||||
list(APPEND DEPENDENCIES_LEGACY_LDFLAGS ${JACK_LDFLAGS})
|
||||
list(APPEND DEPENDENCIES_DEFINES USE_WEAK_JACK)
|
||||
#list(APPEND DEPENDENCIES_COMPILE_OPTIONS ${JACK_CFLAGS_OTHER})
|
||||
#list(APPEND DEPENDENCIES_LIBRARIES ${JACK_LIBRARIES})
|
||||
#list(APPEND DEPENDENCIES_LIBRARY_DIRS ${JACK_LIBRARY_DIRS})
|
||||
#list(APPEND DEPENDENCIES_LINK_OPTIONS ${JACK_LDFLAGS_OTHER})
|
||||
#list(APPEND DEPENDENCIES_LEGACY_LDFLAGS ${JACK_LDFLAGS})
|
||||
message(STATUS "Building with JACK support")
|
||||
else()
|
||||
message(STATUS "Building without JACK support")
|
||||
endif()
|
||||
|
||||
if (WITH_PORTAUDIO)
|
||||
list(APPEND AUDIO_SOURCES src/audio/pa.cpp)
|
||||
message(STATUS "Building with PortAudio")
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_PA)
|
||||
else()
|
||||
message(STATUS "Building without PortAudio")
|
||||
endif()
|
||||
|
||||
if (USE_RTMIDI)
|
||||
list(APPEND AUDIO_SOURCES src/audio/rtmidi.cpp)
|
||||
message(STATUS "Building with RtMidi")
|
||||
|
@ -398,11 +492,24 @@ extern/adpcm/yma_codec.c
|
|||
extern/adpcm/ymb_codec.c
|
||||
extern/adpcm/ymz_codec.c
|
||||
|
||||
extern/adpcm-xq-s/adpcm-lib.c
|
||||
|
||||
extern/opn/ym3438.c
|
||||
extern/Nuked-PSG/ympsg.c
|
||||
extern/opm/opm.c
|
||||
extern/Nuked-OPLL/opll.c
|
||||
extern/opl/opl3.c
|
||||
extern/YM3812-LLE/fmopl2.c
|
||||
extern/YMF262-LLE/fmopl3.c
|
||||
extern/YMF276-LLE/fmopn2.c
|
||||
extern/ESFMu/esfm.c
|
||||
extern/ESFMu/esfm_registers.c
|
||||
extern/emu2413/emu2413.c
|
||||
|
||||
extern/pwrnoise/pwrnoise.c
|
||||
|
||||
src/pch.cpp
|
||||
|
||||
src/engine/platform/sound/sn76496.cpp
|
||||
src/engine/platform/sound/ay8910.cpp
|
||||
src/engine/platform/sound/saa1099.cpp
|
||||
|
@ -417,6 +524,8 @@ src/engine/platform/sound/nes/mmc5.c
|
|||
src/engine/platform/sound/vera_psg.c
|
||||
src/engine/platform/sound/vera_pcm.c
|
||||
|
||||
src/engine/platform/sound/nes_nsfplay/5e01_apu.cpp
|
||||
src/engine/platform/sound/nes_nsfplay/5e01_dmc.cpp
|
||||
src/engine/platform/sound/nes_nsfplay/nes_apu.cpp
|
||||
src/engine/platform/sound/nes_nsfplay/nes_dmc.cpp
|
||||
src/engine/platform/sound/nes_nsfplay/nes_fds.cpp
|
||||
|
@ -461,13 +570,17 @@ src/engine/platform/sound/c64_fp/WaveformCalculator.cpp
|
|||
src/engine/platform/sound/c64_fp/WaveformGenerator.cpp
|
||||
src/engine/platform/sound/c64_fp/resample/SincResampler.cpp
|
||||
|
||||
src/engine/platform/sound/c64_d/dsid.c
|
||||
|
||||
src/engine/platform/sound/tia/AudioChannel.cpp
|
||||
src/engine/platform/sound/tia/Audio.cpp
|
||||
|
||||
src/engine/platform/sound/ymfm/ymfm_adpcm.cpp
|
||||
src/engine/platform/sound/ymfm/ymfm_opl.cpp
|
||||
src/engine/platform/sound/ymfm/ymfm_opm.cpp
|
||||
src/engine/platform/sound/ymfm/ymfm_opn.cpp
|
||||
src/engine/platform/sound/ymfm/ymfm_opz.cpp
|
||||
src/engine/platform/sound/ymfm/ymfm_pcm.cpp
|
||||
src/engine/platform/sound/ymfm/ymfm_ssg.cpp
|
||||
|
||||
src/engine/platform/sound/lynx/Mikey.cpp
|
||||
|
@ -502,32 +615,53 @@ src/engine/platform/sound/sm8521.c
|
|||
|
||||
src/engine/platform/sound/d65modified.c
|
||||
|
||||
src/engine/platform/sound/ted-sound.c
|
||||
|
||||
src/engine/platform/sound/c140_c219.c
|
||||
|
||||
src/engine/platform/sound/dave/dave.cpp
|
||||
|
||||
src/engine/platform/sound/nds.cpp
|
||||
|
||||
src/engine/platform/oplAInterface.cpp
|
||||
src/engine/platform/ym2608Interface.cpp
|
||||
src/engine/platform/ym2610Interface.cpp
|
||||
|
||||
src/engine/fileOps/fileOpsCommon.cpp
|
||||
src/engine/fileOps/dmf.cpp
|
||||
src/engine/fileOps/fc.cpp
|
||||
src/engine/fileOps/ftm.cpp
|
||||
src/engine/fileOps/fur.cpp
|
||||
src/engine/fileOps/mod.cpp
|
||||
src/engine/fileOps/s3m.cpp
|
||||
src/engine/fileOps/text.cpp
|
||||
|
||||
src/engine/blip_buf.c
|
||||
src/engine/brrUtils.c
|
||||
src/engine/safeReader.cpp
|
||||
src/engine/safeWriter.cpp
|
||||
src/engine/workPool.cpp
|
||||
src/engine/cmdStream.cpp
|
||||
src/engine/cmdStreamOps.cpp
|
||||
src/engine/config.cpp
|
||||
src/engine/configEngine.cpp
|
||||
src/engine/dispatchContainer.cpp
|
||||
src/engine/engine.cpp
|
||||
src/engine/export.cpp
|
||||
src/engine/fileOps.cpp
|
||||
src/engine/fileOpsIns.cpp
|
||||
src/engine/fileOpsSample.cpp
|
||||
src/engine/filter.cpp
|
||||
src/engine/instrument.cpp
|
||||
src/engine/macroInt.cpp
|
||||
src/engine/pattern.cpp
|
||||
src/engine/pitchTable.cpp
|
||||
src/engine/playback.cpp
|
||||
src/engine/sample.cpp
|
||||
src/engine/song.cpp
|
||||
src/engine/sysDef.cpp
|
||||
src/engine/wavetable.cpp
|
||||
src/engine/waveSynth.cpp
|
||||
src/engine/wavOps.cpp
|
||||
src/engine/vgmOps.cpp
|
||||
src/engine/zsmOps.cpp
|
||||
src/engine/zsm.cpp
|
||||
|
@ -592,6 +726,15 @@ src/engine/platform/k007232.cpp
|
|||
src/engine/platform/ga20.cpp
|
||||
src/engine/platform/sm8521.cpp
|
||||
src/engine/platform/pv1000.cpp
|
||||
src/engine/platform/k053260.cpp
|
||||
src/engine/platform/ted.cpp
|
||||
src/engine/platform/c140.cpp
|
||||
src/engine/platform/esfm.cpp
|
||||
src/engine/platform/powernoise.cpp
|
||||
src/engine/platform/dave.cpp
|
||||
src/engine/platform/gbadma.cpp
|
||||
src/engine/platform/gbaminmod.cpp
|
||||
src/engine/platform/nds.cpp
|
||||
src/engine/platform/pcmdac.cpp
|
||||
src/engine/platform/dummy.cpp
|
||||
|
||||
|
@ -612,6 +755,13 @@ if (WIN32)
|
|||
list(APPEND ENGINE_SOURCES res/furnace.rc)
|
||||
endif()
|
||||
|
||||
if (APPLE)
|
||||
if (CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS 10.12)
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/macports-legacy-support/include)
|
||||
list(APPEND ENGINE_SOURCES extern/macports-legacy-support/src/time.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CLI_SOURCES
|
||||
src/cli/cli.cpp
|
||||
)
|
||||
|
@ -622,6 +772,7 @@ extern/imgui_patched/imgui_draw.cpp
|
|||
extern/imgui_patched/imgui_tables.cpp
|
||||
extern/imgui_patched/imgui_widgets.cpp
|
||||
extern/imgui_patched/backends/imgui_impl_sdl2.cpp
|
||||
extern/imgui_software_renderer/imgui_sw.cpp
|
||||
extern/imgui_patched/misc/cpp/imgui_stdlib.cpp
|
||||
extern/igfd/ImGuiFileDialog.cpp
|
||||
|
||||
|
@ -629,6 +780,7 @@ src/gui/plot_nolerp.cpp
|
|||
|
||||
src/gui/render.cpp
|
||||
src/gui/render/abstract.cpp
|
||||
src/gui/render/renderSoftware.cpp
|
||||
|
||||
src/gui/font_exo.cpp
|
||||
src/gui/font_liberationSans.cpp
|
||||
|
@ -639,7 +791,9 @@ src/gui/font_proggyClean.cpp
|
|||
src/gui/font_ptMono.cpp
|
||||
src/gui/font_unifont.cpp
|
||||
src/gui/font_icon.cpp
|
||||
src/gui/font_furicon.cpp
|
||||
src/gui/fonts.cpp
|
||||
src/gui/fontzlib.cpp
|
||||
|
||||
src/gui/image_icon.cpp
|
||||
src/gui/image_talogo.cpp
|
||||
|
@ -663,6 +817,7 @@ src/gui/channels.cpp
|
|||
src/gui/chanOsc.cpp
|
||||
src/gui/clock.cpp
|
||||
src/gui/compatFlags.cpp
|
||||
src/gui/csPlayer.cpp
|
||||
src/gui/cursor.cpp
|
||||
src/gui/dataList.cpp
|
||||
src/gui/debugWindow.cpp
|
||||
|
@ -670,6 +825,7 @@ src/gui/doAction.cpp
|
|||
src/gui/editing.cpp
|
||||
src/gui/editControls.cpp
|
||||
src/gui/effectList.cpp
|
||||
src/gui/exportOptions.cpp
|
||||
src/gui/findReplace.cpp
|
||||
src/gui/fmPreview.cpp
|
||||
src/gui/gradient.cpp
|
||||
|
@ -677,9 +833,11 @@ src/gui/grooves.cpp
|
|||
src/gui/insEdit.cpp
|
||||
src/gui/intro.cpp
|
||||
src/gui/log.cpp
|
||||
src/gui/memory.cpp
|
||||
src/gui/mixer.cpp
|
||||
src/gui/midiMap.cpp
|
||||
src/gui/newSong.cpp
|
||||
src/gui/commandPalette.cpp
|
||||
src/gui/orders.cpp
|
||||
src/gui/osc.cpp
|
||||
src/gui/patManager.cpp
|
||||
|
@ -699,11 +857,13 @@ src/gui/subSongs.cpp
|
|||
src/gui/sysConf.cpp
|
||||
src/gui/sysEx.cpp
|
||||
src/gui/sysManager.cpp
|
||||
src/gui/sysPartNumber.cpp
|
||||
src/gui/sysPicker.cpp
|
||||
src/gui/tutorial.cpp
|
||||
src/gui/util.cpp
|
||||
src/gui/waveEdit.cpp
|
||||
src/gui/volMeter.cpp
|
||||
src/gui/xyOsc.cpp
|
||||
src/gui/gui.cpp
|
||||
)
|
||||
|
||||
|
@ -712,6 +872,10 @@ if (WIN32 AND NOT SUPPORT_XP)
|
|||
list(APPEND GUI_SOURCES extern/nfd-modified/src/nfd_win.cpp)
|
||||
endif()
|
||||
|
||||
if (USE_FREETYPE)
|
||||
list(APPEND GUI_SOURCES extern/imgui_patched/misc/freetype/imgui_freetype.cpp)
|
||||
endif()
|
||||
|
||||
if (APPLE)
|
||||
list(APPEND GUI_SOURCES extern/nfd-modified/src/nfd_common.cpp)
|
||||
list(APPEND GUI_SOURCES src/gui/macstuff.m)
|
||||
|
@ -735,12 +899,32 @@ if (WITH_RENDER_OPENGL)
|
|||
endif()
|
||||
if (WIN32)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES opengl32)
|
||||
elseif(APPLE)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES "-framework OpenGL")
|
||||
elseif(USE_GLES)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES GLESv2)
|
||||
else()
|
||||
list(APPEND DEPENDENCIES_LIBRARIES GL)
|
||||
endif()
|
||||
message(STATUS "UI render backend: OpenGL")
|
||||
if (USE_GLES)
|
||||
message(STATUS "UI render backend: OpenGL ES 2.0")
|
||||
else()
|
||||
message(STATUS "UI render backend: OpenGL 3.0/2.0")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (WITH_RENDER_OPENGL1)
|
||||
list(APPEND GUI_SOURCES src/gui/render/renderGL1.cpp)
|
||||
list(APPEND GUI_SOURCES extern/imgui_patched/backends/imgui_impl_opengl2.cpp)
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_RENDER_GL1)
|
||||
if (NOT WITH_RENDER_OPENGL)
|
||||
if (WIN32)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES opengl32)
|
||||
else()
|
||||
list(APPEND DEPENDENCIES_LIBRARIES GL)
|
||||
endif()
|
||||
endif()
|
||||
message(STATUS "UI render backend: OpenGL 1.1")
|
||||
endif()
|
||||
|
||||
if (WITH_RENDER_DX11)
|
||||
|
@ -751,7 +935,7 @@ if (WITH_RENDER_DX11)
|
|||
list(APPEND GUI_SOURCES src/gui/render/renderDX11.cpp)
|
||||
list(APPEND GUI_SOURCES extern/imgui_patched/backends/imgui_impl_dx11.cpp)
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_RENDER_DX11)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES d3d11)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES d3d11 dxgi)
|
||||
message(STATUS "UI render backend: DirectX 11")
|
||||
endif()
|
||||
else()
|
||||
|
@ -759,13 +943,25 @@ if (WITH_RENDER_DX11)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
#if (WITH_RENDER_DX9)
|
||||
# if (WIN32)
|
||||
# list(APPEND GUI_SOURCES src/gui/render/renderDX9.cpp)
|
||||
# list(APPEND GUI_SOURCES extern/imgui_patched/backends/imgui_impl_dx9.cpp)
|
||||
# list(APPEND DEPENDENCIES_DEFINES HAVE_RENDER_DX9)
|
||||
# list(APPEND DEPENDENCIES_LIBRARIES d3d9)
|
||||
# message(STATUS "UI render backend: DirectX 9")
|
||||
# else()
|
||||
# message(FATAL_ERROR "DirectX 9 render backend only for Windows!")
|
||||
# endif()
|
||||
#endif()
|
||||
|
||||
if (WITH_RENDER_METAL)
|
||||
if (APPLE)
|
||||
list(APPEND GUI_SOURCES src/gui/render/renderMetal.cpp)
|
||||
list(APPEND GUI_SOURCES extern/imgui_patched/backends/imgui_impl_metal.cpp)
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_RENDER_METAL)
|
||||
# TODO: what is being used?
|
||||
#list(APPEND DEPENDENCIES_LIBRARIES d3d11)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES "-framework Metal")
|
||||
list(APPEND DEPENDENCIES_LIBRARIES "-framework MetalKit")
|
||||
message(STATUS "UI render backend: Metal")
|
||||
else()
|
||||
message(FATAL_ERROR "Metal render backend only for Apple operating systems!")
|
||||
|
@ -806,8 +1002,19 @@ set(USED_SOURCES ${ENGINE_SOURCES} ${AUDIO_SOURCES} ${CLI_SOURCES} src/main.cpp)
|
|||
|
||||
if (USE_BACKWARD)
|
||||
list(APPEND USED_SOURCES src/backtrace.cpp)
|
||||
if (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
list(APPEND DEPENDENCIES_LIBRARIES dbghelp psapi)
|
||||
if (WIN32)
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-gcodeview GCC_CODEVIEW)
|
||||
if (GCC_CODEVIEW)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--pdb= ")
|
||||
add_compile_options(-gcodeview)
|
||||
message(STATUS "Enabling -gcodeview flag for backward-cpp.")
|
||||
else()
|
||||
message(WARNING "Could not enable -gcodeview! backward-cpp will not work.")
|
||||
endif()
|
||||
list(APPEND DEPENDENCIES_LIBRARIES dbghelp psapi)
|
||||
endif()
|
||||
endif()
|
||||
find_library(EXECINFO_IS_LIBRARY execinfo)
|
||||
if (EXECINFO_IS_LIBRARY)
|
||||
|
@ -822,9 +1029,8 @@ if (BUILD_GUI)
|
|||
list(APPEND USED_SOURCES ${GUI_SOURCES})
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS
|
||||
extern/imgui_patched
|
||||
extern/imgui_conf
|
||||
extern/imgui_patched/backends
|
||||
extern/IconFontCppHeaders
|
||||
extern/imgui_software_renderer
|
||||
extern/igfd
|
||||
)
|
||||
if (WIN32 OR APPLE)
|
||||
|
@ -879,12 +1085,21 @@ endif()
|
|||
string(REPLACE ";" " " WARNING_FLAGS_STRING "${WARNING_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS_STRING}")
|
||||
if (WARNINGS_ARE_ERRORS)
|
||||
message(WARNING
|
||||
message(STATUS
|
||||
"Treating all warnings in furnace's C++ code as errors! "
|
||||
"Please report any errors you encounter on the bug tracker."
|
||||
)
|
||||
endif()
|
||||
|
||||
if (NOT ANDROID OR TERMUX)
|
||||
if (NOT WIN32 AND NOT APPLE)
|
||||
if (NOT DONT_HAVE_GIT)
|
||||
add_custom_command(OUTPUT furnace.appdata.xml COMMAND res/make-appdata.sh ARGS ${CMAKE_SOURCE_DIR}/res/furnace.appdata.xml.in ${CMAKE_BINARY_DIR}/furnace.appdata.xml DEPENDS res/furnace.appdata.xml.in WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||
list(APPEND USED_SOURCES furnace.appdata.xml)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ANDROID AND NOT TERMUX)
|
||||
add_library(furnace SHARED ${USED_SOURCES})
|
||||
elseif(WIN32)
|
||||
|
@ -894,7 +1109,6 @@ else()
|
|||
endif()
|
||||
|
||||
target_include_directories(furnace SYSTEM PRIVATE ${DEPENDENCIES_INCLUDE_DIRS})
|
||||
target_compile_definitions(furnace PRIVATE ${DEPENDENCIES_DEFINES} IMGUI_USER_CONFIG="imconfig_fur.h")
|
||||
target_compile_options(furnace PRIVATE ${DEPENDENCIES_COMPILE_OPTIONS})
|
||||
target_link_libraries(furnace PRIVATE ${DEPENDENCIES_LIBRARIES})
|
||||
if (PKG_CONFIG_FOUND AND (SYSTEM_FMT OR SYSTEM_LIBSNDFILE OR SYSTEM_ZLIB OR SYSTEM_SDL2 OR SYSTEM_RTMIDI OR WITH_JACK))
|
||||
|
@ -910,23 +1124,47 @@ if (PKG_CONFIG_FOUND AND (SYSTEM_FMT OR SYSTEM_LIBSNDFILE OR SYSTEM_ZLIB OR SYST
|
|||
endif()
|
||||
endif()
|
||||
|
||||
# why 3.16..... why not 3.0?
|
||||
if (NOT "${CMAKE_VERSION}" VERSION_LESS "3.16")
|
||||
if (BUILD_GUI)
|
||||
target_precompile_headers(furnace PUBLIC
|
||||
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/pch.h>
|
||||
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/extern/imgui_patched/imgui.h>
|
||||
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/extern/imgui_patched/imgui_internal.h>
|
||||
)
|
||||
else()
|
||||
target_precompile_headers(furnace PUBLIC
|
||||
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/src/pch.h>
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (NOT ANDROID OR TERMUX)
|
||||
if (NOT WIN32 AND NOT APPLE)
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS furnace RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(FILES res/furnace.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||
install(FILES res/furnace.appdata.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
|
||||
if (NOT DONT_HAVE_GIT)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/furnace.appdata.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
|
||||
endif()
|
||||
install(DIRECTORY doc DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
install(DIRECTORY papers DESTINATION ${CMAKE_INSTALL_DOCDIR}/other)
|
||||
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/furnace)
|
||||
if (WITH_DEMOS)
|
||||
install(DIRECTORY demos DESTINATION ${CMAKE_INSTALL_DATADIR}/furnace)
|
||||
endif()
|
||||
if (WITH_INSTRUMENTS)
|
||||
install(DIRECTORY instruments DESTINATION ${CMAKE_INSTALL_DATADIR}/furnace)
|
||||
endif()
|
||||
if (WITH_WAVETABLES)
|
||||
install(DIRECTORY wavetables DESTINATION ${CMAKE_INSTALL_DATADIR}/furnace)
|
||||
if (WITH_DEMOS OR WITH_INSTRUMENTS OR WITH_WAVETABLES)
|
||||
set(FURNACE_DATADIR ${CMAKE_INSTALL_FULL_DATADIR}/furnace)
|
||||
if (WITH_DEMOS)
|
||||
install(DIRECTORY demos DESTINATION ${FURNACE_DATADIR})
|
||||
endif()
|
||||
if (WITH_INSTRUMENTS)
|
||||
install(DIRECTORY instruments DESTINATION ${FURNACE_DATADIR})
|
||||
endif()
|
||||
if (WITH_WAVETABLES)
|
||||
install(DIRECTORY wavetables DESTINATION ${FURNACE_DATADIR})
|
||||
endif()
|
||||
list(APPEND DEPENDENCIES_DEFINES FURNACE_DATADIR="${FURNACE_DATADIR}")
|
||||
if (SHOW_OPEN_ASSETS_MENU_ENTRY)
|
||||
list(APPEND DEPENDENCIES_DEFINES SHOW_OPEN_ASSETS_MENU_ENTRY)
|
||||
endif()
|
||||
endif()
|
||||
foreach(num 16 32 64 128 256 512)
|
||||
set(res ${num}x${num})
|
||||
|
@ -951,7 +1189,10 @@ if (NOT ANDROID OR TERMUX)
|
|||
set(CPACK_BUNDLE_PLIST ${CMAKE_SOURCE_DIR}/res/Info.plist)
|
||||
set(CPACK_BUNDLE_ICON ${CMAKE_SOURCE_DIR}/res/icon.icns)
|
||||
set(CPACK_BUNDLE_STARTUP_COMMAND "furnace")
|
||||
set(CPACK_BUNDLE_APPLE_CERT_APP "-")
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(furnace PRIVATE ${DEPENDENCIES_DEFINES})
|
||||
|
|
|
@ -2,7 +2,19 @@
|
|||
|
||||
contributions to Furnace are welcome!
|
||||
|
||||
# Getting ready
|
||||
# Issue reports
|
||||
|
||||
if you find an issue with Furnace, see the Issues section.
|
||||
|
||||
# Suggestions and other types of discussions
|
||||
|
||||
see the Discussions section.
|
||||
|
||||
**DO NOT USE THE ISSUES SECTION FOR THESE - it is only for ISSUES.**
|
||||
|
||||
# Other
|
||||
|
||||
## Getting ready
|
||||
|
||||
log into your Github account, and click the Fork button in the header of the project's page.
|
||||
|
||||
|
@ -14,9 +26,9 @@ git clone git@github.com:USERNAME/furnace.git
|
|||
|
||||
(replace `USERNAME` with your username)
|
||||
|
||||
# Working
|
||||
## Working
|
||||
|
||||
## Code
|
||||
### Code
|
||||
|
||||
bug fixes, improvements and several other things accepted.
|
||||
|
||||
|
@ -35,6 +47,7 @@ the coding style is described here:
|
|||
- preprocessor directives not intended
|
||||
- if macro comprises more than one line, indent
|
||||
- no new line after `template<>`
|
||||
- do not use `_t` types, except for 64-bit integers and `size_t`.
|
||||
- prefer built-in types:
|
||||
- `bool`
|
||||
- `signed char` or `unsigned char` are 8-bit
|
||||
|
@ -48,11 +61,13 @@ the coding style is described here:
|
|||
- `long long int` or `unsigned long long int` are 64-bit
|
||||
- avoid using 64-bit numbers as I still build for 32-bit systems.
|
||||
- two `long`s are required to make Windows happy.
|
||||
- prefer using `int64_t` or `uint64_t` for this specific case.
|
||||
- `size_t` are 32-bit or 64-bit, depending on architecture.
|
||||
- in float/double operations, always use decimal and `f` if single-precision.
|
||||
- e.g. `1.0f` or `1.0` instead of `1`.
|
||||
- prefer `NULL` over `nullptr` or any other proprietary null.
|
||||
- don't use `auto` unless needed.
|
||||
- only use `auto` if needed.
|
||||
- avoid using `goto` unless absolutely required.
|
||||
- use `String` for `std::string` (this is typedef'd in ta-utils.h).
|
||||
- prefer using operator for String (std::string) comparisons (a=="").
|
||||
- if you have to work with C strings, only use safe C string operations:
|
||||
|
@ -81,19 +96,27 @@ additional guidelines:
|
|||
- on a switch block, **always** put `default` last and not in any other position.
|
||||
- I have fear of some C/C++ compilers ignoring the rest of cases upon hitting default.
|
||||
|
||||
## Demo Songs
|
||||
### Do NOT Force-Push after submitting Pull Request
|
||||
|
||||
if you do so, your pull request will be closed.
|
||||
|
||||
### Demo Songs
|
||||
|
||||
just put your demo song in `demos/`! be noted there are some guidelines:
|
||||
|
||||
- avoid Nintendo song covers.
|
||||
- avoid big label song covers.
|
||||
- low effort compositions/covers may not be accepted at all.
|
||||
- the following systems are not acceptable:
|
||||
- YMU759/MA-2: exists only for compatibility.
|
||||
- Pong: it is a joke system.
|
||||
- the song shall be in Furnace file format.
|
||||
|
||||
# Finishing
|
||||
## Finishing
|
||||
|
||||
after you've done your modifications, commit the changes and push.
|
||||
then open your fork on GitHub and send a pull request.
|
||||
|
||||
# I don't know how to use Git but I want to contribute with a demo song
|
||||
## I don't know how to use Git but I want to contribute with a demo song
|
||||
|
||||
you can also contact me directly! [find me here.](https://tildearrow.org/?p=contact)
|
||||
|
|
65
README.md
65
README.md
|
@ -9,13 +9,15 @@ the biggest multi-system chiptune tracker ever made!
|
|||
---
|
||||
## downloads
|
||||
|
||||
check out the [Releases](https://github.com/tildearrow/furnace/releases) page. available for Windows, macOS and Linux (AppImage).
|
||||
check out the [Releases](https://github.com/tildearrow/furnace/releases) page. available for Windows, macOS and Linux.
|
||||
|
||||
for other operating systems, you may [build the source](#developer-info).
|
||||
|
||||
[see here](https://nightly.link/tildearrow/furnace/workflows/build/master) for the latest unstable build.
|
||||
|
||||
## features
|
||||
|
||||
- over 50 sound chips - and counting:
|
||||
- a large selection of sound chips:
|
||||
- Yamaha FM chips:
|
||||
- YM2151 (OPM)
|
||||
- YM2203 (OPN)
|
||||
|
@ -29,6 +31,7 @@ check out the [Releases](https://github.com/tildearrow/furnace/releases) page. a
|
|||
- YM3812 (OPL2)
|
||||
- YMF262 (OPL3) with full 4-op support!
|
||||
- Y8950 (OPL with ADPCM)
|
||||
- ESS ESFM (like OPL3 but with more features)
|
||||
- square wave chips:
|
||||
- AY-3-8910/YM2149(F) used in several computers and game consoles
|
||||
- Commodore VIC used in the VIC-20
|
||||
|
@ -46,8 +49,11 @@ check out the [Releases](https://github.com/tildearrow/furnace/releases) page. a
|
|||
- Ricoh RF5C68 used in Sega CD and FM Towns
|
||||
- OKI MSM6258 and MSM6295
|
||||
- Konami K007232
|
||||
- Konami K053260
|
||||
- Irem GA20
|
||||
- Ensoniq ES5506
|
||||
- Namco C140
|
||||
- Namco C219
|
||||
- wavetable chips:
|
||||
- HuC6280 used in PC Engine
|
||||
- Konami Bubble System WSG
|
||||
|
@ -71,14 +77,22 @@ check out the [Releases](https://github.com/tildearrow/furnace/releases) page. a
|
|||
- QuadTone engine
|
||||
- Pokémon Mini
|
||||
- Commodore PET
|
||||
- TED used in Commodore Plus/4
|
||||
- Casio PV-1000
|
||||
- TIA used in Atari 2600
|
||||
- POKEY used in Atari 8-bit computers
|
||||
- Game Boy
|
||||
- **Game Boy**
|
||||
- including SOFTWARE ENVELOPES (zombie mode)
|
||||
- Virtual Boy
|
||||
- Game Boy Advance
|
||||
- DMA (direct memory access) two channel mode
|
||||
- MinMod software driver by Natt Akuma
|
||||
- Nintendo DS
|
||||
- modern/fantasy:
|
||||
- Commander X16 VERA
|
||||
- tildearrow Sound Unit
|
||||
- PowerNoise
|
||||
- Generic PCM DAC
|
||||
- mix and match sound chips!
|
||||
- over 200 ready to use presets from computers, game consoles and arcade boards...
|
||||
- ...or create your own - up to 32 of them or a total of 128 channels!
|
||||
|
@ -90,12 +104,13 @@ check out the [Releases](https://github.com/tildearrow/furnace/releases) page. a
|
|||
- clean-room design (guesswork and ABX tests only, no decompilation involved)
|
||||
- some bug/quirk implementation for increased playback accuracy through compatibility flags
|
||||
- VGM export
|
||||
- ZSM export for Commander X16
|
||||
- modular layout that you may adapt to your needs
|
||||
- audio file export - entire song, per chip or per channel
|
||||
- quality emulation cores (Nuked, MAME, SameBoy, Mednafen PCE, NSFplay, puNES, reSID, Stella, SAASound, vgsound_emu and ymfm)
|
||||
- wavetable synthesizer
|
||||
- available on wavetable chips
|
||||
- create complex sounds with ease - provide up to two wavetables, select and effect and let go!
|
||||
- create complex sounds with ease - provide up to two wavetables, select an effect and let go!
|
||||
- MIDI input support
|
||||
- additional features:
|
||||
- FM macros!
|
||||
|
@ -120,18 +135,22 @@ check out the [Releases](https://github.com/tildearrow/furnace/releases) page. a
|
|||
# quick references
|
||||
|
||||
- **discussion**: see the [Discussions](https://github.com/tildearrow/furnace/discussions) section, the [official Revolt](https://rvlt.gg/GRPS6tmc) or the [official Discord server](https://discord.gg/EfrwT2wq7z).
|
||||
- **help**: check out the [documentation](doc/README.md). it's incomplete though.
|
||||
- **help**: check out the [documentation](doc/README.md).
|
||||
|
||||
## packages
|
||||
|
||||
[](https://repology.org/project/furnace/versions)
|
||||
[](https://repology.org/project/furnace/versions)
|
||||
|
||||
some people have provided packages for Unix/Unix-like distributions. here's a list.
|
||||
|
||||
- **Flatpak**: yes! Furnace is now available on [Flathub](https://flathub.org/apps/org.tildearrow.furnace) thanks to ColinKinloch.
|
||||
|
||||
- **Arch Linux**: [furnace](https://archlinux.org/packages/extra/x86_64/furnace/) is in the official repositories.
|
||||
- **FreeBSD**: [a package in ports](https://www.freshports.org/audio/furnace/) is available courtesy of ehaupt (warning: 0.5.8!).
|
||||
- **Chimera Linux**: [furnace](https://pkgs.chimera-linux.org/package/current/contrib/x86_64/furnace) is in the contrib repository.
|
||||
- **FreeBSD**: [a package in ports](https://www.freshports.org/audio/furnace/) is available courtesy of ehaupt.
|
||||
- **Nix**: [package](https://search.nixos.org/packages?channel=unstable&show=furnace&from=0&size=50&sort=relevance&type=packages&query=furnace) thanks to OPNA2608.
|
||||
- **openSUSE**: [a package](https://software.opensuse.org/package/furnace) is available, courtesy of fpesari.
|
||||
- **Void Linux**: [furnace](https://github.com/void-linux/void-packages/tree/master/srcpkgs/furnace) is available in the official repository.
|
||||
|
||||
---
|
||||
# developer info
|
||||
|
@ -156,6 +175,7 @@ otherwise, you may also need the following:
|
|||
- libx11
|
||||
- libasound
|
||||
- libGL
|
||||
- any other libraries which may be used by SDL
|
||||
|
||||
some Linux distributions (e.g. Ubuntu or openSUSE) will require you to install the `-dev` versions of these.
|
||||
|
||||
|
@ -242,18 +262,37 @@ Available options:
|
|||
| `USE_SDL2` | `ON` | Build with SDL2 (required to build with GUI) |
|
||||
| `USE_SNDFILE` | `ON` | Build with libsndfile (required in order to work with audio files) |
|
||||
| `USE_BACKWARD` | `ON` | Use backward-cpp to print a backtrace on crash/abort |
|
||||
| `WITH_JACK` | `ON` if system-installed JACK detected, otherwise `OFF` | Whether to build with JACK support. Auto-detects if JACK is available |
|
||||
| `USE_FREETYPE` | `OFF` | Build with FreeType support |
|
||||
| `WITH_JACK` | auto\* | Whether to build with JACK support. Auto-detects if JACK is available |
|
||||
| `WITH_PORTAUDIO` | `ON` | Whether to build with PortAudio. |
|
||||
| `SYSTEM_FFTW` | `OFF` | Use a system-installed version of FFTW instead of the vendored one |
|
||||
| `SYSTEM_FMT` | `OFF` | Use a system-installed version of fmt instead of the vendored one |
|
||||
| `SYSTEM_LIBSNDFILE` | `OFF` | Use a system-installed version of libsndfile instead of the vendored one |
|
||||
| `SYSTEM_RTMIDI` | `OFF` | Use a system-installed version of RtMidi instead of the vendored one |
|
||||
| `SYSTEM_ZLIB` | `OFF` | Use a system-installed version of zlib instead of the vendored one |
|
||||
| `SYSTEM_SDL2` | `OFF` | Use a system-installed version of SDL2 instead of the vendored one |
|
||||
| `SYSTEM_FREETYPE` | `OFF` | Use a system-installed version of FreeType instead of the vendored one |
|
||||
| `SUPPORT_XP` | `OFF` | Build a Windows XP-compatible binary |
|
||||
| `WARNINGS_ARE_ERRORS` | `OFF` (but consider enabling this & reporting any errors that arise from it!) | Whether warnings in furnace's C++ code should be treated as errors |
|
||||
| `WARNINGS_ARE_ERRORS` | `OFF`\*\* | Whether warnings in furnace's C++ code should be treated as errors |
|
||||
| `WITH_DEMOS` | `ON` | Install demo songs on `make install` |
|
||||
| `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) |
|
||||
|
||||
(\*) `ON` if system-installed JACK detected, otherwise `OFF`
|
||||
|
||||
(\*\*) but consider enabling this & reporting any errors that arise from it!
|
||||
|
||||
## CMake Error
|
||||
|
||||
if it says something about a missing subdirectory in `extern`, then either:
|
||||
|
||||
1. you didn't set up submodules, or
|
||||
2. you downloaded the source as a .zip or .tar.gz. don't do this.
|
||||
|
||||
if 1, you may run `git submodule update --init --recursive`. this will initialize submodules.
|
||||
|
||||
if 2, clone this repo.
|
||||
|
||||
## console usage
|
||||
|
||||
|
@ -289,7 +328,7 @@ this is due to Apple's application signing policy. a workaround is to right clic
|
|||
> it says "Furnace" is damaged and can't be opened!
|
||||
|
||||
**as of Monterey, this workaround no longer works (especially on ARM).** yeah, Apple has decided to be strict on the matter.
|
||||
if you happen to be on that version, use this workaround instead (on a Terminal):
|
||||
if you happen to be on that version (or later), use this workaround instead (on a Terminal):
|
||||
|
||||
```
|
||||
xattr -d com.apple.quarantine /path/to/Furnace.app
|
||||
|
@ -301,11 +340,11 @@ you may need to log out and/or reboot after doing this.
|
|||
|
||||
> where's the manual?
|
||||
|
||||
see [doc/](doc/README.md). it's kind of incomplete though.
|
||||
it is in [doc/](doc/README.md).
|
||||
|
||||
> is there a tutorial?
|
||||
|
||||
sadly, the in-program tutorial isn't ready yet. however, [a video tutorial is available on YouTube](https://youtube.com/playlist?list=PLCELB6AsTZUnwv0PC5AAGHjvg47F44YQ1), made by Spinning Square Waves.
|
||||
[a video tutorial (of a previous version) is available on YouTube](https://youtube.com/playlist?list=PLCELB6AsTZUnwv0PC5AAGHjvg47F44YQ1), made by Spinning Square Waves.
|
||||
|
||||
> I've lost my song!
|
||||
|
||||
|
@ -330,7 +369,7 @@ you should only save as .dmf if you're really sure, because the DefleMask format
|
|||
---
|
||||
# footnotes
|
||||
|
||||
copyright (C) 2021-2023 tildearrow and contributors.
|
||||
copyright (C) 2021-2024 tildearrow and contributors.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
|
||||
|
||||
|
|
19
TODO.md
19
TODO.md
|
@ -1,12 +1,9 @@
|
|||
# to-do for 0.6pre6
|
||||
# to-do for 0.6.3
|
||||
|
||||
- tutorial?
|
||||
- ease-of-use improvements... ideas:
|
||||
- preset compat flags
|
||||
- maybe reduced set of presets for the sake of simplicity
|
||||
- a more preferable highlight/drag system
|
||||
- some speed/intuitive workflow improvements that go a long way
|
||||
- make .pdf manual out of doc/
|
||||
- break compatibility if it relieves complexity
|
||||
- multi-key binds
|
||||
- bug fixes
|
||||
- 9xxx for more chips
|
||||
- user presets
|
||||
|
||||
# to-do long term
|
||||
|
||||
- finish auto-clone
|
||||
- new pattern renderer - performance improvements
|
||||
|
|
|
@ -15,8 +15,8 @@ android {
|
|||
}
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 26
|
||||
versionCode 158
|
||||
versionName "0.6pre5"
|
||||
versionCode 197
|
||||
versionName "0.6.2"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.tildearrow.furnace"
|
||||
android:versionCode="158"
|
||||
android:versionName="0.6pre5"
|
||||
android:versionCode="192"
|
||||
android:versionName="0.6.2"
|
||||
android:installLocation="auto">
|
||||
|
||||
<!-- OpenGL ES 2.0 -->
|
||||
|
|
Binary file not shown.
BIN
demos/amiga/a_wave_powerhouse.fur
Normal file
BIN
demos/amiga/a_wave_powerhouse.fur
Normal file
Binary file not shown.
BIN
demos/amiga/trance_dream.fur
Normal file
BIN
demos/amiga/trance_dream.fur
Normal file
Binary file not shown.
BIN
demos/arcade/ComicPartytrack20.fur
Normal file
BIN
demos/arcade/ComicPartytrack20.fur
Normal file
Binary file not shown.
Binary file not shown.
BIN
demos/arcade/Grape_Jelly_Alpha5232.fur
Normal file
BIN
demos/arcade/Grape_Jelly_Alpha5232.fur
Normal file
Binary file not shown.
BIN
demos/arcade/Hexionology.fur
Normal file
BIN
demos/arcade/Hexionology.fur
Normal file
Binary file not shown.
Binary file not shown.
BIN
demos/arcade/Physics_Exam_TaitoArcade.fur
Normal file
BIN
demos/arcade/Physics_Exam_TaitoArcade.fur
Normal file
Binary file not shown.
BIN
demos/arcade/Point_of_No_Return_SegaPCM.fur
Normal file
BIN
demos/arcade/Point_of_No_Return_SegaPCM.fur
Normal file
Binary file not shown.
BIN
demos/arcade/WSG_Loop_Tune_NamcoWSG.fur
Normal file
BIN
demos/arcade/WSG_Loop_Tune_NamcoWSG.fur
Normal file
Binary file not shown.
BIN
demos/arcade/eek_qsound.fur
Normal file
BIN
demos/arcade/eek_qsound.fur
Normal file
Binary file not shown.
Binary file not shown.
BIN
demos/arcade/last_day_of_summer_NamcoC15.fur
Normal file
BIN
demos/arcade/last_day_of_summer_NamcoC15.fur
Normal file
Binary file not shown.
BIN
demos/ay8910/Drifting in Colour.fur
Normal file
BIN
demos/ay8910/Drifting in Colour.fur
Normal file
Binary file not shown.
BIN
demos/ay8910/cardboardmywater.fur
Normal file
BIN
demos/ay8910/cardboardmywater.fur
Normal file
Binary file not shown.
BIN
demos/ay8910/vibe_zone.fur
Normal file
BIN
demos/ay8910/vibe_zone.fur
Normal file
Binary file not shown.
BIN
demos/ay8930/AY8930Shuffle.fur
Normal file
BIN
demos/ay8930/AY8930Shuffle.fur
Normal file
Binary file not shown.
BIN
demos/ay8930/One_Minute_Waltz.fur
Normal file
BIN
demos/ay8930/One_Minute_Waltz.fur
Normal file
Binary file not shown.
Binary file not shown.
BIN
demos/ay8930/Playing_On_The_Stairs.fur
Normal file
BIN
demos/ay8930/Playing_On_The_Stairs.fur
Normal file
Binary file not shown.
BIN
demos/ay8930/powerful-sample-generator.fur
Normal file
BIN
demos/ay8930/powerful-sample-generator.fur
Normal file
Binary file not shown.
BIN
demos/c64/deadlock.fur
Normal file
BIN
demos/c64/deadlock.fur
Normal file
Binary file not shown.
BIN
demos/esfm/AAAA.fur
Normal file
BIN
demos/esfm/AAAA.fur
Normal file
Binary file not shown.
BIN
demos/esfm/ALCATRAZ_ALWAYS.fur
Normal file
BIN
demos/esfm/ALCATRAZ_ALWAYS.fur
Normal file
Binary file not shown.
BIN
demos/esfm/CampingJourney.fur
Normal file
BIN
demos/esfm/CampingJourney.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Deadline.fur
Normal file
BIN
demos/esfm/Deadline.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Devil_Detective.fur
Normal file
BIN
demos/esfm/Devil_Detective.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Drinkin_Coffee_Way_Too_Much.fur
Normal file
BIN
demos/esfm/Drinkin_Coffee_Way_Too_Much.fur
Normal file
Binary file not shown.
BIN
demos/esfm/EdgeRunning_2078.fur
Normal file
BIN
demos/esfm/EdgeRunning_2078.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Fighting_the_Dimensions_Big_Bad_Because_its_Fun.fur
Normal file
BIN
demos/esfm/Fighting_the_Dimensions_Big_Bad_Because_its_Fun.fur
Normal file
Binary file not shown.
BIN
demos/esfm/I_Cant_Escape_Your_Memory.fur
Normal file
BIN
demos/esfm/I_Cant_Escape_Your_Memory.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Just_me_and_my_Brain.fur
Normal file
BIN
demos/esfm/Just_me_and_my_Brain.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Ken_Stage.fur
Normal file
BIN
demos/esfm/Ken_Stage.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Magician_Lake_Cover.fur
Normal file
BIN
demos/esfm/Magician_Lake_Cover.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Napalm-Loader.fur
Normal file
BIN
demos/esfm/Napalm-Loader.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Perilous059.fur
Normal file
BIN
demos/esfm/Perilous059.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Poets_I.fur
Normal file
BIN
demos/esfm/Poets_I.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Redial.fur
Normal file
BIN
demos/esfm/Redial.fur
Normal file
Binary file not shown.
BIN
demos/esfm/SearchPrincess.fur
Normal file
BIN
demos/esfm/SearchPrincess.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Second_Start.fur
Normal file
BIN
demos/esfm/Second_Start.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Strange_Sunset.fur
Normal file
BIN
demos/esfm/Strange_Sunset.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Tangent_to_a_Segue.fur
Normal file
BIN
demos/esfm/Tangent_to_a_Segue.fur
Normal file
Binary file not shown.
BIN
demos/esfm/TheOneWayFuture.fur
Normal file
BIN
demos/esfm/TheOneWayFuture.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Unconscious_Unravelling.fur
Normal file
BIN
demos/esfm/Unconscious_Unravelling.fur
Normal file
Binary file not shown.
BIN
demos/esfm/Unknown_Location.fur
Normal file
BIN
demos/esfm/Unknown_Location.fur
Normal file
Binary file not shown.
BIN
demos/esfm/WalkInThePark.fur
Normal file
BIN
demos/esfm/WalkInThePark.fur
Normal file
Binary file not shown.
BIN
demos/esfm/act_of_fighter.fur
Normal file
BIN
demos/esfm/act_of_fighter.fur
Normal file
Binary file not shown.
BIN
demos/esfm/cielos_esfumados.fur
Normal file
BIN
demos/esfm/cielos_esfumados.fur
Normal file
Binary file not shown.
BIN
demos/esfm/esfm_ins.fur
Normal file
BIN
demos/esfm/esfm_ins.fur
Normal file
Binary file not shown.
BIN
demos/esfm/experiment.fur
Normal file
BIN
demos/esfm/experiment.fur
Normal file
Binary file not shown.
BIN
demos/esfm/flashback.fur
Normal file
BIN
demos/esfm/flashback.fur
Normal file
Binary file not shown.
BIN
demos/esfm/frosty_dusk.fur
Normal file
BIN
demos/esfm/frosty_dusk.fur
Normal file
Binary file not shown.
BIN
demos/esfm/haunted_castle.fur
Normal file
BIN
demos/esfm/haunted_castle.fur
Normal file
Binary file not shown.
BIN
demos/esfm/her_wishes.fur
Normal file
BIN
demos/esfm/her_wishes.fur
Normal file
Binary file not shown.
BIN
demos/esfm/ledstorm.fur
Normal file
BIN
demos/esfm/ledstorm.fur
Normal file
Binary file not shown.
BIN
demos/esfm/loneguitarist.fur
Normal file
BIN
demos/esfm/loneguitarist.fur
Normal file
Binary file not shown.
BIN
demos/esfm/moon_closedspace.fur
Normal file
BIN
demos/esfm/moon_closedspace.fur
Normal file
Binary file not shown.
BIN
demos/esfm/pcbend.fur
Normal file
BIN
demos/esfm/pcbend.fur
Normal file
Binary file not shown.
BIN
demos/esfm/sticker1.fur
Normal file
BIN
demos/esfm/sticker1.fur
Normal file
Binary file not shown.
BIN
demos/esfm/synthy.fur
Normal file
BIN
demos/esfm/synthy.fur
Normal file
Binary file not shown.
BIN
demos/esfm/wack.fur
Normal file
BIN
demos/esfm/wack.fur
Normal file
Binary file not shown.
BIN
demos/esfm/x_evil_soul.fur
Normal file
BIN
demos/esfm/x_evil_soul.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/On_Hold.fur
Normal file
BIN
demos/gameboy/On_Hold.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/Pleasure_of_Tension.fur
Normal file
BIN
demos/gameboy/Pleasure_of_Tension.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/cheap.fur
Normal file
BIN
demos/gameboy/cheap.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/dancing_to_the_death.fur
Normal file
BIN
demos/gameboy/dancing_to_the_death.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/dtect.fur
Normal file
BIN
demos/gameboy/dtect.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/freedom.fur
Normal file
BIN
demos/gameboy/freedom.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/ice_3_advert.fur
Normal file
BIN
demos/gameboy/ice_3_advert.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/lagtrain.fur
Normal file
BIN
demos/gameboy/lagtrain.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/minos.fur
Normal file
BIN
demos/gameboy/minos.fur
Normal file
Binary file not shown.
BIN
demos/gameboy/spreadtro.fur
Normal file
BIN
demos/gameboy/spreadtro.fur
Normal file
Binary file not shown.
BIN
demos/genesis/All Good Times.fur
Normal file
BIN
demos/genesis/All Good Times.fur
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
demos/genesis/Kobito_of_the_Shining_Needle.fur
Normal file
BIN
demos/genesis/Kobito_of_the_Shining_Needle.fur
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
demos/genesis/SparkmanMD.fur
Normal file
BIN
demos/genesis/SparkmanMD.fur
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
demos/genesis/darkstar.fur
Normal file
BIN
demos/genesis/darkstar.fur
Normal file
Binary file not shown.
BIN
demos/genesis/inside_the_computer.fur
Normal file
BIN
demos/genesis/inside_the_computer.fur
Normal file
Binary file not shown.
BIN
demos/genesis/mm5_boss.fur
Normal file
BIN
demos/genesis/mm5_boss.fur
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue