diff --git a/.gitmodules b/.gitmodules index 55acbb5..61832bc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "Zelda64RecompSyms"] path = Zelda64RecompSyms url = https://github.com/Zelda64Recomp/Zelda64RecompSyms +[submodule "lib/slot_map"] + path = lib/slot_map + url = https://github.com/SergeyMakeev/slot_map diff --git a/CMakeLists.txt b/CMakeLists.txt index f7d70e2..5525958 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,7 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # set(CMAKE_CXX_VISIBILITY_PRESET hidden) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-everything /W4") @@ -38,6 +39,8 @@ endif() set(RT64_STATIC TRUE) set(RT64_SDL_WINDOW_VULKAN TRUE) +add_compile_definitions(HLSL_CPU) + add_subdirectory(${CMAKE_SOURCE_DIR}/lib/rt64 ${CMAKE_BINARY_DIR}/rt64) # set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}") @@ -45,10 +48,10 @@ set(BUILD_SHARED_LIBS OFF) SET(LUNASVG_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) add_subdirectory(${CMAKE_SOURCE_DIR}/lib/lunasvg) # set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}") -SET(ENABLE_SVG_PLUGIN ON CACHE BOOL "" FORCE) +SET(RMLUI_SVG_PLUGIN ON CACHE BOOL "" FORCE) SET(RMLUI_TESTS_ENABLED OFF CACHE BOOL "" FORCE) add_subdirectory(${CMAKE_SOURCE_DIR}/lib/RmlUi) -target_compile_definitions(RmlCore PRIVATE LUNASVG_BUILD_STATIC) +target_compile_definitions(rmlui_core PRIVATE LUNASVG_BUILD_STATIC) add_subdirectory(${CMAKE_SOURCE_DIR}/lib/N64ModernRuntime) @@ -150,13 +153,41 @@ set (SOURCES ${CMAKE_SOURCE_DIR}/src/game/debug.cpp ${CMAKE_SOURCE_DIR}/src/game/quicksaving.cpp ${CMAKE_SOURCE_DIR}/src/game/recomp_api.cpp + ${CMAKE_SOURCE_DIR}/src/game/recomp_actor_api.cpp + ${CMAKE_SOURCE_DIR}/src/game/recomp_data_api.cpp ${CMAKE_SOURCE_DIR}/src/game/rom_decompression.cpp ${CMAKE_SOURCE_DIR}/src/ui/ui_renderer.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_state.cpp ${CMAKE_SOURCE_DIR}/src/ui/ui_launcher.cpp ${CMAKE_SOURCE_DIR}/src/ui/ui_config.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_prompt.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_config_sub_menu.cpp ${CMAKE_SOURCE_DIR}/src/ui/ui_color_hack.cpp ${CMAKE_SOURCE_DIR}/src/ui/ui_rml_hacks.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_elements.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_mod_details_panel.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_mod_installer.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_mod_menu.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_api.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_api_events.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_api_images.cpp + ${CMAKE_SOURCE_DIR}/src/ui/ui_utils.cpp + ${CMAKE_SOURCE_DIR}/src/ui/util/hsv.cpp + ${CMAKE_SOURCE_DIR}/src/ui/core/ui_context.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_button.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_clickable.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_container.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_element.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_image.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_label.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_radio.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_scroll_container.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_slider.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_span.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_style.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_text_input.cpp + ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_toggle.cpp ${CMAKE_SOURCE_DIR}/rsp/aspMain.cpp ${CMAKE_SOURCE_DIR}/rsp/njpgdspMain.cpp @@ -183,6 +214,7 @@ target_include_directories(Zelda64Recompiled PRIVATE ${CMAKE_SOURCE_DIR}/lib/rt64/src/render ${CMAKE_SOURCE_DIR}/lib/freetype-windows-binaries/include ${CMAKE_SOURCE_DIR}/lib/rt64/src/contrib/nativefiledialog-extended/src/include + ${CMAKE_SOURCE_DIR}/lib/slot_map/slot_map ${CMAKE_BINARY_DIR}/shaders ${CMAKE_CURRENT_BINARY_DIR} ) @@ -315,8 +347,8 @@ target_link_libraries(Zelda64Recompiled PRIVATE librecomp ultramodern rt64 - RmlCore - RmlDebugger + RmlUi::Core + RmlUi::Debugger nfd lunasvg ) @@ -356,6 +388,27 @@ endif() build_vertex_shader(Zelda64Recompiled "shaders/InterfaceVS.hlsl" "shaders/InterfaceVS.hlsl") build_pixel_shader(Zelda64Recompiled "shaders/InterfacePS.hlsl" "shaders/InterfacePS.hlsl") +# Embed all .nrm files in the "mods" directory +file(GLOB NRM_FILES "${CMAKE_SOURCE_DIR}/mods/*.nrm") + +set(GENERATED_NRM_SOURCES "") + +foreach(NRM_FILE ${NRM_FILES}) + get_filename_component(NRM_NAME ${NRM_FILE} NAME_WE) + set(OUT_C "${CMAKE_CURRENT_BINARY_DIR}/mods/${NRM_NAME}.c") + set(OUT_H "${CMAKE_CURRENT_BINARY_DIR}/mods/${NRM_NAME}.h") + + add_custom_command( + OUTPUT ${OUT_C} ${OUT_H} + COMMAND file_to_c ${NRM_FILE} ${NRM_NAME} ${OUT_C} ${OUT_H} + DEPENDS ${NRM_FILE} + ) + + list(APPEND GENERATED_NRM_SOURCES ${OUT_C}) +endforeach() + +target_sources(Zelda64Recompiled PRIVATE ${GENERATED_NRM_SOURCES}) + target_sources(Zelda64Recompiled PRIVATE ${SOURCES}) set_property(TARGET Zelda64Recompiled PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") diff --git a/assets/components/prompt.rml b/assets/components/prompt.rml deleted file mode 100644 index 3de53ea..0000000 --- a/assets/components/prompt.rml +++ /dev/null @@ -1,30 +0,0 @@ - diff --git a/assets/config_menu.rml b/assets/config_menu.rml index 6de1fb4..3865510 100644 --- a/assets/config_menu.rml +++ b/assets/config_menu.rml @@ -20,19 +20,19 @@ } .col { flex: 1; - text-align: center; + text-align: center; } + - -
+
@@ -64,6 +64,13 @@