diff --git a/.gitmodules b/.gitmodules index ede0e0d1..b3308c26 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,3 +12,6 @@ [submodule "extern/imgui"] path = extern/imgui url = https://github.com/ocornut/imgui.git +[submodule "extern/fmt"] + path = extern/fmt + url = https://github.com/fmtlib/fmt.git diff --git a/CMakeLists.txt b/CMakeLists.txt index c2a4b0ac..ed36325a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,8 @@ else() set(BUILD_GUI ON) endif() +add_subdirectory(extern/fmt) + set(BUILD_TESTING OFF) set(BUILD_PROGRAMS OFF) set(BUILD_EXAMPLES OFF) @@ -20,13 +22,17 @@ if (WIN32) add_subdirectory(extern/zlib) set(HAVE_SDL2 SDL2-static) set(HAVE_Z zlibstatic) - include_directories(extern/imgui extern/imgui/backends extern/zlib ${CMAKE_CURRENT_BINARY_DIR}/extern/zlib) + include_directories(extern/imgui extern/imgui/backends extern/zlib ${CMAKE_CURRENT_BINARY_DIR}/extern/zlib extern/fmt/include) else() if (BUILD_GUI) set(SDL_SHARED ON) add_subdirectory(extern/SDL) - include_directories(extern/SDL/include extern/imgui extern/imgui/backends) - set(HAVE_SDL2 SDL2) + include_directories(extern/SDL/include extern/imgui extern/imgui/backends extern/fmt/include) + if (APPLE) + set(HAVE_SDL2 SDL2-static) + else() + set(HAVE_SDL2 SDL2) + endif() else() find_library(HAVE_SDL2 SDL2) endif() @@ -119,7 +125,7 @@ else() add_executable(furnace ${ENGINE_SOURCES} ${AUDIO_SOURCES} src/main.cpp) endif() -target_link_libraries(furnace ${HAVE_SDL2} ${HAVE_Z} sndfile) +target_link_libraries(furnace ${HAVE_SDL2} ${HAVE_Z} sndfile fmt) if (HAVE_JACK) target_link_libraries(furnace ${HAVE_JACK}) diff --git a/extern/fmt b/extern/fmt new file mode 160000 index 00000000..3a951a66 --- /dev/null +++ b/extern/fmt @@ -0,0 +1 @@ +Subproject commit 3a951a66cb0fb53ff5a9d5ce9c77e05ef9d382ce diff --git a/src/audio/sdl.h b/src/audio/sdl.h index 7ab1e3cb..b94f7929 100644 --- a/src/audio/sdl.h +++ b/src/audio/sdl.h @@ -1,5 +1,5 @@ #include "taAudio.h" -#ifdef _WIN32 +#if defined(_WIN32) || defined(HAVE_GUI) #include #else #include diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 799676ff..300a2654 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -99,6 +99,7 @@ void DivPlatformGenesis::tick() { int freqt=toFreq(chan[i].freq); writes.emplace(chanOffs[i]+0xa4,freqt>>8); writes.emplace(chanOffs[i]+0xa0,freqt&0xff); + chan[i].freqChanged=false; } if (chan[i].keyOn) { writes.emplace(0x28,0xf0|konOffs[i]); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 41252c86..acc47b18 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2,6 +2,7 @@ #include "fonts.h" #include "../ta-log.h" #include "imgui.h" +#include void FurnaceGUI::bindEngine(DivEngine* eng) { e=eng; @@ -41,6 +42,16 @@ bool FurnaceGUI::loop() { } ImGui::End(); + if (ImGui::Begin("Instruments")) { + for (int i=0; isong.ins.size(); i++) { + DivInstrument* ins=e->song.ins[i]; + if (ImGui::Selectable(fmt::sprintf("%d: %s##_INS%d\n",i,ins->name,i).c_str(),curIns==i)) { + curIns=i; + } + } + } + ImGui::End(); + SDL_RenderClear(sdlRend); ImGui::Render(); ImGui_ImplSDLRenderer_RenderDrawData(ImGui::GetDrawData()); @@ -88,5 +99,7 @@ FurnaceGUI::FurnaceGUI(): quit(false), scrW(1280), scrH(800), - dpiScale(2) { -} \ No newline at end of file + dpiScale(1), + curIns(0), + curOctave(3) { +} diff --git a/src/gui/gui.h b/src/gui/gui.h index ff0ff5ad..00efda1d 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -19,9 +19,11 @@ class FurnaceGUI { ImFont* mainFont; ImFont* patFont; + int curIns, curOctave; + public: void bindEngine(DivEngine* eng); bool loop(); bool init(); FurnaceGUI(); -}; \ No newline at end of file +};